SRT to VTT Converter

Turn SubRip (.srt) subtitles into WebVTT (.vtt) captions that the HTML5 <track> element, Video.js, Plyr and HLS players actually accept.

Runs 100% in your browser — files are never uploaded

Drop .srt files here (multiple files supported — .vtt and .sbv work too)
or
seconds (e.g. -2.5)

Drop .srt files or paste SRT text to start.

How to convert SRT to VTT

  1. Add your SRT — drop one or more .srt files above, or paste the subtitle text. The output format is already set to WebVTT.
  2. Check the preview — the right-hand pane shows the finished VTT immediately: WEBVTT header on top, periods in the timestamps, cue numbers removed.
  3. Download — save each .vtt file (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

Before — SubRip (.srt)
1
00:00:03,400 --> 00:00:06,177
Hello! These captions
were made in SubRip format.
After — WebVTT (.vtt)
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:

ChangeWhy 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,40000: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

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.