or
-2.5)
Drop .srt files or paste SRT text to start.
How to convert SRT to VTT
- Add your SRT — drop one or more
.srtfiles above, or paste the subtitle text. The output format is already set to WebVTT. - Check the preview — the right-hand pane shows the finished VTT immediately:
WEBVTTheader on top, periods in the timestamps, cue numbers removed. - Download — save each
.vttfile (same filename, new extension) or grab a whole batch as a ZIP, then reference it from your<track src="…">.
What actually changes between SRT and VTT
1 00:00:03,400 --> 00:00:06,177 Hello! These captions were made in SubRip format.
WEBVTT 00:00:03.400 --> 00:00:06.177 Hello! These captions were made in SubRip format.
The two formats are close relatives, which is exactly why the failure is so confusing: everything looks right, yet the browser shows nothing. Three precise edits make the difference:
| Change | Why WebVTT requires it |
|---|---|
A WEBVTT line is added at the very top, followed by a blank line |
The spec makes this magic header mandatory — a parser that doesn't find it aborts before reading a single cue. |
Millisecond separator switches from comma to period (00:00:03,400 → 00:00:03.400) |
WebVTT timestamps only allow the period. A comma makes the cue timing invalid, and invalid cues are dropped silently. |
| The sequence numbers above each cue are removed | In VTT that position holds an optional cue identifier, not a counter. Leaving numbers out keeps the file clean; nothing references them. |
Cue text passes through untouched, including line breaks and tags like <i> that are legal in both formats. The converter also strips a UTF-8 BOM and normalizes Windows line endings, two other details that can trip up strict VTT parsers.
Captions still not showing? The usual suspects
- The file was renamed, not converted. An
.srtrenamed to.vttkeeps its commas and lacks the header — browsers reject it without any visible error. Run it through the converter above instead. - No
defaulton the<track>. Without it, the captions load but stay switched off until the viewer enables them in the player UI. Use<track kind="captions" src="captions.vtt" srclang="en" label="English" default>. - Cross-origin blocking. If the page and the .vtt live on different origins, the track request needs CORS headers on the server and a
crossoriginattribute on the<video>element. When either is missing the track fails silently — check the DevTools console. - Wrong
Content-Type. Some servers ship .vtt asapplication/octet-stream. Configure them to sendtext/vtt.
SRT to VTT — frequently asked questions
Can I just rename my .srt file to .vtt?
No. Browsers parse the file, not the extension. A renamed SRT file still starts with a cue number instead of the required WEBVTT header, and its timestamps still use commas (00:00:03,400) where WebVTT demands periods (00:00:03.400). Chrome, Firefox and Safari will silently show no captions at all. A real conversion rewrites both.
What happens to the cue numbers from my SRT file?
They are removed. In WebVTT the line above the timestamps is an optional cue identifier, not a required sequence number, and most caption workflows leave it out. Dropping the numbers keeps the output minimal and avoids confusing players that treat identifiers specially. If you later convert back to SRT, cues are renumbered from 1 automatically.
Do italics and other formatting tags survive the conversion?
HTML-style tags like <i>, <b> and <u> are valid in both SRT and WebVTT, so they are kept as-is. ASS override codes such as {\an8} (used by some SRT authors to position text at the top) are not valid WebVTT and browsers display them as literal text — enable “Strip formatting tags” to remove them during conversion.
I converted to VTT but the captions still don't show — why?
The three usual causes: (1) the <track> element is missing default, so the browser loads the captions but doesn't switch them on; (2) the video and the .vtt file are served from different origins without CORS headers and a crossorigin attribute — the track then fails silently; (3) the server sends the .vtt with a wrong Content-Type. Serve it as text/vtt and check the browser console for track errors.
How do I convert a whole season of SRT episodes to VTT?
Select or drop all the .srt files at once. Each one is converted independently with the same settings and keeps its original filename with a .vtt extension — handy because many players auto-load captions by matching filenames. Use “Download all as ZIP” to save the whole batch in one click.