SRT to VTT Converter — Free, In-Browser
Browser-based SRT to WebVTT converter. The HTML5 track element needs the WEBVTT header and dot-separated timecodes — this produces both correctly.
SRT to VTT Converter
Files never leave your browser0 lines · 0 chars · 0 B
0 lines · 0 chars · 0 B
You're on 7BusyBoss — 300+ free tools that run instantly in your browser. No signup, nothing uploaded.
HTML5 refuses SRT without a header
The <track> element accepts WebVTT and nothing else. A file named captions.srt looks right, but when you reference it with <track kind="captions" src="captions.srt">, the player simply shows no captions and reports no obvious failure. The requirement is blunt: the file must begin with the literal string WEBVTT on its first line. An SRT file is otherwise structurally close — the same blocks, the same timings, the same text — but without that header it is not WebVTT and the browser will not load it. This is the single most common reason captions "silently do nothing" on a web page.
The decimal separator is not optional
SRT writes milliseconds after a comma: 00:01:23,456. WebVTT uses a dot: 00:01:23.456. A spec-strict parser treats the comma as an error. This tool is deliberately lenient on input, accepting either separator because real-world SRT files vary, but its output is always strict WebVTT with dots.
One more thing has to be right outside the file itself: serve it with the MIME type text/vtt. A server that sends text/plain — which many do for an unrecognised extension — produces exactly the same silent nothing as a missing header, and it is a much harder problem to spot because the file itself is perfectly valid.
Cue numbers vanish in the conversion
SRT conventionally puts a number before each block (1, 2, 3). WebVTT does not require numbering, so this tool does not emit any — the timing and text carry over untouched and only the numbers are dropped. WebVTT's own optional cue identifiers are not generated either, so if you need to reference a specific caption from your site's JavaScript, that labelling has to be added after conversion.
Worth knowing in the other direction: the parser treats the SRT number as optional, so a file that has lost its numbering still converts fine.
Timing accuracy is preserved as integers
Times are parsed to whole milliseconds and re-serialised from those integers, so nothing drifts no matter how large the file or how many conversions you chain. Blocks whose timestamps cannot be parsed are skipped rather than aborting the run, and an amber warning names them by block number — up to five, then a count of the rest. Only a file with no parseable cues at all is rejected outright. Try the VTT to SRT Converter to reverse the process.
How to use the SRT to VTT Converter
Takes about a minute. No signup, no download, your data stays in your browser.
- 1Open the tool. Scroll up to the SRT to VTT Converter above — it loads instantly in your browser, no install needed.
- 2Enter your values. The fields come pre-filled with realistic defaults so you can see how it works — replace them with your own numbers.
- 3Read the result. The output updates instantly. Copy or share it — nothing is uploaded to a server, everything stays on your device.
Frequently asked questions
Common questions about the SRT to VTT Converter.
Why does my SRT file do nothing when I add it to a video track element?
The HTML5 track element only accepts WebVTT. An SRT file is rejected because it lacks the WEBVTT header line, and the failure is silent — the video plays with no captions and no error. Converting to WebVTT fixes it, provided the server also sends the file as text/vtt.
What is the difference between SRT and WebVTT timecodes?
SRT puts a comma before the milliseconds, as in 00:01:23,456, while WebVTT uses a dot, as in 00:01:23.456. This tool accepts either on input, since real SRT files vary, but always writes the dot form so the output is spec-compliant.
My captions still do not appear even after converting. What else could be wrong?
Check the MIME type your server sends. WebVTT must be served as text/vtt, and many servers default to text/plain for an unfamiliar extension, which browsers reject just as silently as a missing header. Also confirm the src path resolves and that cross-origin files carry the right CORS headers.
Will this tool preserve my subtitle timing and text?
Yes. Times are parsed to integer milliseconds and written back from those integers, so no drift accumulates. Multi-line cue text is preserved exactly as written. Only the SRT cue numbers are dropped, because WebVTT does not require them.
What happens if my SRT file has a malformed cue?
That block is skipped and the rest of the file converts. An amber warning lists the affected block numbers, naming up to five and then counting the remainder. Only a file in which no cue at all can be parsed is rejected with an error.
Community rating
Discussion (0)
No comments yet. Start the discussion.
Keep exploring
Related tools across 7BusyBoss — all free, all instant.
More in Subtitle Converters
- SBV to SRT Converter
- VTT to SRT Converter
- VTT to SBV Converter
- SBV to VTT Converter
- SRT to SBV Converter