Reading-speed guide
CPS and WPM in subtitle QA
Characters per second and words per minute describe different parts of reading load. They are useful evidence under an explicit profile, not universal proof of subtitle quality.
Short answer: CPS vs WPM
CPS measures visible non-whitespace characters per second; WPM measures whitespace-separated words per minute. Neither is a universal pass/fail rule—use the threshold required by the client, platform, language, audience, or program.
What characters per second measures
CPS divides the count of visible, non-whitespace characters by cue duration in seconds. The implemented engine removes markup tags, counts Unicode characters, and rounds displayed values to one decimal place.
CPS = visible non-whitespace characters ÷ duration in seconds
What words per minute measures
WPM divides whitespace-separated words by cue duration in minutes. It can better reflect word density, while CPS captures punctuation and long words differently.
WPM = word count ÷ (duration in seconds ÷ 60)
Worked CPS and WPM examples
The examples below use synthetic cue text: “Read this now”. Markup is absent, the text contains 11 non-whitespace characters and 3 whitespace-separated words, and the cue lasts 2 seconds.
CPS example
11 visible non-whitespace characters ÷ 2 seconds = 5.5 CPS
Subtitle Preflight counts Unicode characters after markup removal, excludes whitespace from the character count, and displays CPS to one decimal place.
WPM example
3 words ÷ (2 seconds ÷ 60) = 90 WPM
The implemented calculation uses whitespace-separated words. Language, tokenization, punctuation, markup, and cue duration can make CPS and WPM tell different stories.
These calculations explain the implemented formulas. They do not establish a universal reading-speed limit.
Why CPS and WPM can disagree
A cue with several short words may have high WPM but moderate CPS. A cue with fewer long words may show the reverse. Language, tokenization, punctuation, and markup choices also affect the measures.
Choose thresholds for the actual workflow
General readability v1.0 uses 20 CPS and 160 WPM as accepted product defaults. Those values are editable and recorded in exports. They are not presented as a legal, accessibility, platform, broadcaster, or universal limit.
Review reading speed in a supplied file
Open the local subtitle checker to inspect cue-level duration, CPS, and WPM findings alongside overlap, gap, and line checks.
The checker does not compare subtitles with audio or video and cannot verify accuracy, completeness, speaker identification, meaningful sounds, visual placement, accessibility or legal conformance, or client/platform acceptance.
Check reading speed in a subtitle file
Run a browser-local check to review cue-level duration, CPS, and WPM under the visible profile. Edit the thresholds for the applicable workflow, then rerun before exporting.
Frequently asked questions
Should I use CPS or WPM?
Use the measures required by the applicable client or style guide; reviewing both can expose different reading-load patterns.
Does the checker account for language-specific segmentation?
No. Language-specific tokenization and reading models are outside the MVP.
Can I edit both thresholds?
Yes. Profile edits mark existing findings stale until the analysis is rerun.
How does Subtitle Preflight count characters for CPS?
It removes markup tags, counts visible non-whitespace Unicode characters, divides by cue duration in seconds, and displays the result to one decimal place.
Are 20 CPS and 160 WPM universal limits?
No. They are editable Subtitle Preflight product defaults, not legal, accessibility, platform, broadcaster, or universal requirements.