The five formats you will actually meet
Subtitle files are plain text. The differences are in how timestamps are written and how much styling the format can carry. That is the whole story, and it explains almost every compatibility problem you will run into.
| Format | Extension | Timestamp | Styling | Positioning | Typical use |
|---|---|---|---|---|---|
| SubRip | .srt | 00:00:01,000 | Inline <i><b><u> | No | Universal delivery, desktop editors |
| WebVTT | .vtt | 00:00:01.000 | Inline plus STYLE blocks | Yes | HTML5 video, streaming, broadcast |
| ASS / SSA | .ass .ssa | 0:00:01.00 | Full script, karaoke, fonts | Yes | Fansubbing, heavily styled releases |
| SBV | .sbv | 00:00:01.000 | None | No | Legacy YouTube caption export |
| TTML / DFXP | .ttml .xml | 00:00:01.000 | XML styling | Yes | Broadcast and streaming delivery specs |
SubRip (.srt)
The de facto interchange format. Each cue is a sequence number, a timestamp line using a comma as the decimal separator, the text, then a blank line. Nothing else. That minimalism is exactly why it works everywhere — and why it cannot express position or styling beyond inline italics, bold and underline.
WebVTT (.vtt)
WebVTT is a W3C specification designed for the web. It looks like SubRip with a WEBVTT header and a period instead of a comma, but it adds real capability: NOTE comments, STYLE blocks that behave like scoped CSS, regions, voice spans for identifying speakers, and per-cue settings such as line: and align:.
It is the only format an HTML5 <track> element accepts. If you are publishing video on a web page, you need WebVTT — see adding subtitles to HTML5 video.
ASS and SSA (.ass, .ssa)
Advanced SubStation Alpha is a rendering format rather than a caption container. It carries a full stylesheet, font choices, karaoke timing and per-character effects. It is the standard in fansubbing and in any workflow where captions are part of the visual design. Most players and editors do not support it, so outside that world it is rarely a delivery format.
SBV (.sbv)
A YouTube-era export format that resembles WebVTT but has no header, no styling and no positioning. You will mostly meet it when downloading older captions from the platform. Convert it to SubRip or WebVTT for anything else.
TTML and DFXP (.ttml, .xml)
Timed Text Markup Language is an XML-based specification used in broadcast and by streaming services delivering to specific device profiles. It is verbose and rarely hand-edited, but it is what professional delivery specifications usually ask for.
How to identify a subtitle file
Open it in a plain text editor and read the first few lines.
- Starts with
WEBVTT→ WebVTT. - Starts with
[Script Info]→ ASS or SSA. - Starts with
<?xmlor<tt→ TTML. - Starts with a number, then a line containing
-->with a comma → SubRip. - Contains
-->with a period but noWEBVTTheader → SBV, or a WebVTT file missing its header.
Never trust the file extension alone. Files get renamed constantly, and a .vtt that begins with a cue number and a comma is SubRip content carrying the wrong name.
Which format should you deliver?
Web page or browser player: WebVTT, because it is the only format the browser reads. Use the SRT to VTT converter.
Desktop editor, mobile player or a platform upload box: SubRip. It is the most widely accepted and the least likely to be rejected. Start from the VTT to SRT converter if you have WebVTT.
Broadcast or streaming specification: follow the specification. It will name the format, and it will also mandate things a converter cannot guess — maximum characters per line, minimum and maximum cue duration, reading speed limits.
Captions as visual design: keep ASS as the master and generate a plain delivery copy, accepting that positioning and styling will be lost.
Reading speed is a constraint no format enforces
Every format above will happily store a cue containing three dense lines displayed for half a second, and none of them will warn you. Broadcast and streaming guidelines typically land in the range of about 15 to 20 characters per second for adult audiences, and lower for children or for content that will be read in a second language. If a cue feels too fast, it is too fast — split it or shorten the text. No tool can fix that for you, because it is an editorial decision.