Check a Subtitle File Before It Goes Out
Paste the contents of an .srt or .vtt file, or drop the file in, and every cue gets parsed and measured. You get a score and a list of what is actually wrong: timings that are invalid or overlap, cues that flash past too quickly, captions that sit on screen too long, lines too long to fit, and text running faster than anyone can read it.
Each problem comes back with the timecode it belongs to, so you fix cue 47 rather than scrolling a file looking for it.
It runs in the browser. The file is parsed and measured on your device, which matters when the subtitles belong to an unreleased episode or a client’s video.
Every Other Subtitle Tool Makes Captions, This One Checks Them
Generating subtitles is a solved problem. Half a dozen tools will transcribe a video and hand you an SRT, and most of them do it well enough.
What almost nothing does is tell you whether the file you ended up with is any good. So subtitles ship with cue 12 overlapping cue 13, a line of 78 characters that wraps into three on a phone, and a caption carrying 40 characters across half a second. None of that is visible in a text editor. All of it is obvious to a viewer within about ten seconds.
The checks here are arithmetic on timestamps and character counts. That is the point: these are the subtitle problems you can prove rather than argue about.
What It Measures
Invalid timings. A cue whose end time is at or before its start time has no duration. Most players skip it silently, so the line simply never appears and nothing tells you why.
Overlapping cues. When one cue is still on screen as the next begins, players disagree about what to do. Some stack the two, some flicker between them, some drop one. This is the most common structural fault in hand-edited subtitle files, and it comes from nudging one timing without checking its neighbor.
Time on screen. Below roughly five sixths of a second a caption reads as a flash rather than a line of text. Past about seven seconds a static caption starts to look like it is stuck and the viewer stops trusting the sync.
Reading speed, in characters per second. Covered properly below, because it is the check most people have never run.
Line length and line count. A long line either wraps somewhere unhelpful or runs off a narrow screen. Three or more lines covers too much of the picture, which defeats the point of putting the words under the video.
Empty and duplicate cues. An empty cue reserves screen time for nothing. A cue identical to the one before it is almost always a paste that happened twice, not a line repeated on purpose.
Reading Speed Is the Check Nobody Runs
Characters per second is the number that separates subtitles that feel comfortable from subtitles that feel like homework, and almost nobody measures it.
The arithmetic is simple. Take the characters in the cue, divide by how long it is on screen. A cue with 60 characters showing for 2 seconds runs at 30 characters per second. A viewer has to read that, watch the picture, and listen, all at once. They will not finish.
The convention most style guides land near is about 17 characters per second for general audiences, and this flags anything above that. Past roughly 21 it is marked as a real problem rather than something to look at, because at that speed the text is gone before an average reader reaches the end.
What makes it worth checking is that high reading speed is invisible in every other way. The file is valid. The timings are in order. Nothing is malformed. The subtitles are simply moving too fast, and the only way to know is to do the division on every cue.
What a Perfect Score Does Not Mean
It means the file is structurally sound and within the usual limits. It does not mean the subtitles are correct.
This cannot tell you whether the words match the audio. A subtitle file can pass every check here while being transcribed wrongly, or shifted two seconds off the dialogue, because the tool never sees or hears the video. Sync against the actual audio is a different job.
It does not check spelling, and that is deliberate rather than an omission. Spell checking needs a dictionary for the right language, and subtitles are full of names, places, product terms, and deliberate informality that a naive checker would flag by the hundred. A list of 200 false positives is worse than no list, so it does not pretend.
It also does not know your house style. Broadcasters, streamers, and accessibility standards all differ on line length and reading speed, and some languages need different limits entirely. The thresholds here are the common conventions, not rules handed down from anywhere. Treat a warning as a prompt to look, and a failure as something to fix.
SRT, VTT, and What It Ignores
Both formats work, and you can paste the text instead of uploading if that is easier. SRT sequence numbers and the WEBVTT header are recognized and skipped rather than counted as content.
Timestamps parse in either dialect, so the comma in 00:00:04,120 and the dot in 00:00:04.120 are both fine, including VTT’s shorter MM:SS.mmm form. VTT cue settings trailing the end time, things like align:start or position:10%, are read and ignored rather than treated as text.
Formatting tags are stripped before anything is counted. That matters more than it sounds: a line wrapped in italic tags is not actually longer for a viewer, and counting the markup would flag lines that are perfectly fine.
If You Need to Make or Fix Subtitles Instead
This checks a file you already have. To create one from a recording, the subtitle generator produces timed captions, and the closed caption generator covers the accessibility side. To turn a finished transcript into a subtitle file, the text to SRT converter handles the timing. To burn the result into the picture, use add subtitles to video.
Two neighbors worth knowing about. If you need to find an exact line rather than check the file, the transcript search searches cues and keeps the timecodes. If the file is a translation and you want to know whether anything was dropped, that is the translation checker, which compares a translation against its source.