Home β€Ί Guides β€Ί How Long Should Subtitles Stay on Screen

How Long Should Subtitles Stay on Screen

A subtitle can be perfectly timed and still unreadable. Reading speed, minimum duration and line length are what separate captions you can follow from captions you fight.

Characters per second, and why it matters

Reading speed for subtitles is measured in CPS β€” characters per second, counted over the cue's on-screen duration. A 60-character line shown for two seconds is 30 CPS, which is too fast for comfortable reading in most languages.

The widely used ceiling is around 20 CPS for adult audiences, with children's content targeting closer to 13–15. Some broadcast specs allow bursts up to 25 CPS for short stretches, but sustained speed above 20 is the single most common complaint in caption quality reports.

The other three limits

  • Minimum duration. A cue should stay up at least about 1 second (some specs say 5/6 second). Anything shorter flickers β€” viewers register movement but cannot read it.
  • Maximum duration. Most guidance caps a cue at roughly 6–7 seconds, not because of reading speed but because a static line starts to look like a bug or a stray graphic.
  • Line length. Around 32–42 characters per line, maximum two lines. Longer lines force the eye to travel further and make the cue feel faster than its CPS suggests.

What the major platforms ask for

ContextReading speedMinimumNotes
Netflix-style delivery~20 CPS~5/6 sTwo lines max, ~42 characters per line
Broadcast (UK-style)~17–20 CPS~1 sStrict speaker-label and punctuation rules
Children's content~13–15 CPS~1 sSlower by design
User-generated videoNo enforced limitβ€”Auto-captions frequently exceed 20 CPS

Treat these as targets rather than laws. The specs that matter are the ones in your delivery contract; these figures are what to aim for when nobody has told you otherwise.

How to audit your own file

Reading the numbers cue by cue is tedious, so export the file and let a spreadsheet do the sorting. The subtitles to CSV tool writes one row per cue with its duration in milliseconds, which makes the audit mechanical:

  1. Convert the file to CSV.
  2. Add a column dividing the character count of the text by duration_ms / 1000.
  3. Sort descending β€” the top rows are your problem cues.
  4. Sort duration_ms ascending to find cues that flash past.

In practice most files have a handful of offenders rather than a systemic problem, and fixing the worst ten cues noticeably improves how the whole track feels.

Fixing a cue that is too fast

You have two levers: shorten the text or lengthen the time. Which is correct depends on the material.

If the speaker was genuinely fast and the pause after the line is long, extend the cue's end time β€” but respect the next cue's start, because overlapping cues are worse than fast ones. If the line is simply verbose, edit it down. Professional subtitling is condensing, not transcribing; dropping filler and collapsing clauses is normal and expected.

Only resync the whole track when the problem is systematic. If most cues are fast, the file was probably timed against a different reading speed standard, and stretching every cue proportionally is quicker than editing each one.

Reading speed is not the same as comprehension

CPS is a proxy. A cue at 18 CPS with two dense clauses can be harder than one at 22 CPS with plain wording, and names, numbers and unfamiliar terms all cost more time than their character count suggests. Use the numbers to find candidates, then read the worst ones yourself.

If you are captioning for a language other than English, the 20 CPS figure is a starting point, not a constant β€” languages differ substantially in how much information a character carries, and several broadcast specs publish separate limits per language.

Tools mentioned in this guide

SRT to VTT Converter

Convert .srt subtitle files to WebVTT (.vtt) for HTML5 video, right in your browser.

Open tool β†’

VTT to SRT Converter

Turn WebVTT files back into SubRip (.srt) for editors, players and upload platforms.

Open tool β†’

Remove Timestamps from Subtitles

Strip timestamps and cue numbers to get a clean, readable transcript.

Open tool β†’

Clean Up AI-Generated Subtitles

Remove sound cues, HTML tags, speaker labels and duplicate cues from auto-generated captions.

Open tool β†’

Shift Subtitle Timing

Move every subtitle cue earlier or later to fix out-of-sync captions.

Open tool β†’

Resync Subtitles by Frame Rate or Speed

Fix subtitles that drift progressively out of sync by resampling them to your video's frame rate or playback speed.

Open tool β†’

SBV to SRT Converter

Convert YouTube .sbv caption files to SubRip (.srt), right in your browser.

Open tool β†’

Merge Subtitle Files

Combine two SRT or VTT files into one track, with the second file appended after the first.

Open tool β†’

Subtitles to CSV Converter

Export SRT or VTT cues to a CSV spreadsheet with start time, end time, duration and text.

Open tool β†’

Split Subtitle Files

Cut one SRT or VTT track into two files at any timestamp, right in your browser.

Open tool β†’

Fix Garbled Subtitles (Encoding Repair)

Repair mojibake β€” subtitles showing é, Ò€ℒ or ΓΒΏΓ‘β‚¬ΓΒΈΓΒ²ΓΒ΅Γ‘β€š instead of real characters.

Open tool β†’

Subtitle Timing Checker

Audit an SRT or VTT file for cues that are too fast, too short, too long or overlapping.

Open tool β†’

ASS / SSA to SRT Converter

Turn SubStation Alpha (.ass, .ssa) subtitles into clean SubRip (.srt) β€” in your browser, with nothing uploaded.

Open tool β†’

SRT to ASS Converter

Turn SubRip (.srt) subtitles into a complete ASS v4+ script with a default style, ready for styled players.

Open tool β†’

TTML / DFXP to SRT Converter

Turn TTML and DFXP captions (.ttml, .dfxp, .xml) into SubRip (.srt) in your browser β€” including offset times such as 10s, 100ms and 30f.

Open tool β†’

Plain Text to SRT Converter

Turn a transcript β€” one line per caption β€” into a valid .srt file with evenly spaced timing you can retime later.

Open tool β†’

Last updated 2026-09-21. All tools run locally in your browser.