DEV Community

Cover image for Subtitle readability: why a valid file can still be unreadable
Yana Li
Yana Li

Posted on • Originally published at timedsubs.com

Subtitle readability: why a valid file can still be unreadable

I publish the same scripted show in five languages: Spanish, English, Japanese, German, and Chinese. Every episode ships with subtitles, and every language has taught me the same lesson from a different angle: a subtitle file that passes every technical check can still be genuinely hard to read.

Validators catch broken timestamps, overlapping cues, and malformed syntax. Those checks matter, and you should run them — a free subtitle checker does it in your browser in seconds. But validators catch none of the things that actually make viewers give up on subtitles. Those live in a different layer, and this article is about reviewing that layer without any special tooling.

The validation gap

A subtitle file is two promises at once. The first is technical: timestamps are legal, cues do not overlap, the syntax parses. The second is human: a person watching at normal speed can read every line comfortably while also watching the video.

File formats only encode the first promise. Nothing in SRT or VTT stores "this line is comfortable to read." That is why a file can be simultaneously perfect and unusable, and why the readability layer needs its own review.

Four failure modes account for almost everything I catch in my own episodes.

1. Line breaks that fight the sentence

A subtitle line is not a text box that happens to wrap. Where the line breaks is where the viewer's eye pauses, and a break in the wrong place makes the brain re-parse the sentence.

Bad break:

He said he would never
sell the company.
Enter fullscreen mode Exit fullscreen mode

Better break:

He said
he would never sell the company.
Enter fullscreen mode Exit fullscreen mode

Same words, same timing, same valid file. The first splits "never sell" across a visual boundary right at the point of emphasis. The second breaks at a natural speech pause.

The check: scrub through the video and read only the line breaks. If a break lands inside a tight phrase — verb and object, negation and verb, a name and its title — fix it. Most auto-generated subtitles break lines purely by character count, so this check almost always finds something. When the problem is mechanical (a long line that just needs re-wrapping at word boundaries), the line break rewrap guide shows what can be fixed automatically without touching timestamps.

This gets harder outside English. German compounds resist breaking. Japanese and Chinese have no spaces, so a naive break can split a word in half without anything looking wrong to a validator.

2. Reading speed the eye cannot match

Every serious subtitling operation sets a reading-speed ceiling. Netflix's English style guide caps adult programming at 20 characters per second and children's content at 17. Broadcast practice has long worked to a similar ceiling expressed differently, commonly around 160–180 words per minute. For dense scripts like Japanese, the limits are tighter still — Netflix's Japanese guide works with much shorter lines because each character carries more information.

Two things follow from those numbers. First, the exact threshold is a style decision, not a legal one: WCAG requires captions to be synchronized and equivalent, and it deliberately does not set a characters-per-second figure. Second, whatever ceiling you choose, the failure mode is identical — a line flashes by faster than a person can read it, and the viewer either rewinds or gives up.

The check: find your three fastest lines. They cluster in predictable places, where the narration accelerates or where two sentences got merged into one subtitle. Play those spots at normal speed with the audio muted and try to read your own subtitles cold. Muting matters: when you can hear the narration you already know what the line says, and you will believe it is readable when it is not.

3. Rhythm: lines that flash or linger

Reading speed has a partner problem that gets less attention: display rhythm. A line that is on screen for 500 milliseconds registers as a flicker even if it is only one word. A line that lingers for eight seconds makes the viewer read it twice and wonder if playback froze.

The mechanical half of this is checkable — minimum durations, and lines too short to read, are exactly the kind of thing a pre-export review should flag. The editorial half is not: sometimes a one-word subtitle deserves to stay long for emphasis, and sometimes it should be merged into its neighbor. A tool can point at the anomaly; deciding is your job.

4. Subtitles that compete with the picture

The fourth failure mode has nothing to do with the subtitle file at all. Subtitles sit on top of a picture that often contains its own text: titles, lower thirds, on-screen quotes, interface recordings. When the subtitle and the picture demand the same eyeballs at the same moment, the viewer reads neither.

The check: watch the video once paying attention only to the bottom third of the frame. Note every timestamp where a subtitle overlaps burned-in text, a chart label, or a face during a moment that matters. Sometimes the fix is repositioning, sometimes it is shifting a cue by half a second, and sometimes it is a note to future-you about where not to put on-screen text.

Why this layer gets skipped

