Subtitle and caption formats explained

There are more subtitle and caption formats than anyone needs, and they exist for good reasons: the web, desktop players, anime, YouTube, music, and broadcast television each grew their own. This is a plain-language reference to the ones you will actually meet, what sets them apart, and how to move a file from one to another without losing what matters.

How subtitle formats differ

Underneath the extensions, formats vary along a few axes. Knowing them makes the whole landscape easier to read:

  • Timing model. Most formats stamp each cue with a start and end time. A few, like MicroDVD, count in video frames instead, which means they only line up if you also know the video's frame rate.
  • Styling. Some formats carry only text and timing. Others can set fonts, colours, outlines, and exact on-screen position. The more a format can style, the less portable it tends to be.
  • Text, XML, or binary. Most are plain text you can open in any editor. A couple are XML, and one common broadcast format, EBU STL, is binary and unreadable without a converter.
  • Where it lives. A format is usually shaped by its home turf: the web, a media player, YouTube, a karaoke app, or a broadcast delivery pipeline.

The practical upshot: converting from a richer format to a simpler one keeps the text and timing but drops whatever the simpler format cannot hold, such as styling or precise positioning. That is normal, and usually the point.

Every format at a glance

FormatExtensionTimingStylingWhere you meet it
SubRip.srtTimestampsNoneEverywhere; the default
WebVTT.vttTimestampsLimited (position, CSS)The web, HTML5 video
Advanced SubStation Alpha.assTimestampsFullAnime, fansubs, styling
SubStation Alpha.ssaTimestampsMost of ASSOlder SSA projects
YouTube SBV.sbvTimestampsNoneYouTube Studio captions
MicroDVD.subFrame numbersBasic inlineOld players; needs frame rate
SubViewer.subTimestampsMinimalOlder player downloads
SAMI.smiTimestampsCSS-likeWindows Media Player era
TTML.ttml, .xmlTimestampsFull (XML)Streaming, professional delivery
DFXP.dfxpTimestampsFull (XML)A TTML profile; older streaming
Scenarist SCC.sccDrop-frame timecodeBroadcast (CEA-608)US broadcast closed captions
EBU STL.stlTimecodeBroadcastEuropean broadcast exchange
LRC.lrcTimestamps per lineNoneMusic players, karaoke

Everyday subtitles: SRT and WebVTT

SubRip (.srt) is the one to reach for when you just need it to work. It is plain text: a cue number, a line of timecodes like 00:00:01,000 --> 00:00:04,000 with a comma before the milliseconds, then the text. It has no real styling of its own, and that simplicity is why nearly every player, site, and editor reads it. Most conversions on this site pass through SRT for exactly that reason.

WebVTT (.vtt) is SRT's web-native cousin. It opens with a WEBVTT header, uses a dot before the milliseconds instead of a comma, and adds cue settings for position and alignment plus optional CSS styling. It is the format the HTML5 <track> element expects, so it is what you want for browser and streaming playback. Move between the two with SRT to VTT and VTT to SRT, and see SRT vs VTT for the finer differences.

Styled subtitles: ASS and SSA

Advanced SubStation Alpha (.ass) is what you use when the look matters. Its [Script Info], [V4+ Styles], and [Events] sections define fonts, colours, outlines, and on-screen position, and override tags like {\i1} or {\pos(...)} control styling cue by cue, including karaoke timing. It is the standard in anime fansubbing. SubStation Alpha (.ssa) is its older predecessor, with V4 styles and fewer features. Flatten either to plain SRT with ASS to SRT or SSA to SRT, keeping the text and timing while the styling drops away, or go the other way with SRT to ASS to start adding a look. SRT vs ASS compares them in depth.

YouTube captions: SBV

SBV (.sbv) is the format YouTube Studio hands you when you download captions. It is plain text with a single line of comma-separated start and end times, such as 0:00:01.000,0:00:04.000, followed by the caption text, with a blank line between cues. It holds no styling. To edit a YouTube caption file in a normal player or editor, convert it with SBV to SRT or SBV to VTT; going back, SRT to SBV prepares a file for upload. See SBV vs SRT for the details, and Clean YT Captions for tidying auto-generated ones.

