Subtitle formats
SRT vs VTT
Last updated: 2026-06-11
The core difference: SRT timecodes use a comma (00:00:01,000) and the file stores only numbered cues with text, while WebVTT timecodes use a dot (00:00:01.000), must start with the line WEBVTT, and add positioning, comments, and CSS styling. Both are plain UTF-8 text. Choose SRT for the widest desktop-player support; choose WebVTT for HTML5 video and any caption that needs placement or color.
Neither format is "newer and better" across the board. SRT wins on universal compatibility and simplicity; WebVTT wins on web playback and styling. The right pick depends on where the file will be played.
Side-by-side comparison
| Feature | SRT | WebVTT |
|---|---|---|
| Extension | .srt | .vtt |
| Header line | None | WEBVTT |
| Timecode separator | , comma | . dot |
| Timecode example | 00:01:14,500 | 00:01:14.500 |
| Cue index | Required integer | Optional identifier |
| Positioning | No | Yes (cue settings) |
| CSS styling | No | Yes (STYLE / ::cue) |
| Comments | No | NOTE |
| HTML5 <track> | Not native | Native |
| Encoding | UTF-8 (no BOM) | UTF-8 (required) |
Timecode punctuation: comma vs dot
The single most important practical difference is the millisecond separator. SRT writes 00:00:01,000 with a comma; WebVTT writes 00:00:01.000 with a dot. Mixing them is the top cause of a file refusing to parse. When you convert SRT to VTT you must replace every comma in a timecode line with a dot, and vice versa. Read subtitle timecodes explained for the full timing model.
Styling and metadata
WebVTT carries far more than text. Cue settings place captions; a STYLE block applies CSS through ::cue; NOTE lines hold comments; and cue identifiers let scripts target individual cues. SRT, by contrast, stores only the index, timecode, and text — a few players read inline <i> <b> <u> tags, but that is the limit. If you need colored or positioned captions, the choice is made for you: use WebVTT.
Player and browser support
SRT is read by nearly every desktop and TV media player — VLC, MPC, Kodi, and most smart TVs load a sidecar .srt automatically. WebVTT is the format browsers expect for the HTML5 <track> element, so Chrome, Firefox, Safari, and Edge play it without conversion. Streaming protocols like HLS reference WebVTT segments. For a file a person downloads and opens in a desktop app, SRT is the safest default; for video on a web page, WebVTT.
Which to choose
Pick SRT when the file is a downloadable sidecar for desktop or TV players, when you only need plain timed text, or when a tool you use only exports SRT. Pick WebVTT when the video plays in a browser, when captions need positioning or color, or when you publish through a streaming platform. When you translate, keep the format the same and change only the words — see how to translate an SRT file.
Key facts
- SRT timecode: 00:00:01,000 (comma). WebVTT: 00:00:01.000 (dot).
- WebVTT requires the WEBVTT header; SRT has no header.
- Only WebVTT supports positioning (cue settings) and CSS styling.
- SRT cues need a sequential integer index; WebVTT identifiers are optional.
- WebVTT is native to HTML5 <track>; SRT is not.
- Both are plain UTF-8 text and translate the same way: text only.
Definitions
- SRT
- SubRip Subtitle. Plain-text, comma timecodes, numbered cues, no styling in the core spec.
- WebVTT
- Web Video Text Tracks. Plain-text, dot timecodes,
WEBVTTheader, positioning and CSS. - Timecode punctuation
- SRT uses a comma (
,mmm); WebVTT uses a dot (.mmm). The key parsing difference. - Cue settings
- WebVTT-only placement options after the end time, e.g.
line:0 align:center. SRT has none. - <track> element
- The HTML5 element that loads captions. Accepts WebVTT natively; not SRT.
- STYLE block
- WebVTT-only CSS block using
::cue. SRT cannot carry stylesheets.
Related guides
FAQ
What is the main difference between SRT and VTT?+
SRT timecodes use a comma (00:00:01,000) and the file stores only timing and text. WebVTT timecodes use a dot (00:00:01.000), the file must start with the line WEBVTT, and it supports positioning, comments, and CSS styling.
Is SRT or VTT better for web video?+
WebVTT is better for web video. It is the native format for the HTML5 <track> element, so browsers read it without conversion. SRT is not supported by <track> and must be converted to VTT first.
Can I convert SRT to VTT by renaming the file?+
No. You must add the WEBVTT header line at the top and change every timecode comma to a dot. Just changing the .srt extension to .vtt leaves invalid timecodes and a missing header, so browsers reject it.
Which format has wider player support?+
SRT has the widest support across desktop and TV media players such as VLC, MPC, and most smart TVs. WebVTT dominates browsers and streaming. For a downloadable file someone plays in a desktop app, SRT is the safer default.
Does VTT support colors and positioning that SRT does not?+
Yes. WebVTT supports cue settings (line, position, align, size) and CSS via STYLE blocks and ::cue, so you can place and color captions. Core SRT has no positioning or styling; a few players read inline <i>, <b>, <u> tags only.
Do both formats use UTF-8?+
Yes. Both are plain text and should be saved as UTF-8. WebVTT requires UTF-8; SRT works best as UTF-8 without a BOM. Non-UTF-8 encodings cause garbled characters in both.
Will translation change which format I should use?+
No. Translate within the same format — an SRT stays SRT, a VTT stays VTT — and only the text changes. Timecodes, the header, and cue settings should be preserved exactly.