What reading speed measures
Characters per second is the number of characters in a cue divided by the number of seconds it stays on screen. It is a proxy for effort: a viewer has to read the line, look at the picture, and be ready for the next cue, all inside that window. Fifteen to seventeen characters per second is a widely used adult target for scripted material. Content for children sits lower, around ten to thirteen. Fast unscripted speech pushes higher and is uncomfortable at any speed, which is why it gets condensed rather than transcribed.
The measurement is deliberately crude. It does not know that a repeated name is read faster than a new one, or that a cue containing a long number is read slower than its character count implies. What it does reliably is find the cues that cannot possibly work, and in a two hour file that is the job.
The other four checks
| Check | Typical setting | Why |
|---|---|---|
| Minimum duration | 1 second, sometimes 1.2 | A cue shorter than this registers as a flicker even when it is only two words |
| Maximum duration | 6 to 7 seconds | Text left up after it is read pulls the eye back to reread it |
| Line length | 37 to 42 characters | Longer lines force a horizontal eye sweep that costs more than a line break |
| Lines per cue | 2 | Three lines cover too much picture and are read as a block rather than a caption |
| Gap between cues | 2 frames, roughly 80 to 125 ms | Without a gap the eye does not register that the text changed |
These interact. Splitting a fast cue into two shorter ones fixes the reading speed and can break the minimum gap. Extending a cue to slow it down can break the maximum duration or run into the next cue. The fix that costs nothing elsewhere is nearly always cutting words.
Condensing rather than transcribing
Subtitles are not a transcript. Filler, false starts, repeated names and words the viewer can hear the tone of are the first things to go, and the meaning survives intact. "Well, I mean, I suppose what I am trying to say is that we should probably leave" is 74 characters; "I think we should leave" is 23, and in a three second cue the difference is between 25 characters per second and 8.
When a cue still cannot be condensed enough, split it across two cues at a natural clause boundary rather than mid-phrase. A break after a comma or before a conjunction reads cleanly; a break between an adjective and its noun does not, because the viewer holds an incomplete idea across the cut.
Reading this tool honestly
Every threshold on the page is editable because none of them is a law. House styles differ, broadcasters publish their own specifications, and a streaming platform will hand you numbers that differ from the ones a cinema uses. Set the fields to the specification you are actually delivering against, and treat a green result as the absence of obvious faults rather than as proof that the subtitles are good. The flags find candidates for review. Watching the scene decides them.
Related pages
If the timing is out rather than the density, the subtitle timing shifter corrects an offset or a frame rate mismatch and reports overlaps afterwards. For the length of the spoken material before it becomes subtitles, speech time estimator and reading time estimator work from word counts. Word frequency is useful for spotting the filler worth cutting across a whole script.
Questions people ask
Is 17 characters per second a standard?
It is a common working number rather than a standard. Broadcasters and platforms publish their own specifications and they vary, typically between 15 and 20 for adult content and lower for children. Set the field to whatever you are delivering against. The value of the measurement is consistency across a file, not the specific threshold.
Should spaces be counted?
Most houses count them, and this does by default. Counting spaces gives a higher reading speed for the same line, so it is the more cautious choice, and it also avoids a strange effect where breaking a long word into two shorter ones changes the score. The switch is there because some specifications exclude them, and mixing the two conventions inside one project is what actually causes trouble.
What do I do about a cue that is too fast?
Cut words first. Filler, repeated names, and anything the viewer can hear in the delivery are removable without losing meaning, and shortening the text fixes the problem without touching the timing. Extending the cue is the second option and it borrows time from the next one. Splitting into two cues is the third, and it needs a clause boundary to break at or it reads worse than the original.
Why are overlaps flagged when WebVTT allows them?
Because in most files they are accidental. Deliberate overlaps come with positioning settings that put the two cues in different parts of the frame, and they appear in small numbers. A file with dozens of them and no positioning has a timing fault, usually from an automatic conversion or a badly applied scale. The flag points you at them; whether they are intended is your call.
Does this handle styling tags?
Tags in angle brackets and the brace-and-backslash override codes used by some formats are stripped before counting, so italics and colour markup do not inflate the character count. Anything else in the text is counted as written, including music note symbols and speaker labels, both of which occupy real reading time and belong in the total.