SubCat subtitle line formatter → .srt

✏️ Script Input 0 chars
👀 Preview 0 lines

Paste script on the left to preview ~

🔢 Lines: 0
⚠️ Over limit: 0
📏 Avg length: 0
⏱ Est. duration: 00:00:00
Hi~!

SubCat

Subtitle Line Formatter — Manual
v1.3
1 What is SubCat?
Hey! I'm SubCat 🐱 I turn your Mandarin and Cantonese scripts into properly split subtitle lines. Just paste a paragraph and I'll do the rest — no install, no server, fully offline. Everything stays in your browser.
2 Getting Started
Open me in Chrome, Safari, Firefox, or Edge. You'll see two panels — paste your script on the left, and I'll show formatted subtitle lines on the right in real time. Each line gets a colour badge: green = good, amber = close, red = over limit.
3 Settings
Here's what each setting does!
File Name — The name used when you export. Defaults to "subtitles".

Max Chars — Maximum width per line. Chinese characters = 1 unit, English = 0.5 units. Default: 18.

Gap (sec) — Duration of each subtitle in the .SRT export. Default: 1 second. You'll adjust actual timing in your NLE.

Start Timecode — Where the first subtitle begins. Format: HH:MM:SS,mmm
4 Punctuation Mode
I handle punctuation in three ways. Numbers like 1.8 and 2,000 are always safe — I won't break those!
Strip all Removes Chinese + English punctuation. The default.

Keep Keeps everything as-is.

Strip CJK only Removes Chinese punctuation, keeps English.
5 Remove Dialogue Quotes
When I spot 「...」 with attribution keywords like 說、表示、指出、認為 before it, I strip the whole attributed quote — from the nearest comma or sentence break onwards. Great for news scripts!
Input
小貓最喜歡曬太陽,牠每天都會在窗台上睡午覺,主人表示:「牠就是全家最懶的那個,但大家都很愛牠」
Result
小貓最喜歡曬太陽,牠每天都會在窗台上睡午覺
Standalone 「...」 without attribution? I keep those — they're treated as inline emphasis.
6 How I Split Lines
I'm pretty smart about this! Here's my three-step process:
① ENPS Stripping
I remove newsroom markup — {curly braces}, <angle brackets>, [square brackets], ((double parens)). Asterisks like *TAKE VO* are stripped but the text inside is kept.

② Punctuation Splitting
I split at natural pauses — commas, periods, colons, etc. The enumeration comma 、is never a break point, and it always stays at the end of a line, never the beginning.

③ Word-Aware Width Splitting
Lines still too long get split using your browser's built-in Chinese word segmentation. I understand Mandarin and Cantonese word boundaries — I won't break compounds like 圖書館 or 幼稚園 in half.
I also protect English blocks, bracketed content (()「」《》), and when a line is only slightly over, I balance it into two even halves instead of cutting hard. ✨
7 Merging Lines
Two short lines that should be one? Hover over a line to see the + button. Click it on one line, then on its neighbour to merge them. They'll get a green dashed outline.

Merges are global rules — the same pair merges everywhere. Click to unmerge a specific instance.
8 Preview & Navigation
Click any line in the preview and I'll jump to that exact spot in your script on the left. Super handy for long scripts!

The stats bar below shows: total lines, over-limit count, average length, and estimated duration.
9 Exporting
Export .SRT Standard subtitle file with sequential timecodes. UTF-8 with BOM for NLE compatibility.

Export .TXT Plain text, one line per line.

Copy Lines Copies everything to your clipboard.
The .SRT timecodes are evenly-spaced placeholders — you'll adjust them to your video timing in your NLE. I'm a line formatter, not a timing tool! 😸
10 Undo & Redo
I remember up to 50 states — text edits, merges, everything. Use the buttons or shortcuts:
CtrlZ Undo
CtrlShiftZ Redo
CtrlY Redo (alt)
On Mac, use Cmd instead of Ctrl.
💡 Tips
A few things before you go~
Separate paragraphs with blank lines — each one is processed independently.

For the best word-aware splitting, use a modern browser — Chrome 87+, Safari 15.4+, or Firefox 125+.

Everything runs offline. Your script never leaves your device.

Oh, and there's a fish somewhere. I'm hungry. You know what to do. 🐟