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.

FormatStandardWhat it can doWhere you'll need it
SRT (SubRip).srtNone. 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.vttW3C 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).sccNone public; carries CEA-608 dataHex-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, .xmlW3C TTML1 (3rd ed.) and TTML2 RecommendationsXML with full styling, regions and timing. DFXP is TTML1's old name.Amazon, YouTube, studio exchange
SMPTE-TT.xmlSMPTE ST 2052-1TTML 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, .xmlW3C 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.xmlEBU Tech 3350 and Tech 3380TTML-based exchange (EBU-TT) and online distribution (EBU-TT-D) formatsBBC and other European broadcasters
EBU STL.stlEBU Tech 3264 (1991)Binary teletext-era exchange formatEuropean broadcast, Amazon
iTT.ittApple subset of TTML1One div, SMPTE timebase, drop or non-drop NTSC, sans-serif onlyApple 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

PlatformAccepted formats and rules
YouTubeSRT, SBV, WebVTT, TTML, DFXP, SAMI, SCC (preferred for 608 captions), EBU STL and others. SRT and SBV must be plain UTF-8.
VimeoSRT and WebVTT only, UTF-8; Vimeo recommends WebVTT
Amazon Prime VideoDFXP/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 appClosed captions as SCC at 29.97 timecode, whatever the video rate; subtitles and SDH as iTT. Captions are required on US feature deliveries.
NetflixTTML-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 setLine lengthReading speedDuration
Netflix, English (US)42 characters, 2 lines20 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 lines160 to 180 words a minuteAbout 0.3 s a word
DCMP Captioning Key (US education)No more than 2 lines preferred130, 140 or 160 words a minute by audience level40 frames (1 s 10 frames) to 6 s
CEA-608 (US broadcast)32 characters a row, up to 4 rowsNot set by the standard; the FCC asks for a readable speed—
CEA-708 decoders, 16:942 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 cue time after a speed change
new time = old time × source fps ÷ target fps

Apply 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.