Convert VTT to SRT

Re-serialises WebVTT (.vtt) as SubRip (.srt) in your browser. Read, converted and downloaded locally — no upload, no server.

Runs in your browser. Files never leave your device.

Drop a subtitle file

or ·

VTT (also accepts SRT, ASS, SUB) · processed in your browser · nothing is uploaded

What this conversion actually changes

WebVTT and SRT describe cues the same way, so the conversion keeps every timing value and every line of text. What changes is the wrapper that makes a file SRT rather than VTT.

input.vtt                          output.srt
WEBVTT
                                   1
intro                              00:00:04,180 --> 00:00:07,920
00:00:04.180 --> 00:00:07.920 align:center   Who's there?
Who's there?

Three things change and one is removed. The WEBVTT header is dropped. Millisecond separators switch from period to comma. Cue identifiers — whether a name like intro or an auto number — are replaced by SRT’s required sequential numbering. And cue settings (align:center above) are removed, because SRT has no field for them. The tool reports each removal rather than discarding it quietly.

When you need SRT

Reach for SRT whenever the target isn’t a web page. Desktop players (VLC, MPV, MPC-HC), smart-TV media apps, and home servers like Plex, Jellyfin and Emby all treat SRT as the default external subtitle. It’s also the format most editors and muxers expect when you embed a subtitle track into an MKV or MP4. If you’re feeding an HTML5 <track> instead, you want SRT to VTT.

What’s preserved, what’s dropped

  • Timing and text — preserved exactly; only the separator changes.
  • Cue settings (line, position, align, size) — dropped, with the affected cues listed. Most desktop players ignore positioning anyway.
  • STYLE / NOTE / REGION blocks — no SRT equivalent; excluded, with a notice.
  • Inline tags<b>, <i>, <u> kept; <v Speaker> voice tags unwrapped to their text; <c.class> styling spans removed.
  • Entities&amp;, &lt; and friends are decoded back to plain & and <.
  • Hourless timestamps — VTT’s MM:SS.mmm is expanded to SRT’s full 00:MM:SS,mmm.

Limits

None worth noting. Everything runs in your browser, so file size is bounded only by available memory, and a feature-length file converts instantly. No upload, no account, and it works offline after the first load.

Frequently asked questions

Will I lose my caption positioning?

SRT has no syntax for positioning, so cue settings like line:, position: and align: are dropped — and the tool names every cue it removed them from. In practice most desktop players centre subtitles at the bottom anyway, so the result looks the same in VLC, MPV and MPC.

Why convert to SRT at all?

SRT is the universal interchange format. Desktop players, smart-TV firmware, and media servers like Plex and Jellyfin all read SRT first; many subtitle editors and muxing tools (to embed a track into an MKV) expect SRT input. WebVTT is mainly a web-delivery format.

What happens to STYLE blocks and colours?

WebVTT STYLE blocks and ::cue rules have no SRT equivalent and are dropped with a notice. Inline <b>, <i> and <u> tags are valid in SRT and kept. Voice tags like <v Name> are unwrapped to their text.

Does it handle NOTE comments and regions?

Yes. NOTE, REGION and STYLE blocks are recognised and excluded from the output (SRT has no place for them); every dialogue cue is converted. The tool tells you what it set aside.

Is my file uploaded anywhere?

No. The .vtt file is read and converted by JavaScript in your browser. Nothing is sent to a server — you can confirm it in your browser’s network tab, or work offline.