CAPTION QUALITY CHECKER · RUNS IN YOUR BROWSER

Do your captions read too fast, too crowded, or off-sync?

Paste an SRT or WebVTT caption file and check every cue's reading speed, line length, lines per cue, on-screen duration, and timing (overlaps, too-short gaps, invalid or out-of-order cues) against commonly-used caption style-guide thresholds.

Nothing is uploaded. The caption text you paste is parsed in this browser and never leaves your device.

1. Check a caption file

Paste the whole file, including the WEBVTT header for a VTT track, or the numeric cue index for an SRT track.

Prefer a CLI, or want this as a CI gate?

The CLI reads a local .srt/.vtt file and runs the identical checks — no browser, no upload, nothing goes through this site:

node check.mjs captions.srt --json
node check.mjs captions.vtt --max-cps 17
node check.mjs captions.srt --max-line-length 32 --max-lines 2

Get check.mjs and engine.mjs from the repo — plain Node 18+, nothing to install. Exit code 1 when a danger-severity finding is produced (reading too fast, overlapping cues, invalid or out-of-order timing) or the file cannot be read at all.

What's checked

CheckWhat it flagsSeverity
Reading too fastCharacters per second above the cap (default 20)Danger
Invalid timingA cue's end time is at or before its start timeDanger
Out of orderA cue starts before an earlier one in the fileDanger
Overlapping cuesA cue's end time is after the next cue's start timeDanger
Duration too shortOn screen for less than the minimum (default 5/6 second)Notice
Duration too longOn screen for more than the maximum (default 7 seconds)Notice
Line too longA line above the maximum length (default 42 characters)Notice
Too many linesMore lines in one cue than the maximum (default 2)Notice
Gap too shortLess than the minimum gap (default ~84ms) between two cuesNotice
Empty cueA cue with no visible text at allNotice

More: why caption quality is a separate question from caption presence, and where these thresholds come from.

Common questions

What counts as "too fast" for captions?

There is no single legal reading-speed limit, but caption style guides converge on a similar range: a commonly-cited ceiling for adult-content captions is around 20 characters per second (roughly 160-180 words per minute), with a lower cap often used for children's content. This tool defaults to 20 characters per second and lets you lower or raise it with --max-cps on the CLI.

Why does caption quality matter if WCAG only requires that captions exist?

WCAG Success Criterion 1.2.2 requires captions for prerecorded audio content, but it does not grade how readable those captions are once they exist. A caption track can be technically present — it parses, it plays, it is synced — and still fail the viewer it exists for if the text moves faster than a typical reading speed, crowds too many lines into the frame, or flickers past in under a second. Quality is a separate, unenforced question from presence, and this tool checks the quality question.

Where do the specific numbers (42 characters per line, two lines, 20 cps) come from?

They are commonly-used industry thresholds, not one single controlling standard — publicly published caption style guides such as Netflix's Timed Text Style Guide and the BBC's Subtitle Guidelines state versions of these same numbers (reading speed caps, a two-line maximum, minimum and maximum on-screen duration). This tool cites them as widely-used defaults and makes every threshold configurable on the CLI, because a specific broadcaster, platform, or client contract may set its own numbers.

Does this replace a human caption review?

No. It checks mechanically verifiable properties of the timing and text you provide — reading speed, line length, duration, overlap, and gaps. It cannot judge whether a caption is an accurate transcription, whether speaker labels or sound descriptions are used correctly, or whether the translation (for subtitles) reads naturally. Treat a clean report as evidence that the mechanical thresholds are met, not as a substitute for reviewing the captions yourself.