Converters SRT ⇄ VTT Converter

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? becomes Asha: Where were you?, so the speaker isn't lost.
  • Cue settings (line:0 align:start), cue names such as intro, 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 as 00: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