Caption reading speed: the exact CPS and line limits I configure first
← 博客
🎬 字幕与隐藏字幕7 min read

Caption reading speed: the exact CPS and line limits I configure first

💡 For adult subtitles, the Netflix Timed Text Style Guide caps reading speed at 17 characters per second (CPS) and 13 CPS for children's content. Line width tops out at 42 characters with 2 lines per event. Minimum event duration is 5/6 second (about 833 ms); maximum is 7 seconds. Configure these four limits in Subtitle Edit before you time your first cue to catch overruns as you go.

Key takeaways

  • Adult programs: 17 CPS max; children's programs: 13 CPS max - per the Netflix Timed Text Style Guide, verified Sep 2026
  • Maximum 42 characters per line, 2 lines per event: hard limits for streaming deliverables
  • Minimum event duration: 5/6 second (approx 833 ms); maximum: 7 seconds per event
  • CPS formula: count all characters in the event text (including spaces), then divide by event duration in seconds
  • In Subtitle Edit, set these ceilings in Options > Settings > General before timing your first cue

What is CPS, and why does exceeding it hurt viewers?

Caption reading speed - measured in characters per second (CPS) - is the total number of characters in a caption event (including spaces) divided by its display duration in seconds. The limit exists to match on-screen text to the maximum comfortable reading rate for the audience. When CPS is too high, viewers reach the end of their reading window before the cue disappears and miss part of the line. For deaf and hard-of-hearing audiences who rely on captions as their primary access to dialogue, that is an accessibility failure, not a style issue.

The CPS ceiling varies by audience type. Children read slower and have less background context for inferring missed words, so their limit is lower. Industry guides set two tiers: a general adult ceiling and a more conservative children's ceiling.

The exact limits per the Netflix Timed Text Style Guide

The Netflix Timed Text Style Guide is the most widely adopted subtitle specification in the streaming industry. I verified these figures directly against the current Netflix TTSG pages during this run. Here are the core limits for caption and subtitle timing:

ParameterAdult contentChildren's content
Max reading speed17 CPS13 CPS
Max characters per line4242
Max lines per event22
Min event duration5/6 second (~833 ms)5/6 second (~833 ms)
Max event duration7 seconds7 seconds

The 5/6-second minimum corresponds to 20 frames at 24 fps. At 29.97 drop-frame (US broadcast), I treat it as 25 frames to stay safe. The minimum prevents cues from flashing so briefly that viewers cannot register them. The 7-second maximum guards against leaving a stale cue on screen after the dialogue has moved on.

On minimum gap between events: the Netflix General Requirements page I accessed does not state a specific frame count in the portion I fetched, but in practice I always leave at least 2 to 4 frames clear between the end of one event and the start of the next. This prevents flicker on interlaced displays and gives viewers a visual reset between cues.

How do I calculate CPS for a caption event?

The formula is straightforward. Count every character in the subtitle text including spaces and punctuation, then divide by the event duration in seconds. Here is a worked example with a failing cue and its fix:

# Event 1 - FAILS the adult CPS limit
Text:     "The conference starts tomorrow at nine."
Chars:    39  (every character including spaces)
Duration: 00:01:15.800 --> 00:01:17.800 = 2.000 s

CPS = 39 / 2.000 = 19.5   <-- exceeds 17 CPS

# Fix: trim text and extend duration slightly
Text:     "Conference starts at nine tomorrow."
Chars:    35
Duration: 2.200 s
CPS = 35 / 2.200 = 15.9   <-- PASS

# Children's program check
Text:     "Let's go to the park!"
Chars:    21
Duration: 2.000 s
CPS = 21 / 2.000 = 10.5   <-- PASS (under 13 CPS)

Counting rules I apply on every project:

  • Count spaces: a space is a character in every CPS calculation I use
  • Two-line events: count the total characters across both lines combined, divided by the single event duration
  • Vietnamese with diacritics: each precomposed character (for example "ụ", U+1EE5) counts as one character, not a base letter plus a combining mark
  • Inline tags: ASS override tags and HTML bold/italic tags are not counted because they produce no visible characters

