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
- Drag an SRT or VTT file onto the box, or click to browse for one.
- Read the summary: average CPS, the fastest cue, and how many are over the limit.
- 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
Subtitle Time Shifter
Fix out-of-sync subtitles in your browser. Shift every timestamp in an SRT or VTT file forward or back by a set amount, then download the result. Private.
SRT to VTT
Convert SRT subtitles to WebVTT in your browser. Add the WEBVTT header, fix comma timestamps to dots, and download a clean .vtt file. Free and private.
Find and Replace
Find and replace text online with literal or regex search, case sensitivity, and replace first or all. See a live count of changes. Free and private.
Add Line Numbers
Add line numbers to any text online. Set the start value, step, and separator, pad numbers to align, and copy or download the result. Free and private.
ASS to SRT Converter
Convert ASS and SSA subtitles to SRT in your browser. Strips styling tags, fixes timestamps, renumbers cues, then download a .srt file. Private, no upload.
Bold Text Generator
Make bold, italic, bold italic, monospace and sans bold text with Unicode symbols. Copy styled text into bios and posts. Free and private.