Guide
SRT vs VTT: the difference between the two subtitle formats
By Rakshit · Updated
SRT and VTT are both plain-text subtitle files with timed cues. A VTT (WebVTT) file starts with a WEBVTT line, writes milliseconds after a full stop, and can carry comments, styles and positioning. An SRT file, as in YouTube's example, numbers its cues, uses a comma before the milliseconds, and in YouTube's help pages carries no style markup. Use VTT for web players and SRT where a site asks for it.
The differences at a glance
Both formats do the same basic job: a list of text snippets, each with a start time and an end time. Most of the differences are in the details around that list. The table below sticks to what the W3C specification and the YouTube, LinkedIn and W3C pages say, and marks where a fact is missing.
| SRT (SubRip, .srt) | WebVTT (.vtt) | |
|---|---|---|
| First line | A cue number, in YouTube's example | The text WEBVTT, then a blank line |
| Timestamp | 00:00:00,599 --> 00:00:04,160 with a comma before the milliseconds | 00:00:00.599 --> 00:00:04.160 with a full stop before the milliseconds |
| Hours | Shown in YouTube's example | Optional, but required when non-zero |
| Cue numbers or names | Numbered cues in YouTube's example | Optional identifier; if used, it must be unique and must not contain --> |
| Comments | Not documented in anything we read | NOTE blocks, ignored by the parser |
| Styling | YouTube: no style info (markup) is recognized in basic formats | STYLE blocks hold CSS; text can use b, i, u, class, voice and language tags |
| Position on screen | Not covered in the pages we read | Cue settings: vertical, line, position, size, align and region |
| Encoding | YouTube: plain UTF-8 | UTF-8, labelled text/vtt |
| Specification | None found in the pages we read | W3C Candidate Recommendation Draft, 20 May 2026 |
The same caption in both formats
The timing below is the example YouTube uses in its help pages. The words are ours. This is an SRT cue:
- 1
- 00:00:00,599 --> 00:00:04,160
- Welcome back to the show.
And this is the same cue as WebVTT. Notice the header, the full stop in the timestamps and the missing number:
- WEBVTT
- (blank line)
- 00:00:00.599 --> 00:00:04.160
- Welcome back to the show.
WebVTT can go further. A cue can start with a name, carry settings after the timestamps, hold a speaker tag, or contain timestamps inside its text to mark when part of the line becomes active. SRT, as far as the pages we read go, stops at timing and text.
Where each format is accepted
| Where | What the vendor's own page says |
|---|---|
| YouTube | SubRip .srt is a basic format: only basic versions are supported, no style markup is recognized, and the file must be plain UTF-8. WebVTT .vtt is listed under advanced formats as in initial implementation: positioning is supported, styling is limited to b, i and u. YouTube suggests SubRip or SubViewer to anyone new to caption files, because they can be edited in a plain text editor |
| LinkedIn video ads | Captions must be an SRT file with plain text only |
| Web pages | W3C names WebVTT as the most common caption format on the web and lists SRT and TTML as others. The WebVTT specification describes the format as mainly for the HTML track element |
We could not read caption-upload rules for TikTok, Instagram, Facebook or Vimeo in this pass, so this page does not say what they accept. Check the upload screen or help page of the platform you are using.
Converting between SRT and VTT
Renaming the file does not work, because the contents differ. To go from SRT to VTT:
- Add WEBVTT as the first line, followed by a blank line.
- Change the comma before the milliseconds in every timestamp to a full stop.
- Keep or remove the cue numbers. In WebVTT they are optional identifiers and must be unique if present.
- Save as plain UTF-8 with the .vtt extension.
To go the other way, remove the header, NOTE blocks, STYLE blocks and cue settings, give each cue a number as in YouTube's example, switch the full stop to a comma, and save as UTF-8. Anything WebVTT carried that the SRT file cannot hold, such as styles, is lost. For batches, the SRT to VTT converter does the swap for you.
Which one should you use?
- Uploading to YouTube and you do not need styling: SRT is the simplest and YouTube recommends it for beginners.
- Publishing on your own site with an HTML video player: WebVTT, since the specification says its main use is the HTML track element.
- Posting a short clip on a social app: we found no caption-file rules for these apps, so burning the captions into the video is the route that does not depend on them; see captions vs subtitles for the trade-off.
- A platform asks for SRT, as LinkedIn does for video ads: give it SRT, plain text only.
KeyMo's captions are burned into the picture, so a KeyMo clip does not need an SRT or VTT file to show its words. These formats matter when you publish a full-length video with a caption track. KeyMo's job starts after that: turning the long video into captioned vertical clips. For the glossary versions, see SRT file and VTT.
Sources: W3C: WebVTT, The Web Video Text Tracks Format (checked 11 October 2026); WHATWG HTML Standard: media elements and the track element (checked 11 October 2026); YouTube Help: Supported subtitle and closed caption files (checked 11 October 2026); W3C WAI: Captions/Subtitles (checked 11 October 2026); LinkedIn Marketing Solutions Help: Video ads specifications (checked 11 October 2026).