In the SRT vs VTT choice, the short answer is: use VTT (WebVTT) for video embedded on web pages with the HTML5 player, and SRT for uploads to platforms, video editors and desktop players. Both are plain-text files of timed captions; VTT adds a header, a few syntax differences and optional styling and positioning.
Below you will find the exact differences, side-by-side examples, and how to convert between them.
What SRT and VTT files are
Both formats are sidecar subtitle files: a separate text file that sits next to your video and tells the player which text to show and when. Because captions are not burned into the pixels, viewers can turn them on or off, and you can fix a typo without re-exporting the video.
- SRT (SubRip Subtitle) dates back to a DVD-ripping tool and became a de facto standard because it is so simple. It has no formal specification body, which is part of why minor variations exist.
- VTT (WebVTT) is a W3C format designed for the web. It is the format the HTML
<track>element expects. The WebVTT specification defines it formally.
SRT vs VTT syntax, side by side
Here is the same caption in each format. An SRT cue:
1
00:00:04,200 --> 00:00:07,800
Click Settings, then open Billing.
The same cue in VTT:
WEBVTT
00:00:04.200 --> 00:00:07.800
Click Settings, then open Billing.
In a real file, a blank line separates the header from the first cue and each cue from the next.
The differences are small but they matter, because a player that expects one format may reject the other:
| Feature | SRT | VTT |
|---|---|---|
| File header | None | Must start with WEBVTT |
| Millisecond separator | Comma (00:00:04,200) | Period (00:00:04.200) |
| Cue numbers | Expected | Optional cue identifiers |
| Hours in timestamp | Always included | Optional for short videos |
| Positioning | Not standardized | Cue settings for line, position, alignment |
| Styling | Basic tags in some players | Bold, italic, classes, voice tags, CSS via ::cue |
| Comments and metadata | No | NOTE blocks, chapters and metadata tracks |
| Native HTML5 support | No | Yes |
Where each format works
Compatibility is the deciding factor for most people, so here is a practical summary. Platform support changes, so treat this as a guide and check each platform's help pages.
Use VTT for
- Videos on your own website using the native
<video>element and<track>. MDN has a clear WebVTT API guide. - Web players and many video hosts that are built on HTML5 video.
- Cases where you need captions positioned somewhere other than the bottom, for example to avoid covering a toolbar in a screen recording.
Use SRT for
- Uploading to video platforms and course hosts, which very commonly accept SRT.
- Desktop video editors and players such as VLC, which load an SRT with the same base name as the video.
- Handing captions to someone else to edit or translate, since SRT is the most widely understood format.
Many platforms, including YouTube, accept both. If you are not sure, export both files; they are tiny.
How to convert SRT to VTT (and back)
Because the formats are so close, conversion is straightforward for basic captions.
SRT to VTT
- Add
WEBVTTas the first line, followed by a blank line. - Replace the comma before the milliseconds in every timestamp with a period.
- Keep or remove the cue numbers; VTT treats them as identifiers.
- Save with a
.vttextension and UTF-8 encoding.
VTT to SRT
- Delete the
WEBVTTheader and anyNOTE,STYLEorREGIONblocks. - Number each cue sequentially, starting at 1.
- Make sure every timestamp includes hours and uses a comma before the milliseconds.
- Remove cue settings after the timestamps (like
line:10%) and any VTT-only tags.
Styling and positioning do not survive the trip to SRT, so keep the VTT as your master copy if you rely on them.
Generating SRT and VTT files without manual typing
Writing timestamps by hand is tedious. A transcription tool can generate the cues for you, and you only fix the text. Click & Record includes an on-device Whisper model that transcribes your narration with word-level timings, lets you edit or add cues, and exports either SRT or VTT. It runs in the browser, so nothing is uploaded, and the free browser editor does this for any video file without installing the extension. Our walkthrough on adding subtitles to a screen recording for free covers the full process.
A simple rule for choosing
If you only remember one thing from this SRT vs VTT comparison, make it this decision order:
- Is the video going on a web page you control, using the native player? Use VTT.
- Do you need captions positioned or styled? Use VTT, and confirm the destination player respects cue settings.
- Is it going to a platform, editor or someone else for translation? Use SRT unless the destination asks for VTT.
- Still unsure? Export both and keep them next to the video with the same base name.
For screen recordings in particular, positioning can be worth the switch to VTT: captions at the bottom of the frame can cover a status bar, a chat widget or the exact button you are clicking.
Common mistakes with either format
- Wrong encoding. Save as UTF-8, or accented characters and non-Latin scripts turn into garbage.
- Mismatched separators. A single comma in a VTT timestamp can make a browser skip the cue or the whole file.
- Overlapping cues. Some players handle overlaps poorly. Make each cue end before the next starts unless overlap is intentional.
- Captions out of sync after editing. If you trim the video after exporting captions, timings shift. Re-export subtitles after your final cut.
- Missing language info. On the web, set
srclangandlabelon the track so players and assistive tech present it correctly.
Pick VTT for the open web and SRT for everywhere else, and you will rarely go wrong. If captions are part of an accessibility commitment, read how to make tutorial videos accessible with captions next. And if you are also deciding on a video container, see MP4 vs WebM for screen recordings.
Frequently asked questions
Is VTT better than SRT?
Neither is better overall. VTT is the native format for HTML5 video and supports positioning and styling, while SRT is simpler and accepted almost everywhere. Choose based on where the video will play.
Can I convert SRT to VTT?
Yes. Add a WEBVTT header line and change the comma before the milliseconds in each timestamp to a period. Cue numbers can stay. Many tools also export both formats directly.
Which subtitle format does YouTube accept?
YouTube accepts both SRT and VTT, along with several other formats. Check YouTube's help pages for the current list.
Why do my VTT captions not show in the browser?
The most common causes are a missing WEBVTT header, commas instead of periods in timestamps, or the file being served from another origin without the right CORS headers. Also make sure the track element has a srclang and the track is enabled.