← All reportsPublic report

yt-dlp/yt-dlp

A feature-rich command-line audio/video downloader

187k stars Python View on GitHubprofiled 11d ago
Try GitZoid
44PRs this week
8Contributors
61Deps scanned
0Issues found
01 · Repo overview

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

Python

Frameworks

hatchling (build backend)pytestruffautopep8pre-commitPyInstaller

Infrastructure

PyInstaller binary builds (bundle/requirements/pyinstaller.txt)Docker Compose definition (bundle/docker/compose.yml)macOS delocate packaginguv-managed reproducible environments (uv.lock)

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.

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.

03 · Security check

Dependencies and code review

61 dependencies scanned

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