Convert SRT to VTT

● No uploads: everything runs in your browser

Loading…

Convert an SRT file to WebVTT (.vtt), the subtitle format browsers load through the HTML5 <track> element. The changes are mechanical: a WEBVTT line is added at the top, the comma before the milliseconds in every timestamp becomes a full stop, and SRT’s cue numbers are dropped because VTT does not need them. Text, line breaks and tags such as <i> come across as they were, and the timings are kept to the millisecond. Drop several .srt files at once to convert the whole set and get one ZIP back.

How it works

  1. Drop an .srt file, or several at once to convert them as a batch.
  2. With a single file, the cues appear in a table first. Check them, and correct a typo in place if you spot one.
  3. Convert & download. One file comes back as a .vtt with the same name; a batch arrives as one ZIP, with a short report listing any file that could not be read and why.

Questions

How do I use a VTT file with HTML5 video?
Put a <track> element inside the <video> tag, for example <track src="captions.vtt" kind="subtitles" srclang="en" label="English">. Browsers only load WebVTT this way, which is why an .srt has to be converted first. If the .vtt lives on a different domain from the page, the video element needs the crossorigin attribute and that server has to allow it.
Will converting SRT to VTT change the timing?
No. Start and end times are carried over to the millisecond, and only the separator changes: 00:01:02,500 becomes 00:01:02.500. The one exception is overlapping cues. If a cue starts before the previous one has ended, its start is moved to the moment the previous one ends, so two cues are never on screen at once. A file without overlaps keeps identical timings.
Why does my converted file show strange characters?
The .srt is read as UTF-8, which is also the encoding WebVTT requires. An older file saved in a regional encoding, such as Windows-1252 for Western European languages or GB2312 for Chinese, will show broken accents or symbols. Open it in a text editor, save it again as UTF-8, and drop it back in.
Does my file get uploaded?
No. The models and all processing run inside your browser on your own device. You can verify this yourself: open your browser’s DevTools, watch the Network tab, and process a file: there are no uploads. After the first visit most tools also work fully offline.
What is a two-point resync?
A fixed shift fixes subtitles that are uniformly early or late, but not ones that drift further out over the runtime (a frame-rate mismatch). Pin the first and last line to their correct moments and every cue between them is stretched linearly. That is the standard fix, done locally.
How does on-device translation work?
Recent Chromium browsers ship a built-in translator that downloads language packs and runs locally. Where your browser offers it, this tool uses it, subtitle text included, and nothing is sent to a service. Where it does not, the page says so instead of quietly uploading.
Burned-in vs a subtitle file: which do I want?
A separate .srt/.vtt can be toggled and edited, and players render it crisply, so prefer it where you control playback. Burn-in re-encodes the video with the text drawn into the frames: it plays everywhere and cannot be turned off.

Related tools