Black Friday · 30% off

Get 30% off
Back to blog
Guides

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

To download a YouTube video's subtitles with yt-dlp and nothing else, run the command below. It saves the creator's English subtitles as SRT, or YouTube's automatic captions when there are none. Update yt-dlp first: an older build failed on the same video.
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.

01

Update yt-dlp

yt-dlp -U

If 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.

02

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, json3

Copy 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.

03

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.

04

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.

05

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.txt

On 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

Q01

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.

Q02

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.

Q03

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.

Q04

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.

Q05

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.

Q06

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

Listed on Tool IndexFeatured on aitoolfame.comFeatured on Aura++Featured on DeepLaunch.ioFeatured on Dofollow.ToolsFeatured on EasyDoFollowFeatured on EarlyHuntFeatured on Findly.toolsFeatured on FoundrListGood AI ToolsFeatured on IndieHuntFeatured on LaunchBuffFeatured on launched.toolsFeatured on Launch Llama ToolsFeatured on LemonLaunchLiftOff launch badgeMy Launch StashGetYouTubeTranscript on Nick LaunchesOpenHunts Club MemberFeatured on saasfame.comShinyLaunchFeatured on ShowMeBestAIFeatured on toolfame.comListed on Turbo0Featured on Twelve ToolsHuzzler Embed BadgeFeatured on CodeHypeGetYouTubeTranscript on Better LaunchDokeyAIFeatured on WayfindioFeatured on LaunchZoneFeatured on NoonlaunchFeatured on WhatsthebigdataSurfaced on CodeTrendyFeatured on ScrollLaunchFeatured on ufind.bestFeatured on ShipBoostProduct WingWe Like ToolsAppa ListAcid ToolsPower Up ToolsToshi ListAIGC 160Appsy ToolsHunt for ToolsBeam ToolsTool Find DirTool SignalSaaS Tools DirSoftware BoltProduct List DirStack DirectorySaaS FieldSaaS WheelSaaS RootsStartup BenchmarksUnite ListTrustinerBest Tool VaultSolver ToolsAsh ListSmart Kit HubAI X CollectionAI Tech ViralMillion Dot HomepageThat App ShowLaunch ScrollMy Start ToolsLatest AI UpdatesSuper AI BoomTools Under RadarThe Key ToolsTool JourneyTools List HQThe App ToolsThe Mega ToolsSource DirTool CosmosTop Trend ToolsTiny Tool HubTool PrismStartup AIdeasFeatured on WonderLaunchFeatured on ShipycornFeatured on ToolsClawListed on ProofStoriesFeatured on ToolListedLaunched on Launch StreakIndieMarkdowns