Convert SRT subtitles to WebVTT (.vtt) in your browser — preview the cues and download a valid .vtt for HTML5 video.
AI-powered audio review & delivery for voice production teams
Adds the required WEBVTT header.
Converts the millisecond comma (,) to a dot (.) in every timestamp.
Keeps your cue text, line breaks and <i>/<b> styling.
Paste or load an .srt file to see your WebVTT cues here.
SubRip (.srt) and WebVTT (.vtt) are the two most common subtitle text formats, and they look almost identical — numbered cues, a start and end timestamp, then one or two lines of text. The differences are small but they matter, because a web browser will reject an SRT file used as a caption track:
| SRT (SubRip) | WebVTT | |
|---|---|---|
| File header | none | a required WEBVTT first line |
| Millisecond separator | comma — 00:00:02,000 |
dot — 00:00:02.000 |
| Where it is used | VLC, Premiere Pro, DaVinci Resolve, YouTube | HTML5 <track>, web video players |
| Inline styling | <i>, <b> tags |
<i>, <b> tags (plus optional cue settings) |
Converting SRT to VTT is a format change, not a re-timing. This tool parses your SubRip cues, then writes the same cues as WebVTT by doing three things: it prepends the WEBVTT header and a blank line, it swaps the comma before the milliseconds for a dot in every --> timing line, and it keeps each cue's number as the optional WebVTT cue identifier. Your caption text, internal line breaks and any <i> / <b> tags pass straight through unchanged — those tags are valid in WebVTT too.
WebVTT is the subtitle format the web platform speaks. The HTML5 <video> element loads captions through a <track kind="subtitles" src="captions.vtt"> child, and that src must be a .vtt file — point it at an .srt and no captions appear. Browser-based players, many JavaScript video libraries and some streaming workflows expect WebVTT for the same reason. If your captions were authored as SRT for an NLE or for YouTube, converting to VTT is the step that makes them work on a web page.
Both hold numbered, timed subtitle cues, but WebVTT (.vtt) starts with a WEBVTT header line and writes timestamps with a dot before the milliseconds (00:00:02.000), whereas SubRip (.srt) has no header and uses a comma (00:00:02,000). WebVTT is the format HTML5 video uses in the browser; SRT is more widely supported by desktop players and editors.
Paste your SRT subtitles above or load an .srt file. The converter reads every cue, adds the WEBVTT header, changes the millisecond comma to a dot in each timestamp and shows a live preview. Click Download subtitles.vtt to save the WebVTT file — it all happens in your browser, with nothing uploaded.
Yes. The HTML5 <video> element loads captions through a <track> element whose src points at a WebVTT file. An .srt file will not load as a <track> — the browser needs the WEBVTT header and dot-millisecond timestamps. Converting your SRT to VTT is what makes the captions appear in a web player.
Yes. Inline <i> and <b> tags are valid in WebVTT as well as SRT, so the converter passes them through untouched, along with your line breaks and any non-Latin characters or emoji. The text of every cue is preserved exactly.
The cues themselves are preserved exactly — same timings, same text, same styling. The only changes are the additions WebVTT requires: the WEBVTT header and the dot before the milliseconds. Timing is never shifted or rounded, so playback stays perfectly in sync.
No. The whole conversion runs in your browser with JavaScript. Your subtitle file is read locally, converted on your device and offered as a download — it is never sent anywhere, which keeps unreleased scripts and client captions private.
Need to go the other way? Convert a WebVTT .vtt back to a SubRip .srt file.
Starting from a plain transcript? Build a timed .srt file first, then convert it here.
Just want the words? Strip the timings and export your subtitles as plain text.
VoiceDeck adds AI-powered audio & video review and delivery for your whole team — so every file ships in spec, automatically.