How to convert SRT to VTT
SRT and WebVTT look similar but are not interchangeable. This guide explains the differences and how to convert cleanly — either in a text editor for a single file or using a dedicated tool for speed.
Why you might need to convert
SRT is the most universal subtitle format for desktop players, editing tools and YouTube. WebVTT is the format required by the HTML5 <track> element. If you are publishing video on a modern web page with native captions, you need WebVTT. Many subtitle workflows start with SRT and end with a VTT file.
Structural differences
- Header. WebVTT requires a
WEBVTTline at the start. SRT has no header. - Millisecond separator. SRT uses a comma (
00:00:05,000). WebVTT uses a period (00:00:05.000). - Cue numbers. SRT requires them. WebVTT makes them optional (they become cue identifiers).
- Timestamp line. Both use
-->to separate start and end. - Dialogue. Both support plain text and a small set of inline tags. WebVTT supports more tags (
<v Speaker>,<c.class>) that SRT does not.
Manual conversion in a text editor
For a small file, you can convert by hand:
- Open the SRT file in a plain text editor.
- Add
WEBVTTat the top followed by a blank line. - Replace every comma in the timestamp lines with a period.
- Optionally delete cue numbers (WebVTT does not require them).
- Save with a
.vttextension.
This works for a single file, but it is slow and error-prone if you have more than a couple of cues. It also cannot handle WebVTT-specific features that SRT lacks.
Automated conversion in your browser
The fastest way to convert is to use our SRT to VTT Converter. It runs entirely in your browser — no uploads, no accounts.
- Open the SRT to VTT Converter.
- Paste your SRT content or click "Load .srt".
- Click "Convert to VTT".
- Copy the output or click "Download .vtt".
The conversion preserves dialogue exactly. Cue numbers become cue identifiers. Timestamps are rewritten with period-separated milliseconds.
What you lose
SRT supports some inline tags that WebVTT does not automatically understand. Converting will preserve them as text, but they may render differently in a VTT player:
<font color="...">— not supported in WebVTT- ASS-style position markers like
{\an8}— display as literal text in WebVTT - SRT-specific shortcuts — many players tolerate them, but strict WebVTT players may not
If your source file uses these tags heavily, plan on some cleanup after conversion.
What stays the same
Timing values, dialogue text and cue order all stay exactly the same. The only change is the format encoding.
Common pitfalls
- Forgetting the
WEBVTTheader — many HTML5 players silently reject the file. - Keeping commas in timestamps — some players tolerate it, but strict ones reject the file.
- Keeping SRT-style ASS position tags — these break rendering in VTT players.
- Encoding — WebVTT must be UTF-8. Files saved with other encodings will display garbled text.