Subtitle timing, CPS and line length: a practical style guide
Most rejected subtitle files fail on three numbers: characters per line, characters per second, and cue duration. This guide shows how to calculate each one, what the common limits are, and how to fix violations cue by cue.
Subtitles fail delivery checks for mechanical reasons long before anyone judges the translation. Three numbers decide most of it: how long a line is, how fast a viewer must read, and how long each cue stays on screen. This guide defines each measure precisely, gives the limits used by widely referenced style guides, works through real examples, and shows a fix order that clears most findings in one editing pass. Every cue mentioned can be checked automatically with the subtitle checker before you deliver.
The three numbers
1. Characters per line (CPL)
CPL is simply the number of characters in one subtitle line, spaces included. The Netflix English (USA) Timed Text Style Guide — the most commonly borrowed reference — sets a maximum of 42 characters per line and at most two lines per subtitle. Lines longer than that start to crowd the picture, shrink the effective font on some players, and slow reading because the eye must travel further per line.
2. Characters per second (CPS)
CPS measures reading speed: the number of characters (some tools, including ours, count non-whitespace characters) divided by the cue's duration in seconds. Netflix's guide allows up to 20 CPS for adult programmes and 17 CPS for children's programmes. Other broadcasters are stricter; 17 CPS is a common all-purpose ceiling, and some public-service specifications ask for 15 or less. A worked example: the line "We need to leave before the bridge closes." has 36 non-whitespace characters. Shown for 1.5 seconds, that is 24 CPS — too fast for almost any specification. Shown for 2.2 seconds it is about 16 CPS — comfortable nearly everywhere.
3. Cue duration
Netflix's general timed-text requirements set a minimum duration of five-sixths of a second (20 frames at 24 fps) and a maximum of 7 seconds per event. Very short cues flash past unreadably; very long cues make viewers re-read the same text and wonder if the file has stalled. A practical working band for most cues is 1 to 6 seconds, with the CPS check deciding where inside that band a given cue belongs.
A fix order that works
When a checker reports hundreds of findings, fix them in this order — earlier fixes often make later ones disappear:
- Timing errors first. Invalid timestamps, end times before start times, and overlapping cues are file defects, not style choices. They can make players drop cues entirely. Fix or re-export these before touching wording.
- Duration next. Extend cues that are under the minimum into the following gap (leave about two frames — roughly 80 ms — between cues so they do not flicker together). Shorten cues that run past 7 seconds by splitting them at a sentence boundary.
- Then CPS. For each too-fast cue you have three levers, in order of preference: extend the cue if there is a gap before the next one; merge it with a neighbouring cue of the same speaker if the combined cue stays within limits; condense the text — subtitles are a condensed rendering of speech, not a transcript, and dropping filler ("well", "you know", repeated words) is normal editorial practice.
- Finally, line breaks. Break long lines at natural joints: after punctuation, before conjunctions and prepositions, and never between an article and its noun ("the / bridge") or a first and last name. Balance the two lines so neither is dramatically longer; a pyramid shape (slightly longer line on top for two-line cues, per several broadcaster guides) reads fastest.
Worked example: rescuing one bad cue
Original cue, 0.9 seconds on screen: "Anyway, as I was saying, the committee has decided to postpone the hearing until next Thursday morning." That is about 96 non-whitespace characters in 0.9 s — over 100 CPS, an unreadable flash. Step one, condense: "The committee has postponed the hearing until next Thursday morning." — 61 characters. Step two, extend into the 2.4-second pause that follows: at 3.4 seconds total, the cue runs at about 18 CPS. Step three, break the line near its middle: line 1 "The committee has postponed the hearing" (39), line 2 "until next Thursday morning." (28). Same information, same speaker, and the cue now passes the Netflix adult limits on all three measures.
Format details that trip people up
- SRT uses a comma, WebVTT uses a dot before milliseconds:
00:01:02,500in SRT,00:01:02.500in VTT. Converters and editors occasionally write the wrong separator, producing cues players silently skip. If you need to change formats, the subtitle converter handles SRT, VTT and ASS and can shift timings while it converts. - Encoding must be UTF-8. Files saved in legacy encodings show accented characters as mojibake and can break parsers. Export as UTF-8 from your editor.
- Overlaps are not always errors. Two speakers in quick exchange are sometimes intentionally overlapped in the file. Automated checkers (including ours) report overlaps so a human can judge them in context — keep the ones that are deliberate, fix the ones that are typos.
- Reading speed for children and language learners is lower. If your audience is young viewers or second-language audiences, target 15–17 CPS even when the platform would allow 20.
Common mistakes
- Transcribing every word. Verbatim transcripts of fast speech mathematically cannot fit CPS limits. Condensation is the craft of subtitling, not a shortcut.
- Splitting a sentence across two cues mid-phrase. Viewers hold an unfinished phrase in memory while waiting for the next cue; split at clause boundaries instead.
- Fixing CPS by shrinking durations elsewhere. Stealing time from the next cue just moves the violation. Extend into genuine pauses, or edit text.
- Trusting a "no errors" export message. Editors validate syntax, not readability. Run a dedicated check for CPL, CPS and duration before delivery.
Frequently asked questions
Which limits should I actually use?
The ones in your delivery specification, if you have one — platforms and broadcasters differ. Without a spec, 42 CPL, two lines, 20 CPS (17 for children) and durations between five-sixths of a second and 7 seconds are the most widely accepted defaults, which is why our checker ships with 42 and 20 pre-filled.
How is CPS calculated exactly?
Characters divided by duration in seconds. Tools differ on whether spaces count; ours counts non-whitespace characters, which is the more forgiving convention. If a cue is borderline, assume the stricter count may be applied by your client.
Can one cue have three lines if it is short?
Most style guides cap subtitles at two lines regardless of length. Three-line cues block too much picture and read slowly. Split the cue instead.
What is a good gap between cues?
About two frames (roughly 80 ms at 24–25 fps). Zero gap can make consecutive cues flicker or merge visually in some players.
Does the checker change my file?
No. It reports cue numbers and findings — including a downloadable report — and you make the edits in your subtitle editor, so wording and timing decisions stay yours.