Reading speed for on-screen text and speech: the parameters to check against
How long a text overlay must stay up and how many words a voice can carry per second, given as parameters you measure on yourself, with the formula and the two failure modes: unreadable, and slow.
READING SPEED, the parameters (not studies: measure them on yourself and your viewers) On-screen text: 2-3 words per second of hold time, after a 0.5 s entrance. So a 6-word overlay stays at least 2.5-3.5 s. Phone, muted, one hand: use 2 words per second. Desktop, sound on, familiar words: 3. Speech: 150-170 words per minute for narration; 165 wpm is a usable default. A 55-word line is about 20 s; 75-100 words fit 30-40 s. Subtitles: 2 lines of about 32 characters, held 1-6 s; under 1 s is a flash the eye cannot land on, over 6 s means the cue should be split. The check, for every overlay: 1. Count the words. Divide by 2.5. That is the minimum seconds on screen. 2. If the voice says something else while the text is up, the text gets the shorter end: max 5 words. 3. If the hold is longer than the formula by 2x, the text is a title card and needs a picture change under it. 4. Read the whole video with the sound off, at arm's length, on a phone. Any overlay you could not finish reading gets fewer words, not a longer hold. When asking an agent for overlays, give it these numbers: 'Max {5} words per overlay, each on screen for at least words/2.5 seconds, total overlay time under {40} percent of the video.'
Paste into your assistant as the first message of a new chat; fill the braces first.
Steps
- Measure your own narration speed once: read 100 words aloud, time it, write the wpm in your project notes. Scripts are budgeted from that number from now on.
- Put the words-per-second rule into every prompt that produces overlays, so the agent counts instead of guessing.
- Test on the slowest reader you know, on a phone. Their number is the parameter.
Tips
- An overlay that repeats the spoken sentence is read twice at two speeds and feels slow. Put the number or the name in text, the sentence in voice.
- Platform UI covers the bottom of a vertical frame; text in that zone has a hold time of zero because it is never seen.
| works with | By hand: No tool needed: a checklist or a technique. · CapCut / any editor: A manual recipe for any editor. · Claude: Paste into claude.ai or the Claude app. · Any LLM: Model-agnostic: Gemini, Mistral, a local model. |
| cost | Free. No API, no key. |
| status | Unverified: written from the technique, not yet run end to end by us. |
| license | CC BY 4.0 for the text here; skills are MIT. |
| updated | 2026-11-01 |
| for agents | reading-speed-on-screen-text-parameters.md |
Related
Burned subtitles for 9:16: position, lines, characters, colour, as parameters
Settings for subtitles burned into vertical video for muted feeds: above the platform UI, two lines, about 32 characters each, white with a dark outline. Starting values, checked on a phone.
Cut any script to 55 words: the 20-second rewrite prompt
A rewrite prompt that compresses a script to 55 words (about 20 seconds at 165 wpm) without losing the number, the name or the ask, and reports what it removed so you can argue.
Accessible on-screen text: contrast, the bottom 20 percent, no flashing
A checklist for text that everyone can read, including people watching muted, on a small screen, in sunlight, or with photosensitivity. Eight checks, each with the parameter to test against.
Three caption variants plus hashtags, with per-platform length limits
An agent prompt that writes three captions (short, story, question) and a hashtag set per platform, counting characters and hashtags against limits you paste in from today's upload form.
Hook text on screen: a plan for the first three seconds, word by word
A prompt that plans what text appears in the first 3 seconds of a vertical video: the words, the moment each appears, the hold, what the picture does under it. Written so the hook works muted.
Burn subtitles with ffmpeg: the command with size, outline and margin
One ffmpeg command that burns an SRT into a 9:16 video with white text, a dark outline and the block held above the platform UI, plus the check that your ffmpeg build can run it at all.