Player and legacy formats: .sub and SAMI

The .sub extension covers two unrelated formats. MicroDVD is frame-based: each line looks like {123}{456}text, where the numbers are start and end frames rather than times, so it only lines up if you know the video's frame rate. SubViewer is the time-based kind, with ordinary timecodes. Both convert cleanly with SUB to SRT, which asks for the frame rate when the file turns out to be MicroDVD.

SAMI (.smi) is Microsoft's Synchronized Accessible Media Interchange, an HTML-like format with <SYNC> tags and CSS-style formatting, common in the Windows Media Player era. Turn it into something modern with SMI to SRT.

Broadcast and professional: SCC, EBU STL, TTML, and DFXP

These are delivery formats, built for television and streaming pipelines rather than casual playback. Scenarist SCC (.scc) holds CEA-608 captions, the closed captioning that rode along with analog US television, stored as rows of hexadecimal bytes with a drop-frame timecode. EBU STL (.stl), defined by EBU Tech 3264, is the European broadcast subtitle exchange format; it is binary, so it looks like gibberish in a text editor. TTML is the W3C Timed Text Markup Language, an XML format that underpins professional and streaming caption profiles, and DFXP (.dfxp) is an older profile of TTML you will still meet in some streaming and Flash-era deliveries.

Pull an editable script out of any of them with SCC to SRT, EBU STL to SRT, TTML to SRT, and DFXP to SRT. The text and timing come across; the broadcast layer of colour, boxing, and precise positioning does not, because SRT has nowhere to put it. For the full picture, read broadcast subtitle and caption formats explained.

Music and karaoke: LRC

LRC (.lrc) is not a subtitle format at all but a lyric one, designed to scroll words in time with a song. Each line is prefixed with a timestamp like [01:23.45]. Enhanced LRC goes further, tagging individual words with inline times for word-by-word karaoke highlighting. Bring lyrics into the subtitle world with LRC to SRT, or the reverse with SRT to LRC, and build word-level files with Enhanced LRC.

Text and data exports

Sometimes you do not want a subtitle file at all, you want the words or the data. The site also reads and writes plain text, documents, and tables: a clean transcript with Get Transcript or SRT to TXT, a Word file with SRT to DOCX, a PDF, or a spreadsheet of cues with SRT to CSV. In the other direction, AI transcription output from tools like OpenAI Whisper becomes subtitles with Whisper JSON to SRT and JSON to SRT.

Converting between them

The rule of thumb is simple: you can always move down to a simpler format and keep the text and timing, and you can move up to a richer one, though the extra capability starts empty until you use it. Converting ASS to SRT drops styling; converting SRT to ASS gives you styling to add. For the complete set of what converts to what, see the format conversion table, or start from all tools. Everything runs in your browser, and your file is never uploaded.

FAQ

What is the most widely supported subtitle format?

SubRip (.srt). Almost every media player, video site, and subtitle editor reads it, which is why it is the safe default and the format most conversions pass through. It is plain text with numbered cues and simple timecodes, and it carries no styling, which is exactly what makes it so portable.

What is the best subtitle format for the web?

WebVTT (.vtt). It is the format the HTML5 <track> element expects, so it plays natively in browsers and across streaming players. It looks a lot like SRT but adds a WEBVTT header, a dot rather than a comma in timecodes, and cue settings for position and alignment. Convert with SRT to VTT.

Which subtitle format supports the most styling?

Advanced SubStation Alpha (.ass). It gives full control over fonts, colours, outlines, on-screen position, and karaoke timing. It is the standard in anime fansubbing and anywhere the look matters as much as the words. Converting ASS to a plainer format keeps the text and timing but drops the styling, because simpler formats have nowhere to store it.

Should I use SRT or WebVTT?

It depends where the file is going. For an HTML5 video player or a streaming workflow, use WebVTT. For a desktop player, a download, or maximum compatibility, use SRT. The two are close cousins and convert cleanly in either direction. See SRT vs VTT for the details.

How do I convert between subtitle formats?

Drop the file into the matching converter and download the format you need. Every converter here runs entirely in your browser, so your file is never uploaded. The format conversion table lists every from-and-to pairing the site supports.