Caption for silent viewing by designing the video to work without sound in the first place, then adding captions as reinforcement rather than as a rescue. Captions pasted onto a video that depends on its voiceover produce a wall of text nobody reads. The videos that hold muted attention are the ones where the picture carries the meaning and the captions confirm it.
Setup
Decide two things before you caption anything: whether captions are burnt in or uploaded, and whether the piece is narration-led or picture-led. Both decisions change how you write them.
Burnt-in captions are part of the video file. They always appear, you control the typography completely, and they cannot be turned off or translated by the platform.
Uploaded caption files (SRT or VTT) are separate, can be toggled, are used for accessibility tooling, and can be auto-translated. They render in the platform's own style, which you do not control.
The practical answer for most social video is both: burnt-in for design control and an uploaded file for accessibility and reach.
The rules that make captions readable
Two lines maximum, about 32 to 42 characters per line. Three-line captions cover the picture and get skipped.
One idea per caption card. Split at natural clause boundaries, not at arbitrary character counts, because a caption broken mid-phrase reads as two half-thoughts.
Hold each card at least one second. Cards flashing faster than that cannot be read, which is common in auto-generated word-by-word captioning styles.
Place them in the safe area. Platform UI covers the bottom of vertical video, so captions sitting at the very bottom get hidden behind buttons and usernames. Position them in the lower-middle third rather than the true bottom.
High contrast, always. A background plate, a stroke, or a shadow. Captions that rely on the footage being dark enough will fail on the one shot that is not.
Do not caption what is visible. If the frame shows the product being opened, caption the point, not the action.
Designing for sound-off before captioning
The caption layer works when the video is already legible muted.
Show the subject in the first frame, not after a title card.
Use text for the hook, not narration. The first two seconds have to communicate without audio because that is when the decision to keep watching happens.
Demonstrate rather than describe. Sound-off video is a visual medium, and anything explained only in voiceover is invisible to a large share of the audience.
Design one key frame that carries the message on its own, for the viewer who watched with the phone face-down.
Where generated video changes things
Two practical notes.
Generated clips increasingly come with synchronized audio by default. On 8frame, Gemini Omni Flash always generates audio and Veo and Kling models make it optional, which matters for cost: a silent Veo 3.1 Standard 8-second clip is 224 credits against 448 with audio, and silent Kling v3 Standard at 5 seconds is 57 against 86. If the piece is caption-led with a music bed, generating silent is half the price.
Second: caption text is the one element that consistently breaks in generated frames. Do not prompt for on-screen text and expect it to be correct. Generate clean footage and add captions in the edit, where you control the typography and the spelling.
FAQ
Do captions actually improve performance? Platforms and creators widely report better retention on captioned video, and accessibility guidance requires captions regardless. We do not have a first-party number to cite, and treat any specific percentage you see quoted with suspicion unless it names its source.
Burnt-in or uploaded captions? Both. Burnt-in for design control on social, uploaded for accessibility and platform translation.
How fast should captions move? No faster than one card per second, split at clause boundaries. Word-by-word styles look energetic and reduce comprehension.
Design the piece muted, generate silent where the model lets you, and add the caption layer in the edit. The 8frame canvas is free and unlimited, and generation is paid from $19/month.