What changes between SRT and VTT
The two formats carry the same thing: numbered or unnumbered blocks of a start time, an end time and the caption text. The differences are small but players reject a file that gets them wrong.
| SRT | WebVTT | |
|---|---|---|
| First line | Caption number 1 | WEBVTT |
| Milliseconds | Comma: 00:00:02,400 | Period: 00:00:02.400 |
| Hours | Always written | Optional when zero |
| Cue numbers | Required | Optional |
| Position and styling | Not in the format | Cue settings, STYLE blocks |
How to convert
- 1
Paste or pick the file
The format is detected: a file starting with WEBVTT is VTT, anything else is read as SRT.
- 2
Check the count
It shows how many captions it read and flags overlaps, empty captions or blocks without valid timing.
- 3
Download
The file keeps your name with the new extension: talk.srt becomes talk.vtt.
Worked example
SRT in: 1 ⏎ 00:00:00,000 --> 00:00:02,400 ⏎ I tried every serum on my shelf
VTT out: WEBVTT ⏎ ⏎ 00:00:00.000 --> 00:00:02.400 ⏎ I tried every serum on my shelf
Only the header, the number and the millisecond separator change.
Sources
Questions
What's the difference between SRT and VTT?
VTT starts with a WEBVTT line and uses a period before the milliseconds; SRT numbers each caption and uses a comma. VTT can also carry position and styling, which SRT can't.
Which one should I upload?
HTML5 video players on websites need VTT. Most editors accept SRT. YouTube accepts both, though its VTT support only keeps bold, italic and underline styling.
Is formatting like italics kept?
Tags like <i> and <b> are copied as written. VTT-only cue settings (line, position, align) and STYLE or NOTE blocks are dropped when converting to SRT, since SRT has no place for them.
Is my caption file uploaded?
No. Conversion happens in your browser; the text is never sent anywhere.
My file has odd characters
Save it as UTF-8 first. Older SRT files are sometimes in a Windows code page, which shows accented letters as symbols.