Blog

Subtitle formats explained: SRT, VTT, ASS, SBV and more

By the Auto Captions team · Published

Six document icons labeled .srt, .vtt, .ass, .sbv, .scc and .ttml, with the .srt file highlighted in yellow and the .vtt file in light blue.
Short answer

Subtitle formats are the file types that store timed text for a video. Use SRT when in doubt, because almost everything accepts it. Use WebVTT for video on your own website, ASS when the styling has to travel with the file, and SCC or TTML only when a broadcaster or distributor asks for them.

Every subtitle file holds the same three things: some text, when it appears and when it goes away. The formats differ in everything around that. Most people only need one or two, until a platform rejects their file or a conversion quietly drops the styling.

Below are the formats you're likely to meet, who accepts which, and what breaks when you convert. Platform details come from each company's help pages as they read in October 2026.

SRT: the default

SRT (SubRip Text) is numbered blocks of plain text: a cue number, a timing line like 00:00:01,000 --> 00:00:03,500, the words, and a blank line. It has no official styling beyond a few HTML-style tags that some players honor, and no positioning at all. That's also why it works nearly everywhere. If you only learn one format, learn this one. Our complete guide to the SRT file goes through it line by line, with the mistakes that stop a file from loading.

WebVTT: SRT for the web, plus positioning

WebVTT (.vtt) grew out of SRT and is the format the HTML <video> element reads through its <track> tag. It starts with a WEBVTT line, uses a dot instead of a comma before the milliseconds, and makes cue numbers optional. The real addition is cue settings. Put line:10% after the timing and the cue moves near the top of the frame, which helps when a lower third or on-screen text would otherwise sit under the captions. Our explainer on what a VTT file is and how WebVTT works covers cue settings and styling.

The caption Hi, I'm Priya from 1.0 to 3.5 seconds written four ways: SRT with a cue number and commas before the milliseconds, WebVTT with a WEBVTT header and dots, SBV with two times joined by a comma, and ASS with a style line and a Dialogue line carrying position tags.
The words and times match in all four. What changes is the punctuation, and whether styling can come along.

ASS subtitles: styling that travels with the file

ASS (Advanced SubStation Alpha) and its older sibling SSA come from the fansubbing world, where they're still the norm. An ASS file has a [V4+ Styles] section that defines named styles (font, size, colors, outline, margins) and an [Events] section with one Dialogue: line per subtitle. Override tags in curly braces change a single line: {\an8} moves it to the top center, {\pos(960,120)} places it at exact pixel coordinates, and {\k50} times karaoke syllables in hundredths of a second. The Aegisub tag reference lists them all.

The catch is support. Desktop players like VLC and mpv render ASS well. Upload platforms and editors mostly don't: ASS isn't on YouTube's list, and it isn't among the formats DaVinci Resolve or Final Cut Pro document for import. If you've styled something in ASS and want people to see it that way, burn it into the video with a player or encoder that renders ASS.

SBV files: YouTube's plain format

An SBV file (SubViewer) is about as simple as subtitles get: a start and end time joined by a comma, like 0:00:01.000,0:00:03.500, the text underneath, and a blank line. No numbers, no arrow, no styling. You'll mostly meet it around YouTube, whose supported caption files page says it recognizes no style markup in SRT or SBV, and wants both saved as plain UTF-8. Outside YouTube, few tools want SBV, so convert it to SRT before taking it anywhere else.

SCC: broadcast captions written in hex

SCC (Scenarist Closed Caption) stores CEA-608 caption data, the closed caption standard of North American TV. You can't read it like the others. Each line is a timecode such as 00:00:01;00 (the semicolon marks drop-frame timing) followed by four-digit hex words that tell a decoder what to draw, where and in which color. It supports roll-up and paint-on captions, placement and a small palette of colors, but it's limited to 32 characters per line.

YouTube calls SCC its preferred format whenever captions are based on CEA-608 features, and Final Cut Pro and Premiere both import and export it. Don't write SCC by hand. Export it from an editor when a spec asks for it.

TTML and DFXP: XML for professional delivery

TTML (Timed Text Markup Language) is the W3C's XML format for timed text. DFXP is its old name, and the TTML2 specification notes the term survives in profile names. It carries regions, styling and positioning, so streaming services and broadcasters base delivery specs on profiles of it such as IMSC1. Apple's iTT is a TTML flavor too. You'll rarely write one by hand: Resolve exports IMSC1 and DFXP, and YouTube and Premiere read TTML.

Subtitle tracks inside MP4 and MKV files

