Caption and Subtitle Formats
Updated
SRT, WebVTT, SCC, TTML and IMSC compared; CEA-608 and 708; SDH versus closed captions; what each platform accepts; and the line-length and reading-speed rules your file will be checked against.
Captions, SDH, Subtitles and Forced Narratives
Delivery lists use these terms precisely, and a file of the wrong kind fails QC even if the format is right. SMPTE's ST 2052-1 draws the core line: a caption describes all the sound, usually in the same language; a subtitle carries the dialogue, usually translated.
- Closed captions (CC)
- The dialogue and the sounds that matter, for viewers who can't hear them, switched on by the viewer. In the US the term usually means the broadcast systems, CEA-608 and CEA-708.
- SDH
- Subtitles for the deaf and hard of hearing: caption content (speaker IDs, sound cues in brackets, music) written in a subtitle format and style. Netflix makes SDH, not closed captions, for its branded titles.
- Subtitles
- A translation of the dialogue for viewers who can hear but don't speak the language. No sound cues.
- Forced narratives
- Subtitles that show even with subtitles off: on-screen text and foreign-language lines the audience is meant to understand. Delivered as their own file, not burned in, by streamers that ask for a clean picture.
- Open or burned-in
- Text rendered into the picture. Always visible, can't be switched off or translated, and most streamers reject it on the main master.
The Formats
Two families cover almost everything: simple text formats (SRT, WebVTT) and XML formats built on W3C's TTML (DFXP, SMPTE-TT, IMSC, EBU-TT, iTT). SCC stands apart: it is broadcast line-21 data in a text file.
| Format | Standard | What it can do | Where you'll need it |
|---|---|---|---|
| SRT (SubRip).srt | None. Described by the Library of Congress as a de facto format. | Numbered cues, times as hh:mm:ss,mmm (comma), plain text with basic bold and italic. No positioning. | YouTube, Vimeo, Amazon, aggregators such as Filmhub |
| WebVTT.vtt | W3C Candidate Recommendation Draft (May 2026) | Starts with WEBVTT; times as hh:mm:ss.mmm (full stop); cue settings for line, position and alignment; CSS styling; UTF-8 only. | HTML5 video, HLS, YouTube, Vimeo |
| SCC (Scenarist).scc | None public; carries CEA-608 data | Hex-encoded 608 byte pairs against 29.97 timecode. Pop-on, roll-up and paint-on, 32 characters a row. | US broadcast and cable, Apple, Amazon, YouTube |
| TTML / DFXP.ttml, .dfxp, .xml | W3C TTML1 (3rd ed.) and TTML2 Recommendations | XML with full styling, regions and timing. DFXP is TTML1's old name. | Amazon, YouTube, studio exchange |
| SMPTE-TT.xml | SMPTE ST 2052-1 | TTML profile that can carry 608 and 708 data and image subtitles. The FCC's safe-harbor format for online captions. | US online delivery of TV programs, Amazon |
| IMSC.ttml, .xml | W3C IMSC 1.0.1, 1.1, 1.2; IMSC Text Profile 1.3 (May 2026) | Constrained TTML for distribution, in text and image profiles up to 1.2; 1.3 is text only. Used inside IMF. | IMF packages, Netflix (IMSC 1.1 for Japanese), streaming players |
| EBU-TT and EBU-TT-D.xml | EBU Tech 3350 and Tech 3380 | TTML-based exchange (EBU-TT) and online distribution (EBU-TT-D) formats | BBC and other European broadcasters |
| EBU STL.stl | EBU Tech 3264 (1991) | Binary teletext-era exchange format | European broadcast, Amazon |
| iTT.itt | Apple subset of TTML1 | One div, SMPTE timebase, drop or non-drop NTSC, sans-serif only | Apple TV app subtitles and SDH |
Sources: W3C WebVTT, W3C IMSC, Library of Congress on SubRip, SMPTE ST 2052-1:2013, EBU Tech 3264, 3350 and 3380
SRT vs WebVTT
The two look alike, and converting between them is the most common caption fix. The differences that break players: WebVTT needs the WEBVTT header, uses a full stop before the milliseconds where SRT uses a comma, doesn't need cue numbers, and must be UTF-8. SRT has no fixed encoding, so save it as UTF-8 too; YouTube and Vimeo require it.
SRT
1 00:01:02,500 --> 00:01:05,000 Where were you last night? 2 00:01:05,250 --> 00:01:07,900 [door slams] Out.
WebVTT
WEBVTT 00:01:02.500 --> 00:01:05.000 line:85% Where were you last night? 00:01:05.250 --> 00:01:07.900 [door slams] Out.
CEA-608 and CEA-708: Broadcast Captions
Now published by the CTA as CTA-608-E and CTA-708-E, these are the caption systems built into US television. US broadcast and cable delivery specs commonly ask for captions as an SCC file, which holds 608 data.
- • 608 was designed for line 21 of analog NTSC: a grid of 15 rows by 32 columns, up to 4 rows of captions at once, in roll-up, pop-on or paint-on style, on channels CC1 and CC2 (field 1)
- • 708 is the digital (ATSC) system. FCC rules require decoders to handle six caption services and show up to 4 rows, at 32 characters a row on 4:3 or 42 on 16:9
- • Pop-on is the norm for prerecorded programs; roll-up for live and news
- • SCC timecode is 29.97. Apple, for one, takes SCC only at 29.97 timecode whatever the video's frame rate, with drop or non-drop matching the source's timecode; 23.976, 24 and 25 fps sources use non-drop
Sources: 47 CFR 15.119 (2011 edition), 47 CFR 79.102, Apple Video and Audio Asset Guide (v5.3.19)
What Each Platform Accepts
| Platform | Accepted formats and rules |
|---|---|
| YouTube | SRT, SBV, WebVTT, TTML, DFXP, SAMI, SCC (preferred for 608 captions), EBU STL and others. SRT and SBV must be plain UTF-8. |
| Vimeo | SRT and WebVTT only, UTF-8; Vimeo recommends WebVTT |
| Amazon Prime Video | DFXP/TTML, SCC, SRT, SMPTE-TT, iTT, EBU STL, Lambda Cap (required for Japanese). Not WebVTT. English captions required for every US title; no timecode offset. |
| Apple TV app | Closed captions as SCC at 29.97 timecode, whatever the video rate; subtitles and SDH as iTT. Captions are required on US feature deliveries. |
| Netflix | TTML-based files written to its Timed Text Style Guide; IMSC 1.1 for Japanese only. The full accepted-formats list sits in a delivery spec behind a Netflix login, so check with your Netflix contact. |
Aggregators set their own rules: Filmhub, for example, asks for English SDH as SRT on every title (see the aggregator delivery guide). Festival screeners usually want subtitles burned in; the festival guide lists each festival's rule.
Line Length and Reading Speed
There is no single standard. Each platform and broadcaster publishes its own, and they count differently: Netflix in characters a second, the BBC and DCMP in words a minute.
| Rule set | Line length | Reading speed | Duration |
|---|---|---|---|
| Netflix, English (US) | 42 characters, 2 lines | 20 characters a second (adults), 17 (children) | 5/6 s to 7 s, 2-frame gaps |
| BBC (v1.2.5, March 2026) | 37 characters for broadcast; 68% of the width for 16:9 online; 2 lines | 160 to 180 words a minute | About 0.3 s a word |
| DCMP Captioning Key (US education) | No more than 2 lines preferred | 130, 140 or 160 words a minute by audience level | 40 frames (1 s 10 frames) to 6 s |
| CEA-608 (US broadcast) | 32 characters a row, up to 4 rows | Not set by the standard; the FCC asks for a readable speed | — |
| CEA-708 decoders, 16:9 | 42 characters a row (32 if the captions must also suit 4:3), up to 4 rows | — | — |
To compare: 160 to 180 words a minute is 0.33 to 0.375 seconds a word, which the BBC states itself. A two-line Netflix subtitle of 84 characters needs 4.2 seconds at 20 characters a second. The Netflix delivery guide has the rest of its timed text rules.
Retiming Captions for a New Frame Rate
Caption times are clock times, so a file made for one frame rate drifts if the picture changes speed. A 23.976 program sped up to 25 fps for a 50 Hz delivery plays 4.27% faster and runs shorter; every cue has to move with it. Converting 29.97 drop-frame to non-drop changes the timecode labels but not the clock time, so time-based formats (SRT, WebVTT, TTML in seconds) don't change; frame-based ones (SCC, SMPTE-timebase TTML) must be recalculated.
new time = old time × source fps ÷ target fpsApply it to every in and out time. Real NTSC rates are fractional: 23.976 is 24000/1001.
Example: A cue at 1:00:00.000 in a 23.976 program, sped up to 25 fps
- Calculation:
- 3,600 s × 23.976 ÷ 25
- Result:
- 3,452.547 s, or 57:32.547
The speed and duration change for any pair of rates is what Speed Change works out, and the Timecode Calculator converts frame counts and timecode at each rate. Both have free browser versions: the speed change calculator and the timecode converter.
US Rules: FCC Caption Quality and Online Captions
- • Quality (47 CFR 79.1(j)): captions on US television must be accurate, synchronous, complete and appropriately placed: the spoken words in order without paraphrase, starting and ending with the speech, running the length of the program, and not covering faces, on-screen text or graphics.
- • Online (47 CFR 79.4): a full-length program shown on US TV with captions must carry captions when it is put online, at the same quality. Clips have been covered since 2016 and 2017. SMPTE-TT is the safe-harbor format.
Sources: 47 CFR 79.1, 47 CFR 79.4 (eCFR, current to October 2026)
Caption Delivery Checklist
- Read which kind the spec wants: CC, SDH, subtitles or forced narratives, and for which languages
- Deliver in a format on the platform's list; WebVTT is not on Amazon's, for example
- Save text formats as UTF-8
- Start times at the program's first frame unless the spec gives an offset; Amazon allows none
- Check line length and reading speed against the platform's own style guide
- Retime the file whenever the picture changes speed or the cut changes
- Watch the captions against picture and sound, start to finish, before delivery
Questions
What is the difference between SRT and WebVTT?
WebVTT starts with a WEBVTT header, puts a full stop before the milliseconds where SRT uses a comma, doesn't need cue numbers, supports positioning and CSS styling, and must be UTF-8. SRT has no formal standard and no fixed encoding.
What is the difference between SDH and closed captions?
Both carry dialogue plus speaker IDs and sound cues for deaf and hard-of-hearing viewers. Closed captions in the US usually means the broadcast systems, CEA-608 and CEA-708. SDH is the same content written in a subtitle format and style; Netflix makes SDH, not closed captions, for its branded titles.
What is an SCC file?
A Scenarist Closed Caption file: CEA-608 caption data as hex-encoded byte pairs against 29.97 timecode. Apple takes SCC only at 29.97 timecode whatever the video's frame rate, with drop or non-drop matching the source.
What is the difference between CEA-608 and CEA-708?
608 was built for line 21 of analog NTSC: a 15-row by 32-column grid with up to 4 rows of captions at once. 708 is the digital ATSC system; FCC rules require 708 decoders to handle six caption services and show up to 4 rows, at 42 characters a row on 16:9.
Which caption formats does Amazon Prime Video accept?
DFXP/TTML, SCC, SRT, SMPTE-TT, iTT, EBU STL and Lambda Cap. WebVTT is not on the list. English captions are required for every US title, with no timecode offset.
How fast should subtitles be?
There is no single standard. Netflix allows up to 20 characters a second for adult English programs and 17 for children's. The BBC recommends 160 to 180 words a minute. The DCMP Captioning Key sets 130, 140 or 160 words a minute by audience level.