Subtitle Converter
Move a caption file between SRT, VTT and ASS, or take the timings out entirely and keep the words.
- Free
- Runs in the browser
- Timings preserved
How to convert a subtitle file
Choose the file
Press the box at the top of this page and pick your .srt, .vtt or .ass file, or drop it on. It is read in your browser and is not uploaded.
Pick the format you need
SRT, VTT, ASS or TXT. For TXT you also choose the layout: one line per cue, one paragraph, or each line with its start time in front.
Download it
The preview shows the file as it will be saved. Download it, or copy the text.
The four formats, and when each one is right
Caption formats look interchangeable and are not. Picking the wrong one usually shows up as a video that plays with no captions at all and no error explaining why.
The short version: the browser takes WebVTT only, platforms and desktop editors mostly want SubRip, ASS is the one that can carry a look, and TXT is not a caption format at all but is what you want when the destination is a document.
SRT
VTT
ASS
TXT
| Format | Full name | Carries styling | Best for |
|---|---|---|---|
| SRT | SubRip | No | Platform uploads, desktop editors, the safe default |
| VTT | WebVTT | Some | Video on a web page, via the HTML5 track element |
| ASS | Advanced SubStation Alpha | Yes | Local playback and typesetting where the look matters |
| TXT | Plain text | No | Transcripts, show notes, anything read rather than watched |
The same two captions in each format
Every sample below holds the same two cues, so what differs between them is exactly what differs between the formats. The SRT and VTT samples are produced by the same code the editor uses to export captions, so they are what a download from REQO looks like.
1
00:00:01,000 --> 00:00:03,500
This is the first line.
2
00:00:03,500 --> 00:00:06,000
And this is the second.
WEBVTT
1
00:00:01.000 --> 00:00:03.500
This is the first line.
2
00:00:03.500 --> 00:00:06.000
And this is the second.
[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:01.00,0:00:03.50,Default,,0,0,0,,This is the first line.
Dialogue: 0,0:00:03.50,0:00:06.00,Default,,0,0,0,,And this is the second.
This is the first line.
And this is the second.
What actually differs, line by line
Most of the difference between SRT and VTT is two characters and one line. Most of the difference between either of them and ASS is that ASS is a small typesetting language rather than a list of cues.
First line of the file
Time format
Cue numbers
Position on screen
Fonts and colours
Text encoding
| Feature | SRT | VTT | ASS |
|---|---|---|---|
| First line of the file | The first cue number | WEBVTT, always | [Script Info] section, then styles, then [Events] |
| Time format | 00:00:01,000 (comma, milliseconds) | 00:00:01.000 (dot, milliseconds) | 0:00:01.00 (dot, hundredths) |
| Cue numbers | Required | Optional | None; each line starts with Dialogue: |
| Position on screen | Not part of the format | Cue settings such as line and align | Any position, per line |
| Fonts and colours | Not part of the format | Limited, through CSS in the page | Full: named styles, outline, shadow |
| Text encoding | Often not UTF-8 in older files | UTF-8 required | Usually UTF-8 |
Why a converted file will not load
When a caption file is refused, it is almost always one of five things, and a converter that writes the target format properly fixes the first four.
The wrong separator in the times. SRT uses a comma before the milliseconds and VTT uses a dot. A VTT file with commas, which is what renaming an .srt to .vtt produces, is read as having no valid cues at all.
A missing WEBVTT line. A VTT file must start with it, and a browser will not load one that does not.
The encoding. VTT has to be UTF-8. Older SRT files were often saved in a regional encoding, which is why accented letters turn into symbols once the file reaches a web page.
No blank line between cues. Both SRT and VTT separate cues with an empty line, and a file that runs two cues together loses the second one.
The server, not the file. A browser can refuse a track that is not served as text/vtt, and loads one from another domain only when that server allows it. If a valid file works locally and not on the site, this is where to look.
Which format each platform takes
YouTube takes SRT and VTT, among others. Vimeo takes both as well. Facebook takes SRT and reads the caption language from the file name, which has to end in a code such as .en_US.srt. LinkedIn takes SRT.
Instagram and TikTok do not take a caption file with an ordinary post. On those, captions that must look a particular way are burned into the video itself, which the editor can do from the same captions panel.
So SRT is the safe choice for an upload, VTT is the only choice for a web page, and burning in is the choice when the platform will not take a file at all.
Converting up is safe, converting down is lossy
Going from a simpler format to a richer one never loses anything: an SRT converted to ASS keeps every word and timing and gains the ability to be styled, with a default applied that you can then change.
Going the other way drops what the destination cannot express. ASS to SRT loses fonts, colours, positioning and any karaoke or effect tags, keeping only the text and timings. If the styling is the point, burning the captions into the video keeps the appearance permanently instead.
Subtitle formats: questions
Which subtitle formats can I convert between?
SRT (SubRip), VTT (WebVTT) and ASS (Advanced SubStation Alpha) can each be read, and any of them can be written out as SRT, VTT, ASS or plain TXT.
Which format should I use?
VTT for a video on a web page, because the HTML5 track element accepts nothing else. SRT for uploading to a platform or opening in a desktop editor. ASS when the appearance of the captions matters. TXT when you want a transcript rather than captions.
Do the timings change?
Not between SRT and VTT: both store milliseconds, so every cue keeps its exact start and end. ASS stores hundredths of a second, so a conversion to ASS rounds each time to the nearest 10 milliseconds, well below anything a viewer can see. Converting to TXT discards the timings on purpose, because a transcript has no use for them.
Is anything lost when converting?
Only styling, and only in one direction. Going from ASS to SRT or VTT drops fonts, colours and positioning, because those formats cannot express them. Going the other way adds a default style you can then change.
Common conversions
Everything else you can do here.
Convert a subtitle file
Free, in your browser. The file is converted on your device and is not uploaded.