Blog / Guides / SRT vs. VTT: Which YouTube Subtitle Format Do You Need?
Guides 6 min read â€ĸ November 13, 2026

SRT vs. VTT: Which YouTube Subtitle Format Do You Need?

Founder

SRT and VTT both store the same thing — timed caption cues — but they're not interchangeable at the syntax level, and not every tool accepts both. Scriptube exports either one from the same underlying transcript, so the choice comes down to where the file is going, not what data you're missing.

If you've never looked closely at either format before, the differences are small enough to miss at a glance but large enough to break a strict parser — which is usually where "why won't this file load" problems come from.

SRT syntax

SRT (SubRip) numbers each cue, then gives a timestamp range using a comma for milliseconds:

1
00:00:12,400 --> 00:00:14,500
so today we're going to look at

2
00:00:14,500 --> 00:00:17,900
how timestamps actually work

VTT syntax

VTT (WebVTT) opens with a WEBVTT header, uses a period instead of a comma for milliseconds, and doesn't require cue numbers:

WEBVTT

00:00:12.400 --> 00:00:14.500
so today we're going to look at

00:00:14.500 --> 00:00:17.900
how timestamps actually work

The differences that matter

SRTVTT
File headerNoneWEBVTT required on the first line
Millisecond separatorComma (,500)Period (.500)
Cue numbersRequiredOptional
File extension.srt.vtt
Native web playbackNot supported directlyRequired for the HTML5 <track> element

Which one do you actually need?

  • Uploading to YouTube Studio — YouTube Studio accepts several subtitle formats, SRT and VTT both among them, so either works; use whichever your workflow already produces.
  • Embedding captions on your own website — VTT is what the browser's native <track> element expects. SRT won't work there without converting it first.
  • Importing into a desktop video editor — SRT is the older, more broadly supported format across editing tools; check your specific editor if you're unsure which it expects.

If you don't know yet where the file is going, VTT is the safer default — it covers both web playback and most upload workflows that also accept SRT.

Overlapping cues get cleaned up either way

YouTube's auto-generated captions use rolling, overlapping cue windows that look fine in YouTube's own player but produce messy, duplicated-looking lines in a raw subtitle file. Scriptube cleans these up during export, so both the SRT and VTT you download are a clean, non-overlapping sequence of cues rather than a literal dump of YouTube's internal caption timing.

Converting between the two

Because both formats carry the same cue structure — a timestamp range plus text — converting one to the other is mostly mechanical: add or remove the WEBVTT header, swap the comma/period in the millisecond field, and add or drop cue numbers. If you only have one format handy and need the other for a specific tool, it's worth checking whether that tool can read the format you already have before converting, since both are widely supported for one-way import in most caption and editing software.

Exporting in a specific language

If a video has more than one caption track, pair the format parameter with language to get the SRT or VTT for a specific track rather than the default:

curl "https://scriptube.me/api/v1/transcripts/{batch_id}/export?format=srt&language=es" \
  -H "X-API-Key: YOUR_API_KEY" -o captions_es.srt

This works the same for auto-translated tracks as it does for native ones — see translating a transcript into any language for how language selection and translation interact.

A worked example

Submit https://www.youtube.com/watch?v=dQw4w9WgXcQ, then export it both ways to compare:

curl "https://scriptube.me/api/v1/transcripts/{batch_id}/export?format=srt" \
  -H "X-API-Key: YOUR_API_KEY" -o captions.srt

curl "https://scriptube.me/api/v1/transcripts/{batch_id}/export?format=vtt" \
  -H "X-API-Key: YOUR_API_KEY" -o captions.vtt

Both files describe the exact same timed content — the only difference is the syntax wrapping it.

How to do it in Scriptube

  1. Process the video as usual, from the dashboard or the API.
  2. On the batch or video page, choose SRT or VTT from the export options, or call /export?format=srt / ?format=vtt directly.
  3. Upload or embed the file wherever it's needed — no further conversion required.

If you need a different export format entirely — plain text, CSV, JSON, or JSONL — see exporting transcripts to SRT, VTT, and TXT for the full rundown, or the developer schema reference if you're parsing exports programmatically.

Quick answers to common questions

Is one format more accurate than the other? No — both come from the same stored segments, so the cue text and timing are identical. The only difference is syntax.

Do I need to pick one and stick with it? No — you can export the same video as both SRT and VTT whenever you need either, at no extra cost beyond what the video itself already cost to process.

Can I get the raw timing data instead of a subtitle file? Yes — call the batch endpoint with include_segments=true and you get the same {text, start, duration} segments as a JSON response. The plain JSON, CSV, and JSONL exports don't carry timing themselves; that endpoint and the SRT/VTT exports are the two places timing lives. See every way to get timestamps out of a transcript for the full rundown.

Related reading

For every way to pull timed data out of a transcript, not just subtitle files, see YouTube transcript with timestamps: every way to get one. If the subtitles are going onto your own uploaded video rather than being used elsewhere, creating subtitles for YouTube videos using transcripts covers the upload steps in YouTube Studio.

A note on file size

Neither format adds meaningful overhead over the other — a VTT file's header is a single line, and dropping cue numbers in VTT roughly offsets the bytes SRT spends on them. For a long video, the practical difference in file size between the two is negligible; pick based on compatibility, not size.

Create a free account and export your first SRT or VTT file, or check the export endpoint in the API docs.

Try Scriptube Free

Extract YouTube transcripts instantly. No credit card required.

Get Started

Related Articles

Guides

Get a YouTube Transcript in 10 Seconds (No Extension Needed)

The fastest way to get a YouTube transcript is to paste the video link into Scriptube and submit it — no browser extension, no bookmarklet, nothing to install....

Guides

YouTube Transcript with Timestamps: Every Way to Get One

Every transcript Scriptube processes stores timed segments, not just plain text — each one carries its own start time and duration down to the second. You...

Guides

YouTube Channel Transcripts at Scale: Limits and Costs

Paste a channel URL or @handle into Scriptube instead of a single video link, and it becomes a channel batch: the channel's videos get transcribed, newest...