Free tool · the file stays on your device

Subtitle CPS checker

Check a subtitle file for reading speed, line length, overlapping cues and lines that stay on screen too short. The report lists every cue with its characters per second. Everything runs in your browser — the file is never uploaded.

Updated 2026-10-22 · Author: Mark Burmistrov · 3 minutes

Check a subtitle file

Free, no sign-up

Drop an .srt or .vtt file here

or pick it from your computer. The file is read inside the page and is never sent to a server.

Limits

Download the report (CSV)

Add a subtitle file or paste the text of one.

Everything is calculated in your browser. The file is read with the file reader of the page, no request carries it, and nothing about it is stored.

How to use it

Four steps from a subtitle file to a list of fixes.

1 · Give the tool the file
Drop an .srt or a .vtt file on the block, or pick it with the button. If the subtitles are not in a file yet, paste the text into the field below the limits. The file is read in the page: no request carries it and nothing is stored.
2 · Pick the limits
Two presets are on the page. The standard one is the set of defaults of the Sonix subtitle API: 20 characters per second, 45 characters in a line, two lines. The comfortable one lowers the speed to the 15 characters per second a reader manages while the speech is playing. Every number has its source and the day it was read.
3 · Read the report
The chart shows the speed of every cue, and the table under it lists the cues with a problem: the speed above the limit, a line that is too long, more lines than allowed, a cue that is too short to be read, a cue with no time on screen, or a cue that starts before the previous one ends.
4 · Fix the file and check again
Download the report as a CSV with one row per cue, or copy it as text to send to the editor. Then fix the timings and the lines and run the file through the tool again: the report is a checklist, not a verdict.
The limits

Where every number of this tool comes from.

Two published numbers do the work: 20 characters per second as the limit of the Sonix subtitle API, and about 15 characters per second as the speed of comfortable reading. The rest follows from them.

The limits of the two presets and the source of every number
Preset Characters per second Characters in a line Lines Where the number comes from
Standard subtitle limits 20 45 2 the defaults of the Sonix subtitle API: max_cps 20, max_characters 45, subtitle_lines 1 or 2
Comfortable reading 15 45 2 about 15 characters per second as the maximum for comfortable reading; the line length stays at the standard 45 characters
Reading speed of the “too short” check 15 — — the same comfortable reading speed: a cue is too short when the text needs more seconds than the cue stays on screen

Source: Sonix API subtitle settings, https://sonix.ai/docs/api (accessed 2026-10-22); Talkio AI engineering overview, “Speech to text for deaf and hard of hearing users”, https://voicecontrol.chat/blog/posts/speech-to-text-for-deaf-and-hard-of-hearing-users-beyond-accuracy (accessed 2026-10-22). Both are recorded in the data file of the tool, apps/web/assets/tools/subtitle-cps-checker/data/standards.json.

  • A character is a letter, a digit, a space or a punctuation mark of the visible text. Formatting tags and entities are resolved first, so & counts as one character and a voice tag does not count at all.
  • The characters of a cue are the sum of its lines, and the speed is those characters divided by the seconds the cue stays on screen.
  • A cue is too short when the text needs more seconds than the cue lasts at the comfortable reading speed of 15 characters per second.
  • Two cues overlap when the second one starts before the first one ends. The report says by how many seconds.
FAQ

Questions about the check.

Is my subtitle file sent anywhere?
No. The file is read in your browser with the file reader of the page, the numbers are counted there and the report is drawn there. There is no form to submit, no upload and no request that carries your subtitles, and nothing about the file is stored.
What is characters per second?
It is the reading speed of a subtitle: how many characters of the text a viewer has to read per second of screen time. A cue of 60 characters that lasts three seconds is 20 characters per second, which is the limit of the standard preset. The speed matters because a viewer who cannot keep up stops watching the text and starts watching the picture instead.
Which files does the checker read?
SubRip (.srt) and WebVTT (.vtt), the two formats that carry timecodes. The tool also reads pasted text, so a subtitle copied out of a document can be checked without saving a file. The format of the file you add is shown in the report.
What counts as a cue that is too short?
A cue whose text needs more seconds than the cue itself stays on screen. The reading time is the number of characters divided by the comfortable reading speed of 15 characters per second, so a cue of 45 characters needs three seconds to be read. A cue of one second with that text is flagged.
Which limits should I use?
The standard preset fits the defaults of a widely used subtitle API and is a good first pass. The comfortable preset is stricter and better for subtitles that carry information a viewer has to follow, such as instructions or names. Both presets use the same 45 characters a line and the same two lines.