SRT to VTT converter captions ready for any web player.
To convert SRT to VTT, paste your captions or drop in the .srt file and download the .vtt. We swap the millisecond comma for a period, add the WEBVTT header and keep italics, bold and underline. Every cue keeps its exact timing, and the file comes back as UTF-8, ready for an HTML5 track element.
Free, no sign-upSecond file
For example, the video name and the version up for approval.
This text has no timings. We will build subtitles from reading speed: each line or sentence becomes a block of up to 2 lines.
The JSON has a time for every word. We cut blocks of up to 2 lines of 42 characters, at sentence ends and pauses.
Subtitle report
- Subtitles
- Duration
- Words
- Average CPS
- Max CPS
- Flagged
| # | Time | Duration | Text | Characters per line | CPS | Flags |
|---|
How to convert SRT to VTT
- 01
Paste or drop the .srt
Files with missing cue numbers, periods instead of commas or stray blank lines are fine. We detect the encoding on our own.
- 02
Check the report
Each cue shows its duration, characters per line and reading speed. Turn on the overlap fix if two captions collide.
- 03
Download the .vtt
Copy the result or download it and point your track's src at it. It uploads to Vimeo as is.
Why do browsers need VTT instead of SRT?
HTML5 video only shows captions through the <track> element, and the spec for that element supports one format: WebVTT. Point a track at an .srt file and nothing shows up on screen, with no error to tell you why. That is why websites, course platforms and custom players ask for .vtt even when your captions came out of an editor as SRT.
SRT started in DVD ripping tools and became the file every editor exports. WebVTT came later, designed for the web and modeled on SRT. The structure is nearly identical, which is what makes this conversion safe: no timing has to be recalculated.
captions.srt
7
00:01:12,480 --> 00:01:15,020
<i>Remember last week's lesson?</i>
captions.vtt
WEBVTT
00:01:12.480 --> 00:01:15.020
<i>Remember last week's lesson?</i> What changes from SRT to VTT, and what stays
The conversion is close to lossless. The changes are about form: the file gets a WEBVTT line at the top, cue numbers go away (they are optional in VTT) and the characters &, < and > become entities like & so the player does not mistake your text for markup.
The only real loss is formatting VTT does not know. SRT's <font color> tag has no WebVTT equivalent, so it is dropped. The same goes for {\an8}, the code some players read to move a caption to the top. In VTT, placement lives in cue settings on the timing line, and you can add those afterward.
| In the SRT | In the VTT we write |
|---|---|
| Times like 00:00:01,500 | Kept, as 00:00:01.500 |
| Cue numbers 1, 2, 3 | Removed (optional in VTT) |
| <i>, <b>, <u> | Kept |
| <font color> | Removed |
| {\an8} (top of screen) | Removed |
| & < > | Escaped as & < > |
Where to use your .vtt file
On your own site, add a track inside the video tag with kind="subtitles", srclang and a label for the captions menu. The file must live on the same domain or be served with CORS headers, or the browser blocks it. Players like Video.js and Plyr read the same .vtt.
Vimeo takes both VTT and SRT in its captions panel, and so does YouTube. Many course platforms and live streaming tools only take VTT. Once converted, you can place a single line near the top by adding line:10% at the end of its timing line, or left-align it with align:start.
- HTML5: <track src="captions.vtt" kind="subtitles" srclang="en" label="English">
- Vimeo: video settings, Distribution, Subtitles, upload the .vtt
- Course platforms: upload the .vtt in the lesson's captions field
More than an SRT to VTT converter. Captions straight from your video.
See also
Frequently asked questions
How do I convert SRT to VTT without losing sync?
Paste or drop the SRT and download the VTT. The start and end of every cue stay the same, down to the millisecond; only the comma becomes a period. If the SRT was already out of sync with the video, the VTT will be too, so fix it first with the subtitle sync tool.
Can I just rename .srt to .vtt?
No. Without the WEBVTT line at the top, browsers reject the whole file, and the millisecond comma trips up many players too. Any & or < in the text also has to become an entity. Converting handles all three fixes in one pass.
Why won't my VTT captions show up on my website?
The usual culprits: the file sits on another domain without CORS, the track lacks the default attribute (captions stay off until the viewer turns them on), or the server sends the .vtt with the wrong content type. It should be text/vtt. The file we hand back is already UTF-8.
Do SRT italics and colors carry over to VTT?
Italics, bold and underline carry over, since VTT uses the same tags. Colors set with <font color> do not, because VTT has no such tag. To color VTT text, you need a class on the text plus a STYLE block or site CSS using ::cue.
Does YouTube accept VTT?
Yes. YouTube Studio accepts both VTT and SRT when you upload captions, so there is no need to convert for YouTube. Converting to VTT matters for your own website, Vimeo and course platforms that only take WebVTT.
Can I convert SRT files for a whole video series?
One file at a time: drop in the next one and download again, no sign-up needed. If two SRT files are halves of the same video, use merge mode to append the second right after the first, then convert the result to VTT.
Don't have the SRT yet? We caption your video for you.
Upload your video or paste a YouTube link. We transcribe it word by word, with the timing of every line, and you download an SRT ready to convert and publish.
See the result on your own recording before adding a card.