CC vs subtitles vs forced narrative
Closed captions, subtitles, and forced narrative are three files for three jobs. One transcript cannot serve all three.
Closed captions, subtitles, and forced narrative are three files for three jobs. A speech-only transcript labelled "CC" is not all three. Search Console still shows this site for the exact string "closed captions v subtitles v forced narratives" (30 impressions, position 11, seven days to 4 September 2026). The click should land on the split, not on a synonym page.
Closed captions are a switch: a sidecar the player draws, which the viewer can turn off. SDH is a content standard: speech plus who is speaking plus non-speech. Forced narrative is the small file of lines a same-language viewer still cannot read — a sign, a letter, foreign speech. Subtitles, in ordinary production talk, are dialogue for someone who can hear the mix and needs the words. Mixing the names is how a muted Reel ships with a perfect .srt in the project folder and no words on screen.
Three files, three viewers
Start with who is watching, not with the extension.
Subtitles assume hearing. The mix is available. The viewer does not know the language, or wants a transcript of the dialogue. The file is speech. It usually does not describe a door slam or name an off-screen speaker. It is a translation or a same-language dialogue track. Call it "subs" in a delivery memo and people will expect every spoken line, not the signs.
Closed captions assume a player with a caption engine. The words ride next to the picture as SubRip, WebVTT, or a platform-native asset. The viewer can disable them. The platform skins them. WCAG's definition of captions is not "dialogue in a sidecar." WCAG 2.2 Understanding: Captions (Prerecorded) (current as of this page) says captions convey spoken dialogue and equivalents for non-dialogue audio needed to understand the programme: sound effects, music, laughter, speaker identification and location. That content is SDH. Carriage is closed. You can ship SDH as closed captions. You can also ship closed captions that are not SDH — a speech-only .srt on YouTube — and that is the usual accident.
Forced narrative assumes a same-language viewer who still cannot read something in the picture or the mix: a newspaper headline, a text message insert, a line spoken in a third language. The file is small on purpose. It often stays on even when captions are off, which is why it is frequently burned in rather than sidecared: the plot depends on it. A full subtitle file is every line. SDH is every line plus non-speech. Burning the English titles into a German master and calling the export localised is none of those three.
Open versus closed is a fourth axis people fold into "CC." Open captions, including burned-in captions, are pixels. They cannot be switched off. Short-form almost always wants open, because a muted autoplay feed will not enable a track. Closed remains the right object for long-form YouTube, courses, broadcast, and any master you still expect to restyle or translate without re-rendering.
You can ship SDH as open captions (the same words burned in). You can ship forced narrative as a closed track (a tiny VTT). The names still do not collapse. Content is what the words cover. Carriage is how those words travel.
What each file actually contains
Write the contents down once so the delivery memo cannot cheat.
| File | Speech | Speaker IDs | Non-speech ([music], a knock) |
On-screen text / foreign lines | Typical carriage |
|---|---|---|---|---|---|
| Subtitles (dialogue) | Yes | Rarely | No | Only if they were spoken | Closed sidecar |
| Closed captions / SDH | Yes | Yes, when needed | Yes, when needed | If it is in the audio or required to follow | Closed sidecar; can also burn |
| Forced narrative | Only the lines a same-language viewer still needs | If that line needs a name | Almost never | Yes — that is the job | Often burned in |
Auto captioners produce the first row and sometimes call it the second. They transcribe speech. They will not invent [door slams] or decide that the Japanese line in an English cut is the only cue that should appear. If the brief is SDH, someone still authors the non-speech cues after the transcript. If the brief is forced narrative, someone still lists the signs and the foreign speech and throws the rest away.
US broadcast completeness does not let you hide in the first row. 47 CFR 79.1 requires television closed captioning to be accurate, synchronous, complete, and placed so it does not block important visual content. Completeness includes speaker identification and non-speech information. A dialogue-only file can be a valid packet and still fail the content bar.
The web is a different stack. WebVTT is what HTML5 <track> reads. Use kind="captions" for SDH, kind="subtitles" for translation-style dialogue, with srclang and a human label ("English SDH", "Spanish"). SRT will move words and times. It will not reliably move italics, positioning, or voice tags. Fine as interchange. Poor as the only web deliverable if you need SDH styling.
Versely's caption tools sit on the open-caption side of the split: styled, auto-transcribed captions burned into the frames, which is the right object for a muted feed. They are not a 608 encoder and they are not a forced-narrative author. For a sidecar, take a plain transcript, edit in speakers and non-speech if the brief is SDH, and author the VTT the embed will load. Forced narrative is an editorial pass on top of that, not a preset named "FN."
One transcript cannot be all three
The failure is always the same: one speech file, three destinations, a bounce from at least one of them.
A broadcast ingest that asked for SDH completeness gets a YouTube auto-caption export. A website <track> that asked for Spanish subs gets an English SDH file with [laughter] in a language the viewer is trying to learn. A foreign-language theatrical that needed forced narrative gets a full English subtitle burn, so the German audience reads every English line on a German picture. A TikTok that needed burn-in gets a closed SRT the feed will never draw.
The source of truth is an SDH timed-text master when accessibility is in the brief: speakers, non-speech, times. Everything else is a render of that master.
- Short-form / ads. Burn speech as design. Mute viewers will not enable a track. SDH non-speech only if a sound is the joke or the cut; otherwise the picture is already doing the work. Forced narrative almost never applies unless the ad contains a sign the viewer must read.
- YouTube long-form / course player. Closed SDH as captions. Dialogue-only subs as a second language track, labelled as subtitles, not as captions.
- Localisation. Forced narrative on the original-language master. Full subs or SDH per target language as separate files. Never burn the English title card into the German cut and call it done.
- US linear. SDH content inside 608/708 carriage. A .srt from an auto-captioner is not that package.
Caption timing is a fourth job after you pick the file. A late SDH cue is still a late cue. Burn-in freezes the clock into pixels; a sidecar can still be nudged. Lock the cut before you caption either way.
How to label the delivery so it ships
Name the file by job, not by habit.
film_en.sdh.vtt— English SDH, closed, for the player.film_es.subs.vtt— Spanish dialogue subs, not SDH unless you authored non-speech in Spanish.film_en.forced.vttor a burned forced pass — only the signs and foreign lines.- The short-form MP4 with burned-in captions — a different object, for the feed.
Do not upload an SRT and assume a Reel will show it. Do not hand a client a silent MP4 plus a .srt for TikTok. Do not treat a burned English hook as a closed-caption deliverable for a university player.
The AI caption generator transcribes and burns. That is one job: open captions for mute autoplay. The glossary pages for closed captions, SDH, and forced narrative are the three definitions this query is actually asking for. Use all three names in the memo. Use one file per name.
If the destination is a feed, burn the speech. If the destination is a player with a CC button, ship a closed track whose content matches the audience: SDH for d/Deaf and hard-of-hearing, subs for language, forced for the handful of lines that must appear. The search query lists three things because production still ships one.
Caption the short-form cut in the generator, then author the sidecar from the transcript. Start that split from the studio rather than renaming one export three times.
FAQ
Are closed captions the same as subtitles?
No. Closed captions name a switch — a track the viewer can turn off. Subtitles name dialogue for someone who can hear the mix. SDH is the caption content (speech plus non-speech). You can put SDH in a closed track. You can also put dialogue-only subs in a closed track. The file is not "CC" until you say what is in it.
When do I need forced narrative instead of full subs?
When the audience already understands the spoken language and only needs the signs, letters, or foreign lines. Full subs on that master are noise. Forced narrative is the small file. It is often burned in because the plot depends on those lines staying visible with captions off.
Can one auto-caption export cover all three?
No. Auto captioners transcribe speech. They do not author [music], speaker IDs, or a forced-only cue list. Use the transcript as a start for SDH and as a source to delete from for forced narrative. Burn-in for short-form is a fourth render, not a synonym.