SRT to VTT converter
Free and instant. Your file never leaves your browser.
Last updated 17 August 2026
SRT is the format every video editor accepts. WebVTT is what browsers want. The mechanical difference is small, a header line and a decimal point in place of a comma, and the converter below handles it in your browser without uploading anything. The part that costs people an afternoon is what happens next, when a correctly converted file still refuses to appear over the video, so that is covered in full further down.
Every difference between the two formats
Three differences are the ones a converter has to fix. WebVTT files must open with the literal word WEBVTT on the first line, before anything else. Timestamps separate milliseconds with a full stop where SRT uses a comma, so 00:00:04,120 becomes 00:00:04.120. Cue numbers are mandatory in practice for SRT and optional in WebVTT, where an identifier can also be a word rather than a number.
WebVTT then adds capabilities SRT has no specification for at all. Cue settings place a caption somewhere other than the bottom centre, using properties such as line, position, align and size written on the same row as the timestamp. STYLE blocks carry CSS. NOTE blocks hold comments the viewer never sees. Voice tags in the form of a speaker name in angle brackets mark who is talking, and class tags allow styling of individual words. Converting from SRT you gain the ability to use all of that; none of it appears on its own.
One quieter difference matters when timings are near the start of a file. WebVTT permits a short timestamp that omits the hour, so 01:02.500 is valid and means one minute and two and a half seconds. SRT expects the full form every time. A file written by hand in the short form will be rejected by strict SRT parsers, which is why the converter expands it rather than copying it across.
Why a correct VTT file still will not show over your video
This is the failure that sends people looking for a different converter when the converter was never the problem. In almost every case the file is valid and something around it is wrong. The five causes below account for nearly all of it, in the order they are worth checking.
The server is sending the wrong content type. A WebVTT file has to arrive as text/vtt. Servers that have never seen the extension fall back to text/plain or to a generic binary type, and browsers refuse to parse it. Nothing about the file looks wrong when you open it, which is what makes this one expensive. Check the response headers in your browser's network panel before you touch the subtitles themselves.
The WEBVTT signature is not the first thing in the file. A blank line above it, a stray space, or an editor that inserted a byte order mark in the wrong place all invalidate the entire file rather than one cue. Open it in a plain text editor and confirm the very first characters are the six letters of the header.
The track element is incomplete. A source element inside a video tag needs both kind and srclang set, as in kind equals subtitles and srclang equals en. Some browsers quietly ignore a track missing srclang, and the caption button never appears at all, which looks identical to a broken subtitle file.
The file is served from another domain without permission. Subtitles loaded across origins need the server to send an Access Control Allow Origin header and the video element to carry the crossorigin attribute. Without both, the video plays and the captions silently do not.
The file is not saved as Unicode. Accented characters, curly quotation marks and anything outside plain English turn into unreadable sequences when the file was saved in a legacy Windows encoding. Save as UTF 8 without a byte order mark and the problem disappears. This is the one that tends to appear only after the subtitles have already been signed off, because the first few cues often contain nothing but plain letters.
Which format each place actually wants
Use WebVTT for anything that plays in a browser. The HTML5 track element reads it natively, and web players built on top of it, along with the video components in most frameworks, expect it. It is also the format that lets you position a caption away from the bottom of the frame when something on screen would otherwise be covered.
Use SRT for anything that goes to an editor or a person. Premiere Pro, DaVinci Resolve, CapCut, VLC and the subtitle track of most offline players read SRT without argument, and localisation vendors ask for it by default. YouTube accepts both, so the choice there only matters if you want positioning, which YouTube discards anyway.
If you find yourself converting in both directions regularly, the conversion is a symptom rather than the task. Trustample exports SRT and WebVTT from the same transcript, so the format is chosen at the point of download. Our subtitle generator covers making captions from a recording, and how to get SRT from MP4 walks through the case where all you have is the video file.
Frequently Asked Questions (FAQs)
Is my subtitle file uploaded anywhere?
No. The conversion runs entirely in your browser with JavaScript. Nothing is sent to any server, which also makes it instant.
What actually changes between SRT and VTT?
VTT adds a required WEBVTT header, uses dots instead of commas before milliseconds (00:00:01.000 vs 00:00:01,000), and makes cue numbers optional. Text and timings stay identical.
My player still won't load the converted file. Why?
Check the file is saved with a .vtt extension and served with UTF-8 encoding. For HTML5 video, the <track> element must also have kind="subtitles" and the page usually needs the file on the same origin or with CORS headers.
Where do I get subtitles if I only have the video?
That's the other half of Trustample: upload the video, AI transcribes it, you fix any word inline, and export both SRT and VTT with accurate timings.
More free subtitle tools
Web captions into the universal format editors and players accept.
Subtitle Character CounterCheck your captions against the 42 character line guideline in one paste.
Words Per Minute CalculatorPaste a transcript, enter the duration, and get the speaker's pace, with context for what the number means.
Need subtitles made from a recording? Generate SRT from any audio or video with 60 free minutes every 30 days.