VTT to SRT converter
Convert WebVTT (.vtt) captions — from YouTube, Zoom, Vimeo, online courses or HTML5 players — into SubRip (.srt), the format almost every player, TV and editor understands.
Move subtitles by a fixed amount when every line is off by the same delay.
Seconds (2.5), milliseconds (1500ms) or a time (00:00:02,500). Subtitles appear too early → Later.
For subtitles that drift. Pick two cues far apart and enter when each should appear.
Rescale times when the subtitle was made for a video with a different frame rate.
The file open now is part 1 / language 1.
Cues
Save options
Output preview
How to convert VTT to SRT
- Open the VTT file. Click Open subtitle file or drop your .vtt file onto the tool. You can also paste the text.
- Choose SRT. “SubRip (.srt)” is preselected in the Save as menu.
- Fix anything else (optional). Shift or sync the timing, repair the encoding or clean up overlaps before saving.
- Download. Click Download to save the .srt file in UTF-8, or Copy to paste it elsewhere.
What changes when you convert VTT to SRT
The converter numbers every cue, switches timestamps to the SRT style with a comma (00:01:02.500 becomes 00:01:02,500) and removes the WEBVTT header, NOTE comments and STYLE blocks, which SRT has no place for.
WebVTT voice spans (<v Speaker>), class spans (<c.yellow>), ruby text and karaoke timestamps inside cues are removed so the text displays cleanly; italic, bold and underline survive. Cues positioned at the top of the screen are marked with {\an8}, which VLC, mpv, Plex and most TVs honor.
Short timestamps without hours (01:02.500) are expanded to the full 00:01:02,500 form, and HTML entities such as & are turned back into normal characters.
Example
The first lines of the built-in sample as VTT, and the result of the conversion:
VTT input
WEBVTT 00:00:01.200 --> 00:00:03.400 [waves crashing] 00:00:03.600 --> 00:00:06.100 MARA: You kept the lamp burning all night again. 00:00:06.300 --> 00:00:08.900 Someone has to. The fog came in early. 00:00:09.100 --> 00:00:12.000 <i>The ships don't need us anymore.
SRT output
1 00:00:01,200 --> 00:00:03,400 [waves crashing] 2 00:00:03,600 --> 00:00:06,100 MARA: You kept the lamp burning all night again. 3 00:00:06,300 --> 00:00:08,900 Someone has to. The fog came in early.
VTT vs SRT at a glance
| VTT | SRT | |
|---|---|---|
| Full name | WebVTT | SubRip |
| File extension | .vtt | .srt |
| Timestamp example | 00:01:02.500 | 00:01:02,500 |
| Time precision | Milliseconds | Milliseconds |
| Styling | Classes with CSS, <i>, <b>, <u>, voice spans | Basic: <i>, <b>, <u>, <font color> |
| Positioning | Cue settings: line, position, align, size | Only through unofficial {\an8} tags |
| Header | Required "WEBVTT" first line | None — numbered blocks |
| Works with | HTML5 <track>, browsers, YouTube, Vimeo, streaming players | Almost every player, TV, editor and video platform |
Read the full comparison in SRT vs VTT vs ASS, or see all converters.
FAQ
How do I convert YouTube auto-captions VTT to SRT?
Open the .vtt file here and save as SRT. Auto-generated captions often repeat words across overlapping cues — run Fix → overlaps and duplicates before saving for a cleaner file.
Do I lose anything converting VTT to SRT?
Only styling that SRT cannot express: CSS classes, exact positions other than top or bottom, and voice labels. The text and timing are kept exactly.
Are my subtitle and video files uploaded?
No. Files are opened and processed by JavaScript in your browser, on your own device. Nothing is sent to a server, so unreleased or private material stays private.