Boneyard Tools

Subtitle Reading Speed (CPS) Checker

Good subtitles give viewers enough time to read each line. The usual measure is reading speed in characters per second (CPS): the number of visible characters in a cue divided by how long it stays on screen. Drop an SRT or VTT file here and this tool shows the CPS of every cue, your average and peak, and a red flag on any caption that runs faster than your limit (17 CPS by default). The file is read entirely in your browser, so it is never uploaded.

How to check subtitle reading speed

  1. Drag an SRT or VTT file onto the box, or click to browse for one.
  2. Read the summary: average CPS, the fastest cue, and how many are over the limit.
  3. Adjust the CPS limit if your house style differs, then review the flagged cues in the table.

Examples

A caption that is too fast to read

00:00:05,000 --> 00:00:06,000 with a 50-character line
50 characters over 1 second = 50 CPS, flagged as well over the 17 CPS limit

Frequently asked questions

Is my subtitle file uploaded anywhere?

No. The file is read and analyzed entirely in your browser using JavaScript. Nothing is sent to a server, so your subtitles stay on your device.

What is CPS, or subtitle reading speed?

CPS stands for characters per second. It is the number of visible characters in a subtitle divided by how many seconds that subtitle is on screen. It estimates how fast a viewer must read to keep up, so it is the standard way to catch captions that flash by too quickly.

What is a good CPS limit?

Many broadcasters and streaming guidelines cap adult subtitles around 17 CPS, with lower limits (about 12 to 13 CPS) for content aimed at children. This tool defaults to 17, and you can change the limit to match your own house style.

How is the character count measured?

Line breaks within a cue are collapsed to single spaces, then basic HTML tags like <i> and <b> and brace-style override codes like {\an8} are removed, so only the text a viewer actually reads is counted. The cleaned length is the character count used for CPS.

Does it support both SRT and VTT files?

Yes. SRT uses a comma before the milliseconds (00:00:01,000) and VTT uses a dot (00:00:01.000). Both are parsed, the WEBVTT header and cue numbers are ignored, and any VTT cue settings after the end time are skipped.

What happens with a zero-duration or broken cue?

A cue whose start and end times are equal has no on-screen time, so its CPS is reported as infinite and it is always flagged. It is left out of the average so one broken cue does not distort the file's overall reading speed.

Related tools