SRT vs VTT comes down to this: SRT (SubRip) is the simplest, most widely supported subtitle format, while VTT (WebVTT) is the web's standard format and adds a header, cue positioning and styling. Both are plain text with numbered or named cues and start and end times, so converting between them takes seconds.
Below you'll see both formats side by side, which one each platform wants, and how to convert in either direction without losing timing.
The short answer
SRT and VTT both store subtitles as plain text with start and end times. SRT uses numbered cues and a comma before milliseconds (00:00:01,000). VTT starts with a WEBVTT header, uses a period (00:00:01.000) and supports positioning and styling. Use SRT for video editors and most uploads; use VTT for HTML5 video on websites.
Key takeaways
- The visible differences: VTT needs a WEBVTT first line, uses a period instead of a comma in timestamps, and doesn't need cue numbers.
- VTT can position and style cues; SRT is basic text with optional simple tags that many players ignore.
- HTML5 video's <track> element uses WebVTT, so websites need VTT. Editors and many platforms take SRT.
- YouTube accepts both, and recommends simple formats like SRT for beginners.
Disclosure: we make QuickVeed and show how to do this in it, along with other ways. Details about other products come from their public pages, checked in October 2026 and linked at the end.
SRT vs VTT: the differences at a glance
| SRT (SubRip) | VTT (WebVTT) | |
|---|---|---|
| File extension | .srt | .vtt |
| First line | The first cue number (1) | WEBVTT (required) |
| Timestamp format | 00:00:01,000 (comma before milliseconds) | 00:00:01.000 (period); hours optional |
| Cue numbers | Required, in order | Optional cue identifiers |
| Positioning | Not part of the format | Cue settings: line, position, align, size, region |
| Styling | Basic tags in some players | CSS via ::cue and STYLE blocks |
| Comments and metadata | No | NOTE blocks |
| Character encoding | Often UTF-8, sometimes older encodings | UTF-8 |
| Native in HTML5 video | No | Yes, through the <track> element |
| Best for | Editors, uploads, maximum compatibility | Websites and web players |
In practice the two look almost identical. The differences that break things are the header and the comma or period in timestamps: a browser will refuse an SRT file passed as a track, and some editors will reject a VTT file.
What an SRT file looks like
An SRT file is a list of cues separated by blank lines. Each cue has a number, a timing line and one or two lines of text:
100:00:01,000 --> 00:00:03,500Welcome to the demo.200:00:03,600 --> 00:00:06,200Today we'll set up your first project.
That's all there is to it, which is why almost every tool reads SRT. YouTube's help page notes that only basic SRT files are supported, without styling markup, and that files should be saved as plain UTF-8.
What a VTT file looks like
A WebVTT file starts with the line WEBVTT, then cues in a similar layout. Timestamps use a period, cue numbers are optional, and settings can follow the timing:
WEBVTT00:00:01.000 --> 00:00:03.500Welcome to the demo.00:00:03.600 --> 00:00:06.200 line:10% align:centerToday we'll set up your first project.
The second cue above is placed near the top of the frame with the line setting. The WebVTT specification also defines position, align, size, vertical and region settings, CSS styling through the ::cue pseudo-element, and NOTE blocks for comments. Support for these extras varies by player: YouTube, for example, describes its WebVTT support as an initial implementation with positioning and only bold, italic and underline styling.
When to use SRT and when to use VTT
| Where the subtitles are going | Use | Why |
|---|---|---|
| YouTube | SRT (or VTT) | Both are accepted; SRT is the simple, recommended starting point |
| Your own website (HTML5 <video>) | VTT | The <track> element reads WebVTT |
| Web players such as Vimeo or a course platform | Check the platform; VTT or SRT | Most accept both |
| Premiere Pro, DaVinci Resolve, Final Cut, CapCut | SRT | The safest import format for editors |
| Burning captions into the video with HandBrake or FFmpeg | SRT | Simple and widely supported |
| Captions that must sit at a specific spot on screen | VTT | SRT has no positioning in the format |
If you're unsure, keep an SRT master and generate a VTT when a web player asks for one. SRT is the format more tools read; VTT is what browsers read.
How to convert SRT to VTT (and VTT to SRT)
Converting by hand is simple for a short file:
- Add the line WEBVTT at the top, followed by a blank line.
- Replace the comma before the milliseconds in every timestamp with a period (00:00:01,000 becomes 00:00:01.000). Change only the timing lines, not commas in your text.
- Optionally delete the cue numbers; VTT doesn't need them.
- Save the file as UTF-8 with the .vtt extension.
VTT to SRT is the reverse: remove the header and any STYLE or NOTE blocks, number the cues from 1, change periods in timestamps to commas, add hours if they're missing (01:02.500 becomes 00:01:02,500), and strip cue settings from the timing lines.
For anything longer than a few cues, use a converter. Our free SRT to VTT converter works in both directions in your browser and nothing is uploaded. Desktop subtitle editors and FFmpeg (ffmpeg -i subs.srt subs.vtt) can convert too.
Getting SRT and VTT from a video in QuickVeed
If you don't have a subtitle file yet, QuickVeed's Captions & subtitles tool transcribes your video (up to 3 hours), lets you correct every line, and gives you SRT, VTT and TXT downloads for the original language and each translation. A transcript costs 1.5 credits a minute, rounded up: 2 credits for a 1-minute clip, 15 for a 10-minute video, 90 for an hour. Translations into any of 32 languages keep the same timing and usually cost a credit or two per language.
Common SRT and VTT problems and how to fix them
Most upload errors come down to a handful of small mistakes. Check these before you blame the platform.
| Problem | Likely cause | Fix |
|---|---|---|
| Platform says the file is invalid | Wrong timestamp separator (comma in VTT, period in SRT) or a missing WEBVTT line | Convert the file properly instead of renaming it |
| Accented letters or non-Latin text show as boxes or symbols | The file was saved in an older encoding, not UTF-8 | Re-save as UTF-8 in a text editor or subtitle editor |
| Only the first few lines appear | A missing blank line between cues, so two cues merge | Make sure exactly one blank line separates every cue |
| Cues appear in the wrong order | SRT cue numbers or times out of sequence | Sort by start time and renumber from 1 |
| Subtitles are early or late throughout | The file was made for a different cut of the video | Shift all times with a subtitle time shifter |
| Styling or positioning ignored | The player doesn't support those VTT features | Keep the text plain, or burn the captions into the video |
Two habits prevent most of these. Keep one clean master file, in SRT or VTT, that you edit and convert from, rather than editing copies. And open the final file in a plain-text editor before you upload: if the first line, the timestamps and the blank lines look right, the file almost always works.
Hours, line breaks and long cues
SRT always writes the hours (00:01:02,500). In VTT the hours are optional when they're zero, so 01:02.500 is valid VTT but would break as SRT; good converters add them back. Line breaks inside a cue are kept by both formats, so a two-line cue stays two lines after conversion. Neither format limits how long a cue is, but readers do: one or two lines of up to about 42 characters each is a common limit. Our guide to subtitle reading speed explains the numbers.
Other subtitle formats you'll meet
SRT and VTT cover most needs, but YouTube's list of supported files shows how many others exist. You may be sent one of these:
- SBV or SUB (SubViewer): a simple format like SRT with a different time layout. YouTube treats it as a basic format.
- ASS and SSA: formats from fan subtitling with rich fonts, colours, karaoke effects and positions. Good for styled burn-ins with FFmpeg; rarely accepted by platforms as a soft track.
- TTML and DFXP: XML formats used in broadcast and streaming. YouTube supports them partially, including styling and positioning.
- SCC (Scenarist): a broadcast closed-caption format based on CEA-608. YouTube calls it the preferred format when captions use CEA-608 features.
If you're sent one of these and need SRT or VTT, open it in a subtitle editor and export. For everyday web and social work, SRT as your master and VTT for websites is enough.
Frequently asked questions
Is SRT or VTT better?
Neither is better overall. SRT is simpler and more widely accepted; VTT is the web standard and supports positioning and styling. Use VTT for HTML5 video on websites and SRT nearly everywhere else.
Does YouTube accept VTT files?
Yes. YouTube lists both SubRip (.srt) and WebVTT (.vtt) among its supported subtitle formats, and recommends simple formats such as SRT for beginners.
Can I just rename .srt to .vtt?
No. A VTT file needs the WEBVTT header and periods instead of commas in its timestamps. Renaming alone gives a file browsers will reject.
Do VTT files support colours and fonts?
The WebVTT standard supports CSS styling through ::cue, but players differ in how much they honour. Many platforms show only bold, italic and underline.
What encoding should subtitle files use?
UTF-8. WebVTT requires it, and YouTube asks for plain UTF-8 SRT files. It's also the only safe choice for non-Latin scripts such as Arabic, Hindi or Bengali.
Try it with your own video
Upload a video and download its subtitles as SRT and VTT. Upload a video, pick a caption style, and judge the subtitles for yourself. QuickVeed plans start at $18/month, and new accounts get a 14-day trial with 75 credits, no card needed. Sign up or see pricing.
Sources
Competitor details in this post were checked against these public pages in October 2026. Products and prices change, so confirm with each vendor before you decide.