A video container can also hold subtitles as a track the player switches on and off. MP4 carries a 3GPP timed text track, which FFmpeg calls mov_text. MKV is far more flexible: the Matroska spec lists SRT, SSA/ASS, WebVTT and image-based formats like VobSub (from DVDs) and PGS (from Blu-ray). Image-based tracks are pictures of text, so turning them into SRT takes OCR (which is what the original SubRip program did).

With FFmpeg, adding an SRT as a switchable track to an MP4 looks like this:

ffmpeg -i video.mp4 -i talk.srt -map 0 -map 1 -c copy -c:s mov_text -metadata:s:s:0 language=eng out.mp4

That's fine for files people play locally. For uploads, use a separate caption file, which is what YouTube, Facebook and Vimeo all document.

Caption file formats compared

FormatStylingPositioningWhere it's accepted
SRT (.srt)A few tags, if the player honors themNone in the standardNearly everywhere
WebVTT (.vtt)Bold, italic, underline; CSS on the webYes, cue settingsBrowsers, YouTube, Vimeo, Resolve
ASS/SSA (.ass, .ssa)Full: fonts, colors, outlines, karaokeYes, to the pixelDesktop players; rarely platforms
SBV (.sbv)NoneNoneYouTube
SCC (.scc)CEA-608 colors, italics, roll-upYes, on a caption gridBroadcast, YouTube, Final Cut, Premiere
TTML/DFXP (.ttml, .dfxp)YesYes, regionsStreaming delivery, YouTube, Resolve, Premiere

What YouTube, Facebook, Vimeo and editors accept

Converting between formats, and what gets lost

Going from a simple format to another simple format is safe. SRT to WebVTT is mechanical: add the header, swap commas for dots. FFmpeg does it with ffmpeg -i talk.srt talk.vtt, and the free Subtitle Edit converts between dozens of formats.

Going from a rich format to a simple one loses things. We wrote an ASS test file with italics, bold, yellow text, a top placement, an exact position and a karaoke line, then converted it with FFmpeg 8.1:

A table of what survives converting a styled ASS file. Words and times are kept in SRT, WebVTT and SBV. Italic and bold survive in SRT and WebVTT but not SBV. Color and top placement survive only partly in SRT as tags. Exact position and karaoke timing are lost in all three.
Words and timing always survive. Anything about how the text looks mostly doesn't.

A few other things to watch for:

  • Timing precision. ASS stores hundredths of a second and SCC counts frames, so converting into them rounds your times.
  • Line limits. CEA-608 allows 32 characters per line, so long SRT lines get rewrapped or rejected on the way to SCC.
  • Half-supported tags. SRT made from ASS can carry <font color> and {\an8}. Some players obey them, some ignore them, some print them as text.
  • Encoding. Save as UTF-8. YouTube and Vimeo both ask for it, and it fixes accented letters turning into junk.
  • TTML output. FFmpeg's TTML writer dropped the italics from our test SRT, so check the output in a player before you deliver it.

Our rule: keep the richest version as the master and export simpler formats from it. Styling doesn't come back from a round trip.

Getting a file in the format you need

If you have a video and no subtitles yet, our SRT generator transcribes it and gives you a timed file to correct. It exports SRT, VTT and plain text, which covers YouTube, Facebook, Vimeo, Resolve, Final Cut and the web. For ASS, SBV, SCC or TTML, convert the SRT with the tools above. If you'd rather have the text drawn into the picture, the auto captions editor burns it into the video in the style you pick.

Try it now

Try it on your own video

Get a timed SRT or VTT from any video in your browser. Fix the lines, then download. No sign-up.

FAQ

Questions, answered

01

What is the most common subtitle format?

SRT. It is plain text, every major platform and editor reads it, and it is the safe default when you are not sure what a player accepts.
02

Is VTT better than SRT?

For a video on your own website, yes: the HTML video player reads WebVTT natively and it supports positioning. For uploads to platforms and editors, SRT is accepted in more places. Facebook, for example, only takes SRT.
03

Can I upload an ASS file to YouTube?

No. ASS is not on YouTube's list of supported caption files. Convert it to SRT or WebVTT, and expect to lose the styling, or burn the subtitles into the video so they look exactly as designed.
04

How do I open an SBV file?

Any text editor opens it. It holds a start and end time joined by a comma, then the text. To use it outside YouTube, convert it to SRT: add cue numbers, change the time format and replace the comma between the times with an arrow.
05

Do subtitles inside an MP4 work on social media?

Do not count on it. YouTube, Facebook and Vimeo all document uploading a separate caption file. If the text must show everywhere, burn it into the picture instead.

Still have a question? Contact us