Nobody owns it. The editor treats subtitles as an export setting. The captioning tool never sees the final picture. The reviewer checks that subtitles exist and match the words. Readability falls between those chairs precisely because it requires looking at the words, the clock, and the picture at the same time — which is exactly what none of the individual tools do.

There is also a deeper reason: most subtitle problems enter the file before readability is even in play. If the text itself was produced by speech recognition guessing at your words, you are proofreading a transcription before you can even think about line breaks — the auto captions accuracy guide covers why that happens. Starting from the approved script instead, with forced alignment deriving only the timing, removes the wording problem entirely and leaves readability as the one human layer left to review.

The ten-minute review

Pulling the four checks together:

  1. Breaks pass. Scrub and read only the line breaks; flag any break inside a tight phrase.
  2. Speed pass. Find the three fastest lines; play them muted at normal speed and read cold.
  3. Rhythm pass. Look for flickers under a second and lingerers past several seconds; merge, split, or retime.
  4. Picture pass. Watch the bottom third once; note every collision with on-screen text or faces.

If you publish in more than one language, run it per language. The failures move around — my German lines run long, my Chinese lines run dense — and that movement is the most convincing evidence I know that subtitle readability is a design problem, not a file-format problem.

The compact checklist version of this review lives in the caption readability check guide, and the five-language production story behind these lessons is its own article. For the mechanical layer — validation, long lines, format conversion — the free browser tools handle it locally without an account.

Top comments (2)

Collapse
 
jugeni profile image
Mike Czerwinski

SRT and VTT validation is a clean case of a check reading only the channel it was built to read: the schema encodes legal timestamps, so a validator built against the schema can only ever certify that the timestamps are legal. Readability lives somewhere else entirely, in reading speed relative to line length, in whether a break lands inside a tight verb-object pair, in whether the subtitle collides with a face or a lower third on screen. None of that is expressible in the format the validator checks, so a file can be perfectly valid and still be the thing nobody can actually read in real time.

Which means "four-pass manual review" isn't really one check done four times, it's four different channels a human is standing in for because nothing else reads them: timing-against-density, syntactic-break-quality, duration-extremes, and visual-collision. Each of those is checkable without a human in the loop, and each needs a different kind of check. Reading speed is arithmetic, chars divided by duration against a language-specific cap. Break quality is close to a parser problem, does the line split fall inside a phrase a grammar would keep together. Duration extremes are a threshold on your own metadata. Visual collision is the one that actually needs the video, since it depends on where text already sits on screen.

The bar worth setting: nothing should ship on schema-valid alone, and each of those four failure modes should be a separate automated flag before the fourth pass, human judgment, gets called in only for the rare case where the automated checks disagree with each other or something genuinely ambiguous is happening. Right now the schema check gives false confidence for free and the other three checks are entirely unautomated, which is the most expensive way to run this.

Collapse
 
woshiliyana profile image
Yana Li

This is the clearest framing of the validation gap I've seen — "four channels a human is standing in for" is exactly right. Since the article's mechanical layer runs in the free tools, here's what's already automated behind them:

  • Reading speed is arithmetic: the checker flags cues over a per-language CPS cap (EN 22, ZH 18, JA 16 as our house defaults), and a separate pacing checker classifies every cue comfortable/tight/rushed.
  • Duration extremes are a threshold on the file's own metadata: cues under ~1s or over ~7s are flagged with merge/split suggestions.
  • Break quality is treated as a parser problem: a cue that ends mid-phrase while the next cue continues the sentence gets flagged, and past a ratio threshold the verdict escalates to "rebuild timing from script + audio" instead of hand-fixing every split.

The export path also refuses to ship structurally invalid files, and paid jobs surface a QA score + issue list with language-specific thresholds — so nothing ships on schema-valid alone. That covers the "no false confidence for free" half.

Where I agree it stays human is the fourth pass: visual collision needs the video picture, which a subtitle-file tool never sees — that's the one pass where a person scrubs the bottom third of the frame, as the article's ten-minute review describes. Ambiguous editorial calls (a one-word cue that deserves to stay for emphasis) stay human too; the tool points at the anomaly, deciding is yours.

The hard problem I'd love your take on: for Japanese and Chinese, "does the split fall inside a phrase a grammar would keep together" has no spaces to anchor a parser — a naive break can split a word in half without looking wrong to any validator. Heuristics catch the obvious cases; a grammar-aware split for CJK feels like the next real problem, not a threshold.