yt-dlp Subtitles: Download YouTube Subtitles and Transcripts (Tested Commands, 2026)
The yt-dlp commands to download only the subtitles or automatic captions of a YouTube video, convert them to SRT, and turn them into a plain-text transcript. Each one run on 12 November 2026, with the errors we hit and how to fix them.
00:06:00 · NOV 12, 2026
Quick answer
yt-dlp --skip-download --write-subs --write-auto-subs --sub-langs en --convert-subs srt "https://www.youtube.com/watch?v=VIDEO_ID"What we tested
Every command here was run on 12 November 2026 with yt-dlp 2026.10.26 on macOS, against Tim Urban's TED talk on procrastination (creator subtitles in dozens of languages) and a music video. The outputs shown are copied from those runs. A June 2025 build of yt-dlp, run on the same machine the same day, failed the first command with Requested format is not available, so the first step is always to update.
Update yt-dlp
yt-dlp -UIf you installed it with Homebrew or pip, update it the same way instead (brew upgrade yt-dlp or pip install -U yt-dlp). YouTube changes often, and yt-dlp releases follow.
See which subtitles a video has
yt-dlp --list-subs --skip-download "https://www.youtube.com/watch?v=arj7oStGLkU"The end of the output for the TED talk, one line per language and the formats on offer:
es Spanish vtt, srt, ttml, srv3, srv2, srv1, json3
sv Swedish vtt, srt, ttml, srv3, srv2, srv1, json3
vi Vietnamese vtt, srt, ttml, srv3, srv2, srv1, json3Copy the language code exactly. In our benchmark a request for es missed a track coded es-ES, and yt-dlp exited without an error and without a file.
Download the creator's subtitles as SRT
yt-dlp --skip-download --write-subs --sub-langs en --sub-format srt -o "%(id)s" "https://www.youtube.com/watch?v=arj7oStGLkU"This wrote arj7oStGLkU.en.srt (23 KB). The first lines:
1
00:00:12,645 --> 00:00:14,015
So in college,
2
00:00:15,349 --> 00:00:16,913
I was a government major,--skip-download keeps the video itself off your disk. -o "%(id)s" names the file after the video ID instead of its title, which is easier in scripts. Use --sub-langs en,es for several languages.
Automatic captions, converted to SRT
yt-dlp --skip-download --write-auto-subs --sub-langs en --convert-subs srt "https://www.youtube.com/watch?v=VIDEO_ID"YouTube serves automatic captions as VTT, so yt-dlp downloads that and converts it. Conversion needs ffmpeg installed. Expect some clean-up: our converted file opened with a [Music] cue and a 10-millisecond cue holding only a space, which is normal for automatic captions.
Passing both --write-subs and --write-auto-subs, as in the command at the top, gets you a file whether or not the creator uploaded subtitles.
Turn the SRT into a plain-text transcript
yt-dlp has no plain-text output. This removes the cue numbers, timestamps and blank lines:
sed -e '/-->/d' -e '/^[0-9]*$/d' -e '/^[[:space:]]*$/d' arj7oStGLkU.en.srt > transcript.txtOn the TED talk it left 450 lines starting "So in college, / I was a government major,". Lines still break where the subtitles did; join them if you need paragraphs.
Where yt-dlp breaks
- Old versions: fail with
Requested format is not available. Update. - Language codes: must match exactly, or nothing is written and no error is shown. Check that the file exists.
- Rate limits: in our 54-video benchmark, yt-dlp got 39 of 44 videos from a home connection; the five misses were HTTP 429 errors on the subtitle download, mostly Shorts and long videos with automatic captions.
- Servers: from a cloud server the same benchmark hit a bot check on all five attempts and stopped.
For a handful of videos, the transcript downloader on this site needs no install and saves TXT, SRT, VTT, JSON, Markdown or CSV. For code that runs on a server, a hosted transcript API takes the blocking problem off your hands; the API comparison covers yt-dlp next to the hosted options.
Frequently asked questions
How do I download only the subtitles with yt-dlp, not the video?
Add --skip-download. Without it, yt-dlp downloads the video as well. For example: yt-dlp --skip-download --write-subs --sub-langs en --sub-format srt URL.
What is the difference between --write-subs and --write-auto-subs?
--write-subs saves subtitles the creator uploaded. --write-auto-subs saves YouTube's automatic captions. Pass both and you get a file whenever either kind exists in the language you asked for.
Why does yt-dlp finish without writing a subtitle file?
Usually the language code does not match a track exactly: in our benchmark, a request for es missed a track coded es-ES, and yt-dlp exited as if it had succeeded. Run --list-subs first and copy the exact code.
Why do I get "Requested format is not available"?
Your yt-dlp is too old for YouTube's current pages. A June 2025 build gave this error on a video whose subtitles the October 2026 release downloaded fine. Update with yt-dlp -U (or your package manager) and try again.
Can yt-dlp give me a plain-text transcript?
Not directly; it writes subtitle files. Download as SRT and strip the numbers and timestamps with the sed command in this guide, or paste the link into a transcript website that shows plain text.
Does it work on a server?
Often not for long. In our benchmark, yt-dlp hit a YouTube bot check on all five attempts from a cloud server, while the same run from a home connection succeeded on 39 of 44 videos.
Related
- How to Cite a YouTube Video in APA, MLA and Chicago (With Timestamps and Transcript Quotes)
- YouTube Captions by the Numbers: What 30,000 Transcripts Show (2026)
- Faceless YouTube Channel with AI: Research with Transcripts, Write Scripts YouTube Will Pay For
- How to Translate a YouTube Video: Transcript and Subtitles in Any Language
- Can ChatGPT Watch YouTube Videos? How to Connect YouTube to ChatGPT (2026)
- Can Claude Watch YouTube Videos? How to Give Claude a YouTube Transcript (2026)
- We Benchmarked Three Ways to Get a YouTube Transcript: Home Connection vs Cloud Server
- youtube-transcript-api Errors Explained: IpBlocked, RequestBlocked and More
- 191 Starter Story Founder Interviews: How They Got Their First Customers
- How to Get a YouTube Video Transcript: Find, View, Copy and Download (2026)
- n8n YouTube Transcript Failing on Your Server? Why YouTube Blocks It and How to Fix It
- YouTube API Quota Exceeded: Causes and Fixes
- YouTube Transcript API Rate Limit: What It Is and How to Handle 429s
- YouTube Transcript MCP Server: Setup Guide for Claude and Other AI Tools
- YouTube Transcripts in n8n: HTTP Request Workflow Guide
- Migrating from Supadata: A Field Guide
- How to Get YouTube Transcripts in Python (youtube-transcript-api and a REST API)
- Migrate from TranscriptAPI.com: Parameter Mapping and curl Example
- Build an AI YouTube Video Summarizer with LangChain and Next.js
- How to Build a RAG Pipeline with YouTube Transcripts
- YouTube Transcript API: 6 Options Compared (2026), Free and Paid
- YouTube Automatic Captions: Turn Them On or Off, Fix Missing Ones, Get the Text (2026)
- Can Gemini Watch YouTube Videos? What the App and the API Actually Do (2026)
- Can Copilot Watch YouTube Videos? Edge Sidebar vs the Copilot App (2026)
- Summarize.tech Not Working? It Has Been Down Since August 2026 (Alternatives)
- Can Grok Watch YouTube Videos? Give Grok YouTube Transcripts with MCP (2026)
- Can Perplexity Watch YouTube Videos? Add a YouTube Transcript Connector (2026)
- GetYouTubeTranscript vs TranscriptAPI
- GetYouTubeTranscript vs youtubetotranscript.com
- GetYouTubeTranscript vs youtube-transcript.io
- GetYouTubeTranscript vs NoteGPT
- GetYouTubeTranscript vs Tactiq
- GetYouTubeTranscript vs Glasp
- GetYouTubeTranscript vs Eightify
- GetYouTubeTranscript vs Supadata
- GetYouTubeTranscript vs DownSub
- GetYouTubeTranscript vs youtubetranscript.dev























































