SRT vs VTT: what's the difference and which should you use?
SRT and VTT look almost identical, but they are not interchangeable. One plays everywhere; the other is the only format a web page will accept. Here is when to reach for each.
Open an SRT and a VTT side by side and you would be forgiven for thinking they are the same thing. Both are plain text, both number their lines, both pair a stretch of dialogue with a start and end time. But they were designed for different worlds — SRT for media players, VTT for the browser — and a handful of small differences decide which one your video will actually accept.
This post walks through what each format is, the exact differences that matter, and a simple rule for choosing. By the end you will know why a subtitle file that plays perfectly in VLC can be silently ignored by an HTML5 video, and how to fix it in seconds.
What is SRT?
SRT, short for SubRip Subtitle, is the oldest and most widely supported subtitle format in use. It came out of a DVD-ripping program called SubRip in the early 2000s and never really went away, because it is about as simple as a file can be: a number, a timestamp range, and the text that shows during it.
1
00:00:01,000 --> 00:00:04,000
Welcome back to the show.
2
00:00:04,500 --> 00:00:07,200
Today we are talking about subtitles.That is the whole format. Each cue is a counter, a line reading start --> end, one or more lines of text, and a blank line to separate it from the next. Because it is so plain, SRT is what VLC, media servers such as Plex and Jellyfin, and upload forms on YouTube and Vimeo all expect. If you only ever need one subtitle format, SRT is the safe default.
What is VTT?
VTT, or WebVTT (Web Video Text Tracks), is the format the web platform standardised for captions. When you add subtitles to an HTML5 <video> element with a <track> tag, the browser will only parse WebVTT — no other format is part of the specification. It looks like SRT with two deliberate changes and a lot more optional power.
WEBVTT
1
00:00:01.000 --> 00:00:04.000
Welcome back to the show.
2
00:00:04.500 --> 00:00:07.200
Today we are talking about subtitles.Notice two things. The file opens with a WEBVTT header line — without it, the browser rejects the whole file. And the timestamps use a period before the milliseconds (00:00:01.000) where SRT uses a comma (00:00:01,000). Those two changes are the minimum needed to turn an SRT into a valid VTT, and they are the difference between captions showing and captions silently failing to load.
What are the actual differences?
Beyond the header and the decimal separator, VTT carries a set of features SRT has no way to express. It can position a cue anywhere on the frame, align text, and be styled with CSS from the surrounding page. SRT has none of that — its one job is to show text at the right time. Here is the full comparison.
| SRT | VTT | |
|---|---|---|
| File extension | .srt | .vtt |
| Header line | None | WEBVTT required |
| Milliseconds separator | Comma (,) | Period (.) |
| HTML5 <track> support | No | Yes (only VTT) |
| Cue positioning | No | Yes (line, position, align) |
| CSS / inline styling | No | Yes (::cue, tags) |
| Chapters & metadata | No | Yes |
| Plays in VLC / desktop | Yes | Yes |
| YouTube upload accepts it | Yes | Yes |
The positioning is worth seeing, because it is the clearest thing SRT simply cannot do. A VTT cue can carry settings after its timestamp — where on the frame it sits, how it is aligned, how wide it is. This example pins a line to the top of the frame and centres it, which is handy when the lower third is covered by a lower-third graphic or a channel logo.
WEBVTT
1
00:00:01.000 --> 00:00:04.000 line:10% align:center
This caption sits near the top of the frame.There is no equivalent line you could add to an SRT to achieve that — the format has no grammar for it. This is the practical meaning of the table above: SRT is for showing the right words at the right time, and VTT is for the same job plus control over where and how those words appear.
Which one should you use?
The choice comes down to where the subtitles will play. There is almost never a reason to agonise over it — pick by destination.
- Playing a movie in VLC, Plex, or on a smart TV: use SRT. It is the format those players expect and match automatically when it sits next to the video with the same filename.
- Uploading to YouTube, Vimeo, or a social platform: use SRT. Their upload forms are built around it, and SRT sidesteps the styling quirks that can trip up an importer.
- Embedding video on your own web page with
<video>and<track>: use VTT. It is the only format the browser will load, full stop. - You need captions positioned off to one side, or styled to match your brand: use VTT, because SRT cannot describe position or colour at all.
If you are building a page and adding captions to the player yourself, our guide to add subtitles to a video walks through the <track> markup end to end. And if you just want to check how a file will look before shipping it, drop it into the subtitle preview tool.
How do you convert between them?
Because the formats are so close, conversion is fast and lossless in both directions — you are only changing the header and the timestamp punctuation, never the timing or the words. Going from SRT to VTT adds the WEBVTT line and swaps commas for periods. Going the other way strips the header, converts periods back to commas, and drops any positioning or styling that SRT cannot hold.
The SRT to VTT converter does the forward direction in your browser, and VTT to SRT handles the reverse. Both run entirely on your own device — the file is never uploaded — so even a private recording stays private. If you routinely juggle several formats, the general subtitle editor reads and writes both alongside a live preview.
Convert SRT to VTTFrequently asked questions
Can I just rename a .srt file to .vtt?
No. Renaming does not add the required WEBVTT header or change the comma-separated milliseconds to periods, so a browser will reject it. You have to convert the contents, not just the extension.
Does VTT look better than SRT?
Only if you use its extra features. A plain VTT with no positioning or styling shows exactly the same text at the same time as the equivalent SRT. VTT wins when you need cues placed off-centre or coloured to match a design.
Which format does YouTube prefer?
YouTube accepts both, but SRT is the well-trodden path and the one most tutorials assume. If an upload is being rejected, converting to a clean SRT is usually the quickest fix.
Is anything lost converting VTT to SRT?
The words and timing are preserved exactly. What is dropped is anything SRT cannot represent: cue positioning, text alignment, and CSS styling. If your VTT is plain text — as most are — nothing meaningful is lost.