yt-dlp vs youtube-dl
Quick answer
youtube-dl still installs and still runs. It just cannot download from YouTube any more, because keeping up with YouTube requires monthly work and youtube-dl's releases are years apart. yt-dlp is the fork that continued, and it accepts the same commands:
yt-dlp -f "bv*+ba/b" -o "%(title)s.%(ext)s" "URL"
What actually happened
youtube-dl was the tool, for a decade. In 2020 the RIAA filed a takedown against its GitHub repository; the repository came back a few weeks later, but the interruption cost momentum that never returned. Releases became sparse, then rare.
yt-dlp had already forked, out of a fork, largely over how quickly changes could be merged. When youtube-dl slowed, the contributors were already somewhere else. yt-dlp now ships roughly two dozen releases a year, which is what tracking YouTube costs.
This is not a story about one project being better written. It is about maintenance cadence being the entire product for software of this kind.
Side by side
| yt-dlp | youtube-dl | |
|---|---|---|
| Releases | ~24 a year | Years apart |
| Works on YouTube today | Yes | No |
| Sites supported | ~1,800 | ~1,000, many broken |
| Default quality | Best video + best audio, merged | Best single file — 360p |
| SponsorBlock | Built in | No |
| Browser cookies | --cookies-from-browser | Exported files only |
Format sorting (-S) | Yes | No |
| Section downloads | Yes | No |
| Speed on fragmented formats | Concurrent fragments | Sequential |
| Command syntax | Effectively identical | |
Migrating
There is no migration, which is the point of the compatibility promise. Install yt-dlp, use your existing commands:
alias youtube-dl='yt-dlp'
Config files transfer too — yt-dlp reads ~/.config/yt-dlp/config, so copying your
old youtube-dl.conf across is the whole job.
Two things worth deleting from it while you are there:
-
-f bestvideo+bestaudio/best— yt-dlp does this by default, and its default handles sites that only serve combined files. See format selection. -
--no-check-certificate— usually carried over from an old workaround, and it disables TLS verification permanently. If you still need it, something else is wrong: see this page.
The one real behavioural difference
youtube-dl's default was the best single file. yt-dlp's default is the best video plus the best audio, merged — which is better, and which means yt-dlp needs ffmpeg installed to do what youtube-dl did without it.
Migrating without installing ffmpeg produces a puzzling outcome: yt-dlp falls back to the best pre-merged file, which is 360p, and the new tool appears worse than the old one. That is the most common post-migration complaint and it is an ffmpeg problem, not a yt-dlp one.
Things yt-dlp added that are worth knowing
Format sorting. -S ranks formats rather than requiring one, so it
cannot produce
Requested format is not
available:
yt-dlp -S "res:1080,vcodec:h264" "URL"
Browser cookies. No export step:
yt-dlp --cookies-from-browser firefox "URL"
SponsorBlock. Built in, no plugin — mark or remove:
yt-dlp --sponsorblock-remove "sponsor,selfpromo" "URL"
Section downloads. Fetch two minutes out of a three-hour stream:
yt-dlp --download-sections "*00:10:00-00:12:00" "URL"
Concurrent fragments. A meaningful speed difference on DASH and HLS:
yt-dlp -N 4 "URL"
Is there any reason to stay on youtube-dl
One, and it is narrow: a frozen environment where a specific old version is known to work against a specific site and nothing is allowed to change. Even then, yt-dlp accepts the same commands, so the argument is about change control rather than about the tool.
For anything involving YouTube, there is no case. The releases are years apart and YouTube is not.
The other forks
youtube-dlc is the intermediate fork yt-dlp came from; it is archived. youtube-dl-nightly and similar are unofficial rebuilds of the original with patches, maintained by individuals, and their coverage is narrower than yt-dlp's. Neither is a reason to look past yt-dlp.
Different tools, rather than forks, are worth knowing about: gallery-dl for images and galleries, streamlink for live streams you want to pipe into a player. Both do things yt-dlp does not, and neither replaces it.
Switching, in one line
winget uninstall youtube-dl; winget install yt-dlp.yt-dlp Gyan.FFmpeg
brew uninstall youtube-dl; brew install yt-dlp ffmpeg
sudo apt remove youtube-dl
sudo curl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -o /usr/local/bin/yt-dlp
sudo chmod a+rx /usr/local/bin/yt-dlp
Then check that nothing old is left on PATH — two installs is a reliable way to conclude the upgrade did not work:
which -a yt-dlp youtube-dl
yt-dlp --version
Frequently asked
Is youtube-dl dead?
Do my youtube-dl commands still work?
Why did youtube-dl stall?
Is yt-dlp a drop-in replacement?
Related
- yt-dlp: pip, pipx, Binary or Nightly — Which to Install The install method decides how fast you get extractor fixes, and extractor fixes are the whole game. A straigh...
- yt-dlp Format Selection: -f, -S and Getting Exactly What You Want Format selection is the one yt-dlp concept worth learning properly — it decides resolution, codec, file size a...
- Fix "Sign in to confirm you're not a bot" in yt-dlp YouTube asks yt-dlp to prove it is human when the request looks like a datacentre. Why cookies alone stopped w...