How do I configure Subtitle Edit to catch CPS overruns?

Subtitle Edit can mark events that exceed CPS, line length, or duration limits in real time as you work. Before I start any new project, I configure these limits once so the event list and waveform panel highlight problems immediately. The settings path:

Subtitle Edit: caption timing limits
Options > Settings > General tab

  Max characters per second (CPS):   17   (adult programs)
                                      13   (children's programs)
  Max characters per line:            42
  Min duration (milliseconds):        833
  Max duration (milliseconds):        7000

After saving, any event that exceeds the CPS ceiling shows a colored indicator in the event list, and the waveform panel marks the limit line. I treat any highlighted event as a blocking issue and fix it before packaging the delivery file. For a children's project I simply drop the CPS ceiling to 13 and the warnings adjust automatically.

Subtitle Edit's "Fix common errors" dialog (Tools menu) can batch-extend events below the minimum duration. It does not automatically rewrite text to lower CPS - that judgment call stays with me, because shortening a line while preserving meaning is translation work, not a mechanical operation.

What I can handle myself vs when a specialist makes sense

Setting CPS ceilings in Subtitle Edit, calculating overruns by formula, and rewriting caption lines to stay within limits are all in-house tasks with a free tool. For creators captioning their own YouTube content, these steps are entirely manageable once the limits are configured correctly.

One pattern I encounter regularly: Vietnamese subtitle lines run about 15 to 25% longer in character count than the English source. When timing is locked to the original English edit, that expansion pushes CPS over the limit. My go-to fixes in order of preference: drop optional pronouns (Vietnamese allows subject/object ellipsis without losing meaning), prefer Sino-Vietnamese vocabulary where a two-syllable term replaces three or four pure-Vietnamese syllables, extend the event duration if an audio gap permits, or split the content across two events as a last resort.

The point where a specialist earns its keep: streaming platforms verify CPS compliance automatically on ingest. A file rejected for CPS overruns triggers a re-delivery cycle with real schedule and cost consequences. For a first delivery to a new platform, I always pull the current version of that platform's tech spec rather than relying on memory. The Netflix TTSG values above are current as of Sep 2026, but Apple TV+, Amazon, and Disney+ each publish variants with their own exact numbers.

For English SDH and closed-caption deliverables where reading speed is part of a broader compliance check, my SDH captioning service includes a full timing review before every delivery. For Vietnamese subtitle translation where CPS overruns are the most common quality issue, the same check is built into my subtitle translation workflow.

FAQ

Does CPS count spaces as characters?

Yes. Every standard CPS calculation counts all characters including spaces. Subtitle Edit's built-in CPS counter also counts spaces. Only inline markup tags (ASS override tags, HTML bold/italic formatting) are excluded because they render no visible characters.

What CPS limit should I use for non-Netflix projects?

17 CPS for adults and 13 CPS for children are widely used across the streaming and broadcast industry beyond Netflix. For projects with no platform-specific guide - theatrical or festival deliveries, for example - 17 CPS for adults is a safe default. Always check the platform's own current tech spec: Amazon, Apple TV+, and Disney+ each publish their own reading-speed limits.

Can an event be shorter than 5/6 second?

The Netflix General Requirements set the floor at 5/6 second (~833 ms). A cue shorter than that flashes on screen so briefly that most viewers cannot register it. I treat 833 ms as a hard floor and extend any shorter event to meet it, adjusting surrounding cues as needed.

Does a two-line event double the CPS count?

No. CPS is the total character count across both lines combined, divided by the single event duration. A two-line event is one event with one duration. Add the characters from line 1 and line 2, then divide by the duration in seconds.

What happens if I deliver a file with CPS overruns to Netflix?

Netflix's ingest system performs automated CPS validation and rejects files that exceed the audience-appropriate limit. The rejection report lists the offending timecodes. Running the CPS check in Subtitle Edit before packaging the delivery file prevents this entirely.

Official Sources

Written by Dao Huy (Lucas), Vietnamese translator & localization specialist (EN · ZH · FR → Vietnamese). See translation services →

报价WhatsApp