yt-dlp/yt-dlp
A feature-rich command-line audio/video downloader
How yt-dlp is put together
yt-dlp is a feature-rich command-line audio/video downloader written entirely in Python (>=3.10). It is architected as a pipeline: the YoutubeDL core orchestrates URL matching against hundreds of pluggable site 'extractors' (each an InfoExtractor subclass that scrapes sites/APIs and emits format metadata), then hands streams to protocol-specific downloaders (HLS, DASH, HTTP, RTMP, fragment-based, websocket), followed by post-processing. Networking relies on requests/urllib3 with optional curl-cffi impersonation and websockets; there is no server, datastore, or persistent service — it is a standalone CLI distributed as a wheel and PyInstaller bundles. Developer/release automation lives under devscripts/, packaging under bundle/.
Languages
Frameworks
Infrastructure
Major components
yt_dlp core orchestration (YoutubeDL.py)
Central engine that coordinates option parsing, extractor selection, downloading, and postprocessing for each URL.
yt_dlp/extractor/
Hundreds of per-site InfoExtractor subclasses that match URLs via _VALID_URL regexes, scrape pages/APIs, and return format metadata.
yt_dlp/downloader/
Protocol-specific download implementations including HTTP, HLS, DASH, ISM, F4M, RTMP, fragment, websocket, and external downloader delegation.
yt_dlp CLI/options layer (options.py, __init__.py)
Defines the full argparse CLI surface and translates parsed options into ydl_opts for the core.
yt_dlp/jsinterp.py and yt_dlp/aes.py
In-process JavaScript interpreter and AES/crypto primitives used to decode obfuscated player scripts and encrypted media manifests.
yt_dlp/cookies.py
Loads and stores cookies, including reading browser cookie databases and OS keychains (secretstorage optional dep).
yt_dlp/update.py and plugins.py
Self-update mechanism and runtime plugin/extractor discovery and loading.
devscripts/ and bundle/
Release engineering: changelog generation, shell completions, lazy-extractor generation, requirement pinning, Docker and PyInstaller packaging.
A quieter week with two changes: fixing the TED video extractor and cleaning up old Python support code.
5 weeksWeek of 2026-08-24
Week of 2026-08-24latest
A quieter week with two changes: fixing the TED video extractor and cleaning up old Python support code.
Week of 2026-08-17
The busiest week by far: a new official release shipped alongside major fixes for TikTok, YouTube, Vimeo, and Bandcamp.
Week of 2026-08-10
Mostly housekeeping week: updating tools and libraries that power development, plus a networking library upgrade.
Week of 2026-08-03
A small week with three targeted fixes around YouTube data, random user agents, and Windows testing.
Week of 2026-07-20
Focused maintenance week for Vimeo and YouTube players, plus repairs for Apple and Instagram downloads.
Over the past several weeks, yt-dlp focused heavily on keeping its video extractors working as sites like TikTok, Vimeo, and YouTube changed their systems, including a new release on August 19. The team also invested in behind-the-scenes maintenance: updating dependencies, fixing automated test infrastructure, and removing old compatibility code for outdated Python versions. The arc shows steady repair work on popular sites, a periodic release to ship those fixes to users, and ongoing cleanup of the codebase.
Week by week
2026-08-24A quieter week with two changes: fixing the TED video extractor and cleaning up old Python support code.latest2 changes
Fix
TED extractor fixed
The tool can again download videos from TED talks after the site's setup broke the previous method.
Refactor
Old Python compatibility code removed
Code that existed only to support older, no-longer-used versions of Python was deleted to keep the project simpler.
2026-08-17The busiest week by far: a new official release shipped alongside major fixes for TikTok, YouTube, Vimeo, and Bandcamp.6 changes
Chore
Release 2026.08.19 published
A new version of the downloader was released so users get all the recent fixes.
Fix
TikTok downloads repaired
Several fixes restored the ability to download TikTok videos, including share links and broken format detection.
Feature
YouTube channel metadata always extracted
Channel pages now reliably include information like the channel name and follower count.
Feature
Bandcamp browser impersonation added
The downloader can now pretend to be a regular web browser when fetching Bandcamp audio, helping it avoid blocks.
Feature
Niconico channel support
Downloads from Niconico channel pages are now supported.
Fix
Vimeo's broken macOS client removed
An approach to Vimeo that had stopped working was removed so it doesn't cause errors.
2026-08-10Mostly housekeeping week: updating tools and libraries that power development, plus a networking library upgrade.3 changes
Chore
27 dependencies updated
External building blocks the project relies on were refreshed to newer versions.
Chore
Automated workflows updated
The background processes that test and build the software were updated across ten workflows.
Fix
Support for curl-cffi 0.16.x
A networking component used to fetch web pages now works with the latest version of an underlying library, including on one specific Python version.
2026-08-03A small week with three targeted fixes around YouTube data, random user agents, and Windows testing.3 changes
Fix
Collaborator follower counts on YouTube
Videos made jointly by multiple channels now correctly show how many followers each collaborator has.
Chore
Random user agent versions bumped
The fake browser identities the tool uses were updated to cover more recent browser versions.
Chore
Windows PyPy tests fixed
Automated tests running on an alternative Python setup on Windows were repaired after they broke.
2026-07-20Focused maintenance week for Vimeo and YouTube players, plus repairs for Apple and Instagram downloads.4 changes
Refactor
Vimeo client overhaul
The different methods used to talk to Vimeo were reorganized, adding a new option and dropping ones that no longer worked.
Refactor
Apple extractors reworked
The way Apple-related content (like trailers) is downloaded was rebuilt to be more reliable.
Fix
Instagram logged-in downloads fixed
Downloading Instagram content while signed into an account works again.
Fix
YouTube live stream fragments fixed
Live YouTube streams download smoothly again after a fix to how their video pieces are assembled.
Dependencies and code review
Dependency advisories
Security Watch
No known advisories across 61 scanned dependencies.
No known advisories in the scanned dependencies.
Code review
No concrete code-level issues confirmed.
Get this report every week for your repos.
GitZoid learns each repo, reports what changed, and flags what needs attention. One flat price for the whole team.
$19 a month, flat · First 10 outputs free · No card required