# SRT to VTT converter (https://voicelabs.now/tools/srt-to-vtt)

To convert SRT to VTT, add a "WEBVTT" line at the top, change the comma before the milliseconds in every timestamp to a period (00:00:01,000 becomes 00:00:01.000), and remove formatting WebVTT does not support. This converter does all three, in either direction, and lists anything it had to drop.

This converter's home is Shorty, VoiceLabs' sister product from Devino Solutions for subtitles and captions. Open Shorty's SRT to VTT converter: https://aishorty.com/tools/srt-to-vtt

Use the tool in a browser at https://voicelabs.now/tools/srt-to-vtt: no sign-up, nothing to install.

## Use it from a script

No key and no account. JSON by default, Markdown for `Accept: text/markdown`, the file itself with `download=1`.
Docs and OpenAPI: https://voicelabs.now/docs/free-tools-api

```sh
curl -s https://voicelabs.now/api/tools/srt-to-vtt \
  -F file=@subtitles.srt -F download=1 -o subtitles.vtt
```

## Questions

### What is the difference between SRT and VTT?

SRT (SubRip) is a numbered list of cues, each with a start and end time written with a comma before the milliseconds (00:00:01,000). WebVTT (.vtt) is the W3C format the HTML5 <track> element reads: it starts with a "WEBVTT" line, writes a period before the milliseconds, and adds cue settings (position, line, alignment), CSS styling and NOTE comments. Browsers play WebVTT natively; most video editors and players read both.

### Does converting change the timing?

No. Every start and end time is copied to the millisecond; only the way it is written changes. If your subtitles are out of sync with the video, shift them with the subtitle timing shift tool instead.

### What happens to bold, italics and colours?

<b>, <i> and <u> are kept both ways. Going to WebVTT, SRT <font> colour tags and {\an8}-style position codes are removed, because WebVTT styles cues with CSS and cue settings instead. Going to SRT, WebVTT voice, class, language and ruby tags, cue settings and NOTE, STYLE and REGION blocks are removed, because SubRip has nothing to hold them. Each removal is listed under the result.

### Is my subtitle file uploaded?

With JavaScript on, the work happens in your browser and the file is never sent anywhere. With JavaScript off, the form sends the file to the VoiceLabs free tools API, which processes it in memory, returns the result as a download and keeps no copy.

### Is there a size limit?

A file can be up to 2 million characters, far more than a feature film's subtitles. The API takes 30 calls a minute and 300 a day from one address, with no key.
