42 Characters, 20 per Second: Why Auto-Captions Still Fail QC
NLE auto-captions get the words right and the spec wrong. Netflix's real limits, checked at source, and a four-pass QC routine.
Cover illustration generated with AI for Fix It In Post.
Auto-captions in Premiere, Resolve and Final Cut now get most of the words right. That was never what made subtitle files fail QC. Files are rejected for line length, reading speed, timing and line breaks, and an NLE's default caption settings handle those badly.
We think editors should stop judging auto-captions by word accuracy and start judging them against a timed-text spec. Netflix's style guide is the most widely used public reference, even if you never deliver to Netflix. Below are the actual numbers, checked against Netflix's own partner pages, and a four-pass QC routine to turn an NLE's caption track into something that passes.
First, correct the numbers people quote
Blog posts and subtitling-tool sites often say Netflix allows 17 characters per second for adults and 13 for children. Netflix's English (USA) Timed Text Style Guide says otherwise: up to 20 characters per second for adult programmes and 17 for children's. Lower figures appear in other language guides and in older versions, so check the guide for the language you are delivering. Do not rely on a summary, including this one.
The other limits are more stable. From the English guide and Netflix's general requirements and timing guidelines:
| Rule | Netflix English spec | Where NLE auto-captions typically go wrong |
|---|---|---|
| Characters per line | 42 max | Defaults are often tuned for social and may not be set to 42 |
| Lines per event | 2 max, single line preferred | Two lines filled to the limit when one would do |
| Reading speed | 20 CPS adult, 17 CPS children's | Fast talkers produce 25+ CPS events with no warning |
| Minimum duration | 5/6 second (20 frames at 24fps) | Single-word events of a few frames |
| Maximum duration | 7 seconds | Long events held through pauses |
| Gap between events | 2 frames minimum; at 24fps, gaps of 3–11 frames are closed to 2 | Gaps of whatever the speech recognition happened to leave |
| Shot changes | Snap in-times to the cut within half a second; out-times 2 frames before a cut | Ignored entirely |
| Line breaks | After punctuation, before conjunctions and prepositions; never split article from noun or first name from surname | Breaks wherever the character count runs out |
The right-hand column is our assessment from general experience with NLE caption tools, not a formal test. We have not yet run the same clip through all three NLEs and counted violations; that comparison is coming.
How good is the transcription now?
Good enough to change the job, not good enough to skip it. One creator's test of Resolve 21's speech-to-subtitle feature found roughly 90–95% accuracy on two lav-miked speakers with standard North American English. A speaker with an accent lost about a word per sentence, and jargon was hit or miss. Captioning a 12-minute video took about 23 minutes (three to transcribe, twenty to clean up) against 45–60 minutes by hand. That is a single blog post, not a controlled test, so treat it as indicative.
Think about what 95% means. A 12-minute interview at a typical 150 words a minute is 1,800 words, so 5% is about 90 wrong words. Each one is a correction, and it can push a line over 42 characters or an event over the CPS limit after the edit. Fixing words and fixing timing are linked, which is why the order of the passes matters.
The four-pass QC routine
Run these in order. Doing timing before text means doing timing twice.
- Set the generator up before you generate. In your NLE's caption settings, set maximum characters per line to 42 (or your spec), two lines maximum, a minimum duration of about 0.83 seconds and a gap of 2 frames where the tool lets you. Some tools expose only some of these settings. Set what you can, because each one prevents a class of errors.
- Text pass. Fix words, names, jargon and punctuation against the audio. Do not touch timing. Keep a glossary of names and terms for the project and run find-and-replace first.
- Segmentation pass. Re-break lines by sense, not by character count: break after punctuation and before conjunctions or prepositions, keep names together, and prefer a bottom-heavy shape when you need two lines. Split or merge events so that each one is a readable thought.
- Timing and validation pass. Export SRT and run it through a checker such as Subtitle Edit with a profile set to your spec. It flags CPS, line length, duration and gap violations in a list. Fix each flagged event, snap events to shot changes, then re-import.
On a 12-minute piece, budget about the same time for passes 3 and 4 as for pass 2. If the client wants translated versions, finish all four passes on the source language first. Premiere's Caption Translation covers 27 languages, but it translates your segmentation and timing errors too, and translated text is often longer, so reading speed gets worse.
When to stop at "good enough"
Not every job needs broadcast-grade subtitles. A rough decision rule:
- Social cut-downs with burnt-in captions: do passes 1 and 2, plus a quick check that nothing exceeds the safe area. Styled captions follow their own rules.
- Corporate and web delivery as sidecar files: all four passes, using the client's spec if they have one and Netflix English otherwise.
- Broadcast, streaming or festival: all four passes against the platform's own guide for that language, plus a final watch-through at full speed. A human watching in real time catches what a validator misses, such as a caption that spoils a reveal before the cut.
The takeaway
Auto-captions have solved transcription, not subtitling. Set the spec limits before you generate, fix text before timing, and validate the exported file with a proper checker rather than trusting the NLE's preview. And check the reading speed in the primary guide for your language: the "17 CPS" figure everyone quotes is Netflix's children's limit for English, not the adult one.