Subtitle reading speed (CPS)
Reading speed is how fast a viewer has to read a caption before it disappears, expressed as characters per second (CPS). Netflix and most broadcaster style guides cap it with a hard number; YouTube publishes no numeric limit, so CueForge’s YouTube preset carries a draft baseline instead. Either way, the stakes are the same: a cue that flashes past faster than a viewer can read it has failed at its only job.
CueForge checks CPS against any of these limits for free, in your browser. Paste a line and its duration into the checker below for an instant verdict, or read the thresholds it checks against in the table.
What counts as a character
CueForge counts Unicode code points, not bytes and not UTF-16 units, so a multi-byte letter or an emoji counts once, the way a reader actually sees it. Line breaks are excluded from the count by default: a two-line cue with 20 characters on each line counts as 40 characters, not 41.
Invisible bidi control marks (the right-to-left and left-to-right marks a subtitle tool inserts to force correct text direction) are never counted, on every preset, regardless of that preset’s own settings. A mark with no visible width can’t make a cue harder to read, so it shouldn’t be able to push a cue over the limit.
The limits, by preset
Four presets ship with CueForge, and every one enforces a maximum CPS along with a minimum and maximum cue duration. The table is generated from the same rule config the QC engine loads: change a preset and this page is out of date until it’s regenerated, not the other way around.
| Preset | Max CPS | Min duration | Max duration | Notes |
|---|---|---|---|---|
| Netflix (Latin) | 20 characters/second | 833 ms | 7000 ms | No exclusions beyond the shared bidi marks. |
| Netflix (Arabic) | 20 characters/second | 833 ms | 7000 ms | Arabic diacritics (U+064B–U+065F) excluded from the count. |
| YouTube | 25 characters/second | 500 ms | 10000 ms | CueForge draft baseline — YouTube publishes no numeric limits. |
| Generic | 21 characters/second | 700 ms | 8000 ms | Baseline draft with no external reference. |
Max CPS and duration bounds are read live from each preset’s rule config. The Netflix rows trace their CPS caps to the Partner Help Timed Text Style Guides and their duration bounds to Netflix’s separate General Requirements article. The YouTube row is a CueForge draft baseline, not a YouTube requirement: the preset’s reference article covers caption file formats and publishes no numeric limits. Generic carries no external reference; like YouTube it is a baseline draft, not a claim about any platform’s actual rules.
CPS vs WPM
Words per minute (WPM) is the more familiar reading-speed measure, and some broadcaster guides still quote it — the BBC’s Subtitle Guidelines recommend 160–180 wpm, which works out near 13–15 CPS at average word lengths. But a "word" isn’t a fixed unit: average word length varies by language and even by sentence. CPS counts something that doesn’t need a definition argument: characters. That is why every preset below checks CPS and none check WPM.
The checker below still shows WPM, for reference. It won’t tell you whether a cue passes or fails; only the CPS number and the per-preset verdicts do that.
When a cue reads too fast
The QC inspector’s CPS auto-fix extends a cue’s end time forward, just far enough to bring reading speed down to the preset’s limit. The extension is capped by the gap to the next cue and a conservative duration ceiling, so it can never create a new overlap or push the cue past that preset’s max-duration rule.
When there isn’t enough open space to reach a passing duration, the fix declines and leaves the cue as-is rather than guessing: the cue stays flagged so a human can shorten the text or retime it by hand.
Frequently asked questions
Is checking my subtitle’s reading speed free?
Yes. Running any built-in QC preset, including the CPS check, against any file in the CueForge studio is a free-tier feature: no account, no payment, no file limit.
What counts as a character in the CPS calculation?
Unicode code points, counted one per visible letter or symbol regardless of how many bytes it takes to encode. Line breaks are excluded by default, and invisible bidi direction marks are always excluded, on every preset.
Is a higher CPS limit always more permissive?
For the raw number, yes, but presets also differ in what they exclude from the count. The netflix-arabic preset excludes combining diacritics, so an Arabic cue can look nearly identical in two presets and pass one while failing the other.
Does the checker match what the app actually enforces?
Yes; it runs the identical formula (counted characters divided by seconds) against the same threshold data the app’s QC engine loads, and is tested against the real rule to confirm the two never disagree.
Which preset should I check my subtitles against?
Whichever platform or client spec you’re delivering to expects. If that’s Netflix, the netflix-subtitle-requirements guide covers the whole threshold set: line length, duration and timing gaps alongside CPS.
Browse every subtitle converter · Edit subtitles in the browser · Open the CueForge studio