SRT to VTT

Convert subtitle files right in your browser. Nothing is uploaded, nothing is stored.

About this converter

SRT and WebVTT look similar but are not interchangeable: VTT uses a period before the milliseconds, needs a WEBVTT header, and is what HTML5 video expects. This converter rewrites SRT into spec-compliant VTT.

SRT and VTT are both subtitle formats that carry the same thing — when each line appears and disappears — but they are not interchangeable files. VTT is what browsers and HTML5 video players expect; SRT is what most desktop editors and older tools accept. This page converts between them so you do not have to care which one you were handed.

Paste the SRT or drop the file in, and you get VTT back with the timings intact. The conversion is a format change, not a re-time, so cues land exactly where they did in the original. Nothing is uploaded: the work happens in your browser and the result never leaves your machine.

Related tools

Frequently asked questions

What is the difference between SRT and VTT?
Both are plain-text subtitle files with numbered cues and timecodes. VTT adds a WEBVTT header and supports styling and positioning cues, and it is the format HTML5 video elements expect. SRT has no header and is accepted by more older software.
Does converting change the timings?
No. Each cue keeps the start and end time it had in the source file. The only change is the container format — the comma in SRT timecodes becomes a dot in VTT, which is the main textual difference.
Is my file uploaded to a server?
No. The conversion runs entirely in your browser using JavaScript. Your subtitle file is never transmitted, which also means it works offline once the page has loaded.
Can I convert VTT back to SRT?
Yes — use the SRT to VTT page for SRT input and the reverse converter for VTT input. Both directions preserve the cue text and timings.
Why does my player reject the converted file?
Usually an encoding issue rather than the format. Subtitle files should be UTF-8; a file saved in a legacy encoding can carry characters the player cannot read. Re-save as UTF-8 and convert again.