Subtitle File Formats: A Complete Guide
Every subtitle format carries the same basic payload: a line of text, a start time, and an end time. Where they diverge is everything else — how they're structured, whether they support styling or positioning, whether they're plain text or binary, and which platforms actually accept them. Pick the wrong one and a broadcaster's system will reject your file, or a styled fansub will show up as a wall of unstyled text.
This guide covers the formats you'll actually encounter: the two that dominate the web, the one built for styling, the ones broadcasters and streaming platforms require, and a few older formats you'll still find in the wild.
Quick reference
| Format | Extension | Type | Where it's used |
|---|---|---|---|
| SubRip | .srt | Plain text | YouTube, Vimeo, video editors, general handoff |
| WebVTT | .vtt | Plain text | HTML5 <track>, web video players |
| Advanced SubStation Alpha | .ass / .ssa | Plain text with styling | Anime fansubs, heavily styled captions |
| Timed Text Markup Language | .ttml / .dfxp | XML | Netflix, Amazon, broadcast/streaming delivery specs |
| Spruce Subtitle File | .stl | Plain text | DVD authoring (Spruce) |
| EBU-STL | .stl | Binary | European broadcast television |
| Scenarist Closed Caption | .scc | Text-encoded binary | US broadcast (CEA-608/708) |
| SubViewer | .sbv / .sub | Plain text | Legacy YouTube uploads |
| VobSub | .sub + .idx | Image-based | DVDs, ripped disc subtitles |
| SAMI | .smi / .sami | XML-like | Older Windows Media Player content |
Text-based formats
Most of what you'll touch day to day is plain text: readable in any editor, easy to script against, and easy to convert. These four cover the vast majority of real-world captioning work.
SubRip (.srt)
The oldest and most widely supported subtitle format, and still the safest default for handoff. A plain-text file of numbered cues, each with a timecode range and one or more lines of text:
1
00:00:01,000 --> 00:00:03,500
Most people watch with the sound off.
SRT has no native support for positioning, color, or fonts — just text and timing. That limitation is also its strength: because there's nothing platform-specific to interpret, virtually every player, editor, and upload form accepts it without complaint. Use it when uploading to YouTube, Vimeo, or Facebook, or when handing files to an editor working in Premiere or Final Cut.
WebVTT (.vtt)
Built for the web and required by the HTML <track> element, which is what powers native captions in an HTML5 <video> tag. Structurally close to SRT, but with a required header and periods instead of commas in timestamps:
WEBVTT
00:00:01.000 --> 00:00:03.500
Most people watch with the sound off.
Beyond the header, VTT adds cue identifiers, positioning (line, position, align), and inline styling through CSS-like cue settings — things SRT can't express. If you're serving video directly from your own site rather than through YouTube or Vimeo, VTT is the format the browser actually expects.
Advanced SubStation Alpha (.ass / .ssa)
Where SRT and VTT handle basic timing, ASS (and its predecessor SSA) handles presentation. It's the format behind heavily styled fan-translated anime: karaoke-style text animation, precise on-screen positioning, custom fonts, colored outlines, and multiple simultaneous style layers. A style block defines fonts and colors up front, and each dialogue line references a style by name:
[V4+ Styles]
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,2,0,2,10,10,10,1
[Events]
Dialogue: 0,0:00:01.00,0:00:03.50,Default,,0,0,0,,Most people watch with the sound off.
ASS is powerful but proprietary to its ecosystem — mainstream video platforms generally don't render its styling natively, so it mostly shows up in desktop players (VLC, MPV) or gets burned directly into the video during export.
SubViewer (.sbv)
An older plain-text format that YouTube used before standardizing on SRT and VTT for uploads. You'll still find .sbv files in caption archives and older export tools:
0:00:01.000,0:00:03.500
Most people watch with the sound off.
There's little reason to target SBV for new work. If you find one, it converts cleanly to SRT since the underlying data (timecodes and text) is identical.
XML-based formats
Broadcast and streaming delivery specs tend to demand XML rather than plain text, because XML gives them a strict, validatable schema for styling, regions, and metadata that a loosely formatted text file can't guarantee.
Timed Text Markup Language (.ttml / .dfxp)
TTML (an earlier draft version was called DFXP) is a W3C standard, and it's the format most major streaming platforms specify for caption delivery — Netflix's own delivery spec is built on an EBU-TT profile of TTML, for example. It defines regions, styling, and timing inside a formal XML document:
<tt xmlns="http://www.w3.org/ns/ttml">
<body>
<div>
<p begin="00:00:01.000" end="00:00:03.500">Most people watch with the sound off.</p>
</div>
</body>
</tt>
If a streaming platform or broadcaster gives you a delivery spec that names a specific caption format, there's a good chance it's a TTML profile. Don't guess — the spec usually pins an exact schema variant, and generic TTML won't always pass their validator.
SAMI (.smi / .sami)
Microsoft's older XML-like caption format, built for Windows Media Player. It's largely obsolete now, but it can still turn up in legacy media archives, particularly older e-learning content built around Windows Media.
Broadcast formats
Television delivery has its own format lineage, shaped by decades-old closed-captioning standards rather than the web.
Two different formats share the ".stl" extension
This trips people up: .stl refers to two unrelated formats depending on who's asking for it.
Spruce Subtitle File is a plain-text format from Spruce DVD-authoring software — a timecode pair and a line of text per cue, using a frame-count timecode:
00:00:01:00,00:00:03:12,Most people watch with the sound off.
EBU-STL is the European Broadcasting Union's binary subtitle format, used across European TV delivery pipelines. It's not human-readable in a text editor, and it packages timecodes, text, and a fixed set of formatting codes into a structure broadcast playout systems ingest directly. If a European broadcaster asks you for an ".stl" file, confirm which one they mean before you deliver — the two are not interchangeable, and only the Spruce format converts cleanly to plain-text formats.
Scenarist Closed Caption (.scc)
The standard format for US broadcast closed captions, encoding CEA-608 (and by extension CEA-708) caption data as text-encoded hex pairs tied to broadcast timecode. It looks nothing like SRT or VTT internally, since it's really a serialized representation of the same signal that used to be embedded in the analog TV broadcast's vertical blanking interval:
Scenarist_SCC V1.0
00:00:01:00 9420 9420 947c 947c d94f d354 20d0 4550 4c45 942c 942c 8080 8080
If a broadcaster asks for SCC, they're asking for a caption file compatible with legacy CEA-608/708 decoding, not just "a caption file with timing."
Image-based subtitles
Not every subtitle is text at all.
VobSub (.sub + .idx)
DVDs store subtitles as bitmap images layered over the video frame, not as text — this is VobSub, split across a .sub file (the image data) and an .idx file (timing and palette info). Because the subtitle is a picture rather than characters, it can't be edited as text, resized without quality loss, or searched. Converting VobSub to a text format like SRT requires OCR, and accuracy depends on font clarity and how clean the disc rip is.
Blu-ray uses a related image-based approach (PGS, .sup files), for the same reason: disc authoring standards were built around burning a rendered image onto the frame, not embedding text.
Picking a format
| Use case | Format |
|---|---|
| HTML5 video on your own site | WebVTT |
| YouTube, Vimeo, Facebook upload | SRT |
| Handoff to Premiere or Final Cut | SRT |
| Captions with heavy styling, positioning, or karaoke effects | ASS |
| Netflix, Amazon, or another streaming delivery spec | TTML (check their exact profile) |
| European broadcast delivery | EBU-STL |
| US broadcast delivery | SCC |
| Subtitles ripped from a DVD or Blu-ray | VobSub / PGS, then OCR to text if you need to edit them |
When in doubt and no platform or spec has told you otherwise, default to SRT for portability or VTT if the file is going straight into a web player.
Converting between formats
Conversions between the plain-text formats (SRT, VTT, SBV) are generally lossless in the direction that adds capability — SRT to VTT, for instance — and lossy in the other direction only if the source used features the target can't express, like VTT positioning that has no SRT equivalent. Converting into or out of a styled format like ASS is lossy by nature: SRT has no styling data to preserve, so anything ASS-specific just gets dropped.
Our subtitle converter handles conversion between SRT, VTT, ASS/SSA, TTML/DFXP, SBV, SMI, Spruce STL, SCC, LRC, and plain text, entirely in the browser, so your file never leaves your device. If you're starting from a video rather than an existing subtitle file, generate the captions first and export straight to whichever format you need.