Subtitles are one of the most useful things you can pull from a YouTube video. They turn a video into a searchable, quotable, translatable text file. They make your own clips accessible. They give you a transcript without paying for a transcription service. And they are usually free for the taking, because YouTube already produced them.
This guide covers the full picture: what the formats are (SRT, VTT, auto-generated), how to download them in a browser or from the command line, and the edge cases — translations, missing tracks, broken timing — that cause people to give up and re-type captions by hand.
Just need the subtitles right now? Paste your YouTube URL into TubePull, set the format dropdown to Subtitles (SRT) or Subtitles (VTT), pick a language, and download. Works on auto-generated and manual tracks.
SRT vs. VTT — what's the actual difference?
Both formats pair lines of text with start/end timecodes so a video player can show captions on screen. The differences matter when moving files between tools.
SRT (SubRip Subtitle) is the older, simpler format. Every cue is a number, a start-and-end timestamp, and one or more lines of plain text:
1
00:00:01,200 --> 00:00:04,500
Welcome back to the channel.
2
00:00:04,800 --> 00:00:07,000
Today we're testing the new robot arm.
No styling, no positioning, no metadata. That simplicity is why SRT is the universal currency of subtitles — Premiere Pro, Final Cut, DaVinci Resolve, VLC, MX Player, OBS, and essentially every editing tool reads it without complaint (Ditto Transcripts).
VTT (WebVTT, "Web Video Text Tracks") is the W3C-standardized format designed for the HTML5 <track> element. The structure looks similar, but with three important differences:
WEBVTT
00:00:01.200 --> 00:00:04.500
Welcome back to the channel.
00:00:04.800 --> 00:00:07.000 line:90% align:center
Today we're testing the new robot arm.
- The file must start with
WEBVTTon the first line. - The millisecond separator is a period (
.), not a comma — per the W3C WebVTT spec and MDN. - VTT supports cue settings (
line:,align:,position:), inline styling, speaker labels, regions, and chapter tracks.
Practically, the choice is simple:
- Editing captions into a video, importing into a video editor, sharing with someone who'll use VLC: use SRT.
- Embedding into a web page with
<video><track src="captions.vtt">: use VTT. - Re-uploading to YouTube, Vimeo, or another platform: either works, but SRT is more universally accepted.
Converting between them is a find-and-replace job — change the comma to a period, prepend WEBVTT. The W3C wiki documents the exact steps, and yt-dlp can do the conversion automatically.
Manual captions vs. auto-generated — and why it matters
YouTube serves two distinct kinds of caption tracks.
Manual captions are written or reviewed by a human. They have proper punctuation, capitalization, and speaker labels. If the caption track in the YouTube player is not labeled "(auto-generated)", it's a manual track.
Auto-generated captions are produced by YouTube's speech recognition. They're available on most videos with clear speech and show up as "English (auto-generated)." Independent testing puts accuracy at 85–95% in studio conditions and 78–82% on noisy outdoor recordings (Notelm test results, 2026). They typically lack punctuation and handle proper nouns and technical jargon poorly.
This distinction matters for downloading: manual captions and auto-captions are stored in different tracks. Most downloaders default to manual only. If a video only has auto-generated captions, the downloader will report "no subtitles available" unless you explicitly request the auto track.
Downloading subtitles with TubePull
- Paste the YouTube URL into tubepull.com.
- In the format dropdown, choose Subtitles (SRT) or Subtitles (VTT).
- Pick the language. The list shows manual tracks first, then auto-generated, then auto-translated. Auto tracks are flagged so you know what you're getting.
- Download. The file lands in your default folder, named with the video title and language code — for example,
team-17792-state-championship.en.srt.
If a video only has auto-generated captions, TubePull surfaces them with the "auto" label. If a video has neither — a music video with no spoken word and no auto-captions — we say so instead of returning an empty file.
For translation: YouTube can auto-translate a manual or auto track into roughly 130 languages. TubePull surfaces the most common targets directly. For less common languages, download the source-language file and run it through a translator that handles SRT or VTT structure (DeepL, Google Translate's document upload, or a CLI like subtranslator) so the timing stays intact.
Downloading subtitles with yt-dlp (power users)
yt-dlp is the reference command-line tool. Every flag below is from the official yt-dlp documentation.
See what's available
yt-dlp --list-subs "https://www.youtube.com/watch?v=VIDEO_ID"
Prints two tables — manual subtitles and auto-generated — with language codes and available formats per track.
Download manual captions only
yt-dlp --write-subs --sub-langs en --skip-download \
"https://www.youtube.com/watch?v=VIDEO_ID"
--skip-download is the important one — without it, you'll also pull the full video file.
Include auto-generated captions
yt-dlp --write-subs --write-auto-subs --sub-langs en --skip-download \
"https://www.youtube.com/watch?v=VIDEO_ID"
--write-auto-subs tells yt-dlp to fall back to (or also include) the auto-generated track. This is the flag people miss — the most common bug report on yt-dlp's subtitle handling is "no subtitles found" when the user just needed this flag.
Multiple languages at once
yt-dlp --write-subs --sub-langs "en,es,fr,pt-BR" --skip-download URL
Or every available language:
yt-dlp --write-subs --sub-langs all --skip-download URL
--sub-langs also accepts regex (en.* for any English variant) and exclusion with a - prefix.
Force SRT output
By default, yt-dlp downloads YouTube's native VTT, which includes per-word timing tags that clutter cue text. To get a clean SRT:
yt-dlp --write-subs --sub-langs en --convert-subs srt --skip-download URL
--convert-subs accepts srt, vtt, ass, or lrc.
Embed into the video file
If you want the video with captions baked in as a soft-subtitle track (VLC, mpv, and most TVs will offer them as a toggle):
yt-dlp --write-subs --sub-langs en --embed-subs URL
Works for mp4, webm, and mkv outputs.
Auto-translations from the command line
Translations show up as additional language codes on the auto track. Request them by language code:
yt-dlp --write-auto-subs --sub-langs ja --skip-download URL
Quality drops on translated auto tracks — you're machine-translating an already-imperfect speech recognition transcript. Use them as a starting point, not a finished translation.
Common edge cases
"No subtitles available" on a video that obviously has captions
Three usual culprits: you forgot --write-auto-subs, the captions are community-contributed (YouTube deprecated these in 2020 — old contributed tracks may still exist but be flaky), or the video is age-restricted and needs authentication. For the third case, yt-dlp's cookies-from-browser flag lets you pass through your logged-in session.
Caption timing is off after editing the video
If you trim the source video and reuse the original SRT, every cue after the cut will be wrong. The fix is to shift timecodes — ffmpeg can do this with -itsoffset, and tools like Subtitle Edit handle it visually.
Garbled text or weird tags in auto-generated VTT
YouTube's auto-generated VTT includes per-word timing tags (<00:00:01.500>) so individual words can highlight as they're spoken. Most editors display these as literal text. The fix is --convert-subs srt, which strips the inline timing tags during conversion.
Right-to-left languages (Arabic, Hebrew, Farsi)
The VTT and SRT specs handle RTL correctly, but some players don't. VLC and mpv handle this out of the box; some embedded TV players don't.
Music videos and lyric tracks
A small number of music videos have lyrics as a manual subtitle track. Worth checking with --list-subs before assuming captions don't exist for music content.
Are downloaded subtitles legal to use?
Subtitles are part of the copyrighted work — same rules as the video itself. Downloading for personal use (search, accessibility, language learning, study) is on solid ground in most jurisdictions. Re-publishing them, embedding them into a re-uploaded copy of someone else's video, or using them as the basis for an unauthorized translation gets murky fast.
See our plain-English legal guide to downloading YouTube content. The short version: personal use for accessibility, quoting in a review, or language learning is fine. Rebroadcasting someone else's work requires their permission.
Quick reference cheat sheet
| Task | TubePull | yt-dlp |
|---|---|---|
| Download manual English captions | Subtitles (SRT) → English | --write-subs --sub-langs en --skip-download |
| Download auto-generated captions | Subtitles → English (auto) | --write-auto-subs --sub-langs en --skip-download |
| Get all available languages | Loop per language | --sub-langs all |
| Force SRT output | Pick "Subtitles (SRT)" | --convert-subs srt |
| Embed captions into MP4 | Not yet — coming soon | --embed-subs |
| List what's available | Visible in language dropdown | --list-subs |