AnyFormat

00 SRT → VTT

SRT to VTT

The format an HTML5 <track> element actually accepts.

01SRT in
02VTT out
03Options 4

Negative moves subtitles earlier. Use this when they run consistently ahead of or behind the audio.

For subtitles that drift progressively. 25 fps material played at 23.976 needs 1.0427.

Ends each cue just before the next begins, so no two are ever on screen at once.

  • No upload The conversion runs in this tab. Your file never travels — not to us, and not to the advertising.
  • No sign-up, no email, no daily cap There is no account system to sign up to.
  • No size limit we invented Only your device's memory — about ~2 GB on a desktop browser, ~400 MB on a phone.
  • Turn your Wi-Fi off and convert anyway The conversion needs nothing but this page. Ads will not load without a connection; your file will still convert. That is the whole claim, and it takes five seconds to check.

Converts SubRip to WebVTT — the format HTML5 video reads natively through a <track> element. A browser will not play an .srt no matter how you label it, which is why this conversion exists.

The three differences that matter

SRT and WebVTT look almost identical, and the three places they differ are exactly the three that stop a browser loading the file.

The header. A WebVTT file must begin with the literal word WEBVTT. Without it the browser rejects the whole track, silently — no error in the console, the captions simply never appear. This is the single most common reason a renamed .srt does not work.

The decimal separator. SRT writes 00:00:01,000 with a comma; WebVTT requires 00:00:01.000 with a full stop. Every timestamp in the file has to change.

Cue settings. WebVTT can position a cue — line:90%, align:start — after the timestamp. SRT has nowhere to put them, so they are added here only where the source had them.

Using the result in a page

Serve the file with the MIME type text/vtt. Getting this wrong is the second most common failure: many servers send .vtt as text/plain, and browsers refuse it.

Then reference it inside your video element:

<track kind="captions" src="film.vtt" srclang="en" label="English" default>

One more thing catches people out: the track file is subject to CORS. If the video is on your page and the .vtt is on a CDN, the CDN must send Access-Control-Allow-Origin or the track will not load.

What gets checked while converting

Real subtitle files are rarely clean, and a converter that passes the mess straight through is not doing its job. Four things are checked and reported every time.

Cues out of order — some editors append late additions at the end of the file. They are sorted, and you are told it happened.

Zero-length or reversed cues — an end time at or before the start. Players skip these silently, so they are given a one-second duration instead.

Overlaps — two cues on screen at once. Left alone by default because some formats use it deliberately for speaker labels; there is an option to trim them.

Malformed blocks — anything without a readable timestamp is skipped and counted, rather than corrupting the cue numbering.

Fixing subtitles that are out of sync

Two different problems, two different fixes.

If the subtitles are consistently ahead or behind by the same amount, use Shift. Find a line whose spoken time you know, subtract, and enter the difference — negative to move them earlier.

If they start right and drift further out as the file goes on, the source was timed for a different frame rate and you need Stretch. The common ratios are 1.0427 (23.976 fps subtitles on 25 fps video) and 0.959 (the reverse). Shifting will never fix drift, and stretching will never fix a constant offset.

Other names for this

Also searched as “subrip to webvtt”, “srt to webvtt”, “convert srt for html5 video”.

Questions

Can I just rename the file to .vtt?
No. It will fail to load, and usually with no error message at all — the missing WEBVTT header and the comma decimal separator both make the file invalid.
Are the formatting tags kept?
Yes. <i>, <b> and <u> are valid in both formats and are passed through unchanged.
My captions still do not appear in the browser.
Check three things in order: the server sends text/vtt, the track file is same-origin or sends CORS headers, and the file starts with WEBVTT. In practice it is nearly always the MIME type.
My accented characters come out as gibberish.
The file is not UTF-8 — usually Windows-1252 from an older tool, or UTF-16 from Notepad. Both are detected and decoded automatically here. If characters are still wrong, the source file itself declares the wrong encoding.
Is my subtitle file uploaded?
No. The parsing and rewriting happen in this tab. Subtitle files often contain an unreleased script or a client’s content, which is a good reason not to send them to a stranger’s server. Turn your Wi-Fi off and the tool keeps working.
Can I convert several files at once?
Yes — drop as many as you like, or a whole folder. Each keeps its original name with the new extension, and you can download them individually or as a ZIP.