Your files never leave this device — 100% in-browser

VTT to SRT Converter

Turn web captions into the SRT that desktop players, TVs and editors expect — converted locally in your browser.

Web captions (VTT) become the numbered SRT that desktop players, TVs and editors expect. NOTE blocks, cue settings and speaker tags — things SRT can't express — are stripped cleanly instead of leaking into the subtitle text, and timing carries over to the millisecond.

Last verified 2026-08-15 — this tool passed 79 automated end-to-end checks

Drop .vtt files here, or click to browse
converts to SRT · batch supported · encoding auto-detected
01 — PRIVATE
Subtitle files are parsed and rewritten entirely in your browser. Unreleased scripts and translations never touch a server.
02 — ENCODING-AWARE
UTF-8, UTF-16 and legacy EUC-KR files are detected automatically and always saved back as clean UTF-8.
03 — BATCH
Drop a whole season. Each episode converts in milliseconds and downloads separately with its cue count shown.

How to use

  1. Drop your file(s) into the box above — or click it to browse.
  2. Conversion starts immediately — no settings needed.
  3. Click Download on each finished file — or Download all (.zip) for a batch. Nothing was uploaded at any point.

Where VTT files come from — and why you need SRT

VTT is what you get when you rip captions from the web: online course platforms, YouTube caption exports, Vimeo, conference recordings, or your own HLS streams. It's perfect in the browser and awkward everywhere else — smart-TV media players, car systems, many hardware set-top boxes, and subtitle editors from the pre-web era expect SRT.

Conversion strips the parts SRT can't express: the WEBVTT header, NOTE and STYLE blocks, cue identifiers, positioning settings like align:start position:10%, and speaker voice tags like <v Alice> (the spoken text is kept, the tag removed). Sequential cue numbers are generated, and the millisecond dot becomes SRT's comma.

What survives VTT → SRT
FeatureIn VTTAfter conversion
Text & line breaksYesKept exactly
TimingDot millisecondsComma milliseconds, same values
<i>/<b>/<u> stylingYesKept (players support these in SRT)
Cue positioningalign/position/line settingsRemoved (no SRT equivalent)
Voice tags <v Name>YesTag removed, spoken text kept
NOTE / STYLE blocksYesRemoved

When NOT to convert VTT to SRT

  • The file is going back into a web player<track> needs VTT; converting to SRT would break it.
  • Positioning matters — VTT can pin cues to screen regions (used for speaker separation and sign captions). SRT has no standard for this, so that layout is permanently lost.
  • Karaoke-style timed words — inline per-word timestamps are a VTT feature; SRT flattens them to plain lines.

Frequently asked questions

Why do my cues show weird position tags in some players?

That's what this conversion fixes — VTT cue settings mean nothing to SRT players, so the converter strips them cleanly instead of leaving them in the text.

Are cue numbers required in the output?

SRT convention includes them, so the converter numbers every cue sequentially from 1.

Is anything uploaded?

No — parsing and rewriting are plain JavaScript running on your device. The file never leaves your browser.