SubShiftly

Subtitle readability: CPS and line length

8 min readUpdated September 2026
A bright living room with a large flat television facing a blue sofa
subtitle-readability-rules

A subtitle has to be read while the viewer is also watching the picture, which is the constraint behind every rule in this guide. The numbers that circulate — 42 characters, two lines, 17 to 20 characters per second — are not arbitrary style preferences; they are what fits in the gap between reading and watching. Knowing where each one comes from makes it much easier to decide when you may break it.

Reading speed is the real constraint

Reading speed is measured in characters per second: take the characters in a cue, spaces included and line breaks excluded, and divide by how long it stays on screen. Netflix's English timed-text guide allows 20 characters per second for adult programming and 17 for children's; many European broadcasters work a little slower still. A cue at 30 characters per second is technically readable by a fast reader who is not looking at anything else, which is not the situation a viewer is in.

The BBC's guidelines reach the same place from a different direction, working in words per minute — roughly 160 to 180 for pre-recorded programmes — and reminding subtitlers that the rate should follow the speech rather than a spreadsheet. Both approaches agree on the important part: when a line is too fast, you extend it or you cut words, and cutting words is usually the better answer.

Condensing is a craft, not a defeat. Spoken language is full of repetitions, false starts and names the viewer already heard; a subtitle that keeps the meaning and drops the filler reads faster and feels more accurate than a literal transcript.

Line length and how many lines

Forty-two characters per line is the modern default for Latin scripts, adopted by Netflix and by the TED translation guidelines among others. The BBC works to a narrower line, in the high thirties. The exact figure comes from screen width and font size, not from typography — a line that is too long forces the eye to travel across the whole picture and back.

Two lines is the ceiling. A third line eats into the picture and, worse, pushes the eye into a scanning pattern that takes longer than reading two lines of the same total length. When a cue genuinely needs three lines, the answer is almost always to split it into two cues.

Balance the two lines rather than filling the first one to the brim. A line of 40 characters followed by a line of 6 looks broken and reads worse than 24 and 22, which is why a decent re-wrap squeezes the column to the narrowest width that still fits the text in two lines.

How long a subtitle should stay up

The usual floor is around five sixths of a second — twenty frames at 24 fps — because anything shorter registers as a flash rather than as text. The usual ceiling is seven seconds: past that, viewers start re-reading a line they have already finished, which is oddly uncomfortable to watch.

Between those limits, duration should follow the length of the text through the reading-speed figure, not the length of the spoken line. A three-word answer that takes four seconds to say does not need a four-second subtitle; it needs about one and a half, timed to the voice.

Consecutive subtitles need a gap, or the viewer cannot tell that the text changed. Two frames — about 80 ms at 24 fps — is the common minimum, and it is also the reason an automatic overlap fix should trim the earlier cue rather than push the later one forward.

Where to break the line

Break at a syntactic joint. Keep an article with its noun, a preposition with the phrase it governs, a first name with its surname, and a verb with its auxiliary. A break that lands between an adjective and the noun it describes forces the reader to hold an incomplete idea across a line, which costs real milliseconds.

When the text contains a comma or a full stop near the middle, break there: punctuation already marks the place where the sentence takes a breath. Only when there is no such joint should you fall back to pure balancing, and even then it is worth checking that the result does not read as two half-thoughts.

Dialogue between two speakers in one cue is set as two lines, each opened with a dash. That convention exists precisely because the line break is doing grammatical work: it separates speakers, so it must not also be separating a phrase.

Shot changes and placement

A subtitle that crosses a cut makes the viewer re-read it, because a change of image resets attention. Professional practice is to snap cue boundaries to shot changes when they fall within a few frames, and otherwise to keep the whole cue inside one shot.

Position matters when the picture has burned-in text. WebVTT cue settings and ASS position tags both exist to move a line to the top of the frame for exactly this reason; plain SRT cannot do it, which is one of the few situations where the format genuinely limits you.

Checking a file before you ship it

Five checks catch nearly everything: cues faster than your reading-speed limit, cues shorter than a second or longer than seven, lines over your character limit, cues with more than two lines, and overlaps. Each one is a number you can compute from the file itself, without watching a frame of video.

SubShiftly shows those numbers beside every cue and turns them red when a limit is passed, so filtering the table to the problem rows tells you in one glance how much work is left. The cleanup pass can then re-wrap lines, trim overlaps, extend cues that are too short and drop the empty ones — and what remains red afterwards is the handful of cues that need a human to shorten the text.

The takeaway

Readability is four numbers: no more than about 42 characters a line, no more than two lines, between one and seven seconds on screen, and no faster than roughly 17 to 20 characters per second. Break lines at phrase boundaries first and balance their lengths second — and when a cue is too fast, shortening the text beats stretching the timing.

Related tool
SubShiftly subtitle editor

Open a subtitle file and fix the timing