SRT ⇄ VTT Converter
Convert SubRip (.srt) subtitles to WebVTT (.vtt) for HTML5 video, or VTT back to SRT. Works with files up to 200MB.
Or convert a file directly — supports files up to 200MB
Drag & drop a file here, or click to browse
Processed in the background, so the page stays responsive even for huge files
How to use this tool
Choose SRT → VTT or VTT → SRT, then paste the captions or upload the file. The converted text appears as you type; Download saves it with the new extension. Files over 5 MB skip the editor and convert in the background, up to 200 MB.
Worked example: an SRT that needs tidying
This SRT has three problems: no blank line after the first cue, an {\an8} tag that moves a sign to the top of the screen, and a <font> colour tag.
1
00:00:01,000 --> 00:00:03,000
{\an8}Sign: CLOSED
2
00:00:02,000 --> 00:00:04,000
<font color="#ffff00">Yellow</font> and <i>italic</i>WEBVTT 00:00:01.000 --> 00:00:03.000 line:0 Sign: CLOSED 00:00:02.000 --> 00:00:04.000 Yellow and <i>italic</i>
The second timing line is recognised as a new cue even without the blank line. {\an8} becomes the WebVTT setting line:0, so the sign still shows at the top instead of printing the tag as text. WebVTT has no font tag, so the colour is dropped and the word kept, while <i> works in both formats.
Going the other way: VTT → SRT
- A voice tag such as
<v Asha>Where were you?becomesAsha: Where were you?, so the speaker isn't lost. - Cue settings (
line:0 align:start), cue names such asintro, and NOTE, STYLE and REGION blocks are dropped; SRT has no place for them. - Class spans like
<c.yellow>and in-cue karaoke times like<00:00:03.000>are removed, leaving the words. - Short timestamps without hours, such as
00:02.505, are read correctly and written in full as00:00:02,505.
Frequently Asked Questions
Why does HTML5 video need VTT instead of SRT?
The HTML5 <track> element's spec requires WebVTT specifically — browsers don't natively parse .srt files for captions on a <video> element. If you're adding captions to a web video player without a third-party subtitle library, VTT is the format the browser actually understands.
The VTT converts fine but the captions don't show on my site. Why?
Check where the file is served from. If the .vtt is on a different domain from the page, such as a CDN, the browser only loads it when the <video> element has a crossorigin attribute and the server sends a matching Access-Control-Allow-Origin header. Also make sure the <track> element has kind="subtitles" or kind="captions" and a srclang, and that the file is reachable at the address in its src.
Are the cue numbers kept when going from SRT to VTT?
No. WebVTT cue identifiers are optional, and an SRT number carries no meaning a player uses, so the VTT is written without them. Going back to SRT, cues are numbered 1, 2, 3 in file order, whatever names or numbers the VTT had.
Related Tools
Related Blog Posts
SRT vs VTT vs ASS — Subtitle Formats Compared
The same caption written in SRT, WebVTT and ASS, what each format can express, and exactly what survives when you convert between them: timing precision, italics, positioning and speaker tags.
Read moreHow to Convert JSON to Excel, CSV, XML and YAML (and Back)
What actually happens to your data when JSON becomes a spreadsheet, XML, or YAML: missing keys, nested values, leading zeros, and the XML array problem, with real converter output.
Read moreConverting CSV and XML to Excel Without Losing Data
Why double-clicking a CSV mangles PIN codes, long IDs and ₹ signs, what a careful CSV-to-Excel conversion does instead, and how XML records map to spreadsheet columns.
Read more