SnailText
EN

SRT and VTT converter

SRT to VTT converter, and back, without uploading the file

Drop in an .srt or a .vtt and get the other format back. The conversion happens in this browser tab, so the subtitle file never leaves your computer.

Converted in this browser tab. The file is never uploaded.

Or paste the subtitle text

Convert SRT to VTT or VTT to SRT

SRT and WebVTT hold the same thing - a list of cues, each with a start time, an end time and some text - but players disagree about which one they will read. Media players and editors generally want SRT. The HTML5 video element and most web players want WebVTT. So the conversion is a chore that comes up whenever subtitles move between a desktop workflow and a web page.

This converter reads either format and writes the other. It runs entirely in your browser: there is no upload step, because there is nowhere to upload to. You can check that yourself - open your network tab and convert a file, and you will see no request go out.

What actually differs between the two formats

The differences are small and annoying. SRT separates milliseconds with a comma (00:00:01,500); WebVTT uses a dot (00:00:01.500). WebVTT requires the literal line WEBVTT at the top of the file and most browsers reject the track without it, usually with no useful error. SRT numbers every cue from 1 and the number is required; in WebVTT the cue identifier is optional, so this converter leaves it out rather than emit a meaningless counter.

WebVTT also allows cue settings after the end time, things like align:start or position:10%. SRT has no equivalent, so those are dropped on the way to SRT. That is a real loss of information, and it is better stated than discovered: if your VTT relies on positioning, the SRT will place those cues wherever the player puts them by default.

Styling blocks are dropped for the same reason. A STYLE or REGION block, and any NOTE comment, has no SRT counterpart and is not carried over.

SRT to VTT converter FAQ

Is my subtitle file uploaded anywhere?
No. The conversion runs in your browser with JavaScript, and this page has no upload endpoint at all. Open your browser network tab and convert a file if you want to confirm it - nothing is sent. That also means it works with the page already loaded and your connection off.
What is the real difference between SRT and VTT?
The timestamp separator and the header. SRT writes milliseconds after a comma and numbers each cue; WebVTT writes them after a dot and starts the file with the line WEBVTT. WebVTT additionally supports positioning and styling that SRT cannot express. For a plain dialogue track they carry exactly the same information.
Will the timings shift?
No. Times are parsed to milliseconds and written back at the same millisecond, so a cue that started at 00:01:02,500 still starts there. Converting back and forth returns a file identical to the one you started with, which is checked by a test that runs on every build of this site.
Which one should I use for a website?
WebVTT. The HTML5 video element reads .vtt natively through a track element, and YouTube accepts .vtt for manual caption upload. Use SRT when the target is a desktop media player or a video editor, where support is wider.
Can SnailText make subtitles if I do not have a file yet?
Yes, and that is a different job from this page. SnailText is a desktop app that generates subtitles from the audio of a recording or a video, locally, and writes an SRT or VTT. It does not convert between existing subtitle files - that is what the tool above is for.

Do you not have a subtitle file yet?

The tool above converts a file you already have. If what you have is the audio or the video, that is a different job: SnailText is a desktop app that transcribes the speech on your own machine and writes the SRT or VTT for you. Nothing is uploaded there either, and there is no per-minute meter.

To be clear about the boundary: SnailText generates subtitles from audio. It does not convert between existing subtitle formats, and it does not extract a subtitle track that is already embedded in a video.

Or read how subtitle generation works first.