SRT vs VTT: Differences and How to Convert Between Them
The difference between SRT and VTT subtitle files, how to convert SRT to VTT or VTT to SRT correctly, and how to fix common subtitle errors.
5 min read
SRT and WebVTT are the two most common subtitle formats. They look almost identical, and that’s exactly why conversions go wrong: a file that is “nearly” right may be rejected by a player or show no captions at all. This guide explains what differs between the formats, how to convert in either direction, and how to fix the errors you are most likely to run into.
If you just want the result, the free SRT to VTT Subtitle Converter does the conversion in your browser and previews every cue before you download.
SRT and WebVTT at a glance
SRT (SubRip) is a simple, widely supported format used by video editors, desktop players and upload forms. Each cue has a sequence number, a timing line and one or more lines of text, separated from the next cue by a blank line:
1
00:00:01,000 --> 00:00:04,200
Welcome back to the channel!
2
00:00:04,500 --> 00:00:07,800
Today we're turning one long video
into three vertical clips.WebVTT (Web Video Text Tracks) is the caption format of the web. The HTML5 video element’s <track> tag requires it, and many web players expect it. The same cues in WebVTT look like this:
WEBVTT
00:00:01.000 --> 00:00:04.200
Welcome back to the channel!
00:00:04.500 --> 00:00:07.800
Today we're turning one long video
into three vertical clips.What actually changes
| Detail | SRT | WebVTT |
|---|---|---|
| File header | None | Must start with WEBVTT |
| Millisecond separator | Comma: 00:00:01,000 | Period: 00:00:01.000 |
| Hours in timestamps | Required | Optional (01:02.500 is valid) |
| Cue numbers | Sequential numbers | Optional identifiers (any text) |
| Positioning | Not standardized | Cue settings such as align:start or line:0 |
| Comments and styles | No | NOTE, STYLE and REGION blocks |
| Basic formatting | <i>, <b>, <u> (widely supported) | <i>, <b>, <u>, plus voice and class tags |
One more subtle difference: in WebVTT, the characters & and < in caption text must be written as & and <, because they otherwise start an entity or a tag. A careful converter handles this automatically in both directions.
Converting with the online converter
- Open the Subtitle Converter and drop in your
.srtor.vttfile, or paste the subtitle text. - The format is detected automatically, and every cue appears in the preview table with its start time, end time and text. Multi-line cues stay multi-line.
- Choose the output: WebVTT (.vtt) or SubRip (.srt).
- Download the converted file or copy the text.
When converting WebVTT to SRT, features SRT can’t represent, such as cue positioning, voice tags and STYLE blocks, are dropped, while italic, bold and underline are kept. The converted file is always saved as UTF-8.
Converting by hand (and why it’s risky)
For a tiny file, you can convert manually in a text editor: add WEBVTT and a blank line at the top, then replace the commas in timing lines with periods. The risk is in the details. A global find-and-replace also changes commas inside your caption text, and it’s easy to miss an ampersand that needs escaping. For anything longer than a few lines, a converter that parses each cue is safer.
Fixing common subtitle file errors
Missing blank lines between cues
Each cue must be separated by a blank line. When one is missing, players may merge two cues or skip one. The converter recognizes a second timing line inside a block and splits it into two cues.
Invalid timestamps
Watch for typos such as 00:00:75,000 (75 seconds isn’t valid), missing digits, or a wrong arrow. Blocks that can’t be read are listed with their line numbers so you can find and fix them; the remaining valid cues are still converted.
Garbled accented characters
Older SRT files are sometimes saved in a legacy encoding rather than UTF-8, which turns characters like é or ñ into symbols. The converter reads UTF-8 and UTF-16, and falls back to Windows-1252 (Western European) when a file isn’t valid UTF-8, then writes UTF-8.
Overlapping or out-of-order cues
Players usually tolerate overlaps, but they can make captions flicker or stack. The converter flags cues that end before they start, overlap, or appear out of order. To fix them, open the file in the Subtitle Editor, where you can edit times, sort cues and shift timing.
Using a VTT file on your website
With a WebVTT file, adding captions to a self-hosted video takes one line of HTML:
<video controls src="clip.mp4">
<track kind="subtitles" src="clip.vtt" srclang="en" label="English" default>
</video>Serve the .vtt file with the text/vtt content type. If the captions are hosted on a different domain from the page, the server must allow cross-origin requests, or the browser will refuse to load the track.
Which format should you keep?
If you publish in several places, keep both. Use SRT as the version you hand to editors, clients and upload forms, since almost every tool imports it. Use WebVTT for your own website and web players. Edit one master copy, then convert it whenever the text or timing changes, so the two versions never drift apart. Platforms such as YouTube accept both formats for uploaded captions, so either one works there.
Key takeaways
- WebVTT needs a
WEBVTTheader and uses periods in timestamps; SRT uses commas and numbered cues. - HTML5 video captions require WebVTT; many editors and upload forms prefer SRT.
- Converting to SRT drops WebVTT-only features like positioning and styles, but keeps basic formatting.
- Fix malformed blocks, bad timestamps and overlaps before publishing.
- Save subtitle files as UTF-8 to avoid garbled characters.