
yt-dlp
github.com/yt-dlp/yt-dlp- Category
- Developer Tools
- Rank
- No. 43Tools index
- Pricing
- Open Source
- Type
- TOOL
- Interfaces
- CLI
- Builder
- @yt-dlp
- GitHub
- 193.4k stars
- Latest release
- 2026.08.19
- Date
About
A powerful command-line tool for downloading audio and video content from thousands of websites including YouTube. It's an enhanced fork of youtube-dl with additional features, better performance, and ongoing maintenance.
What it does
yt-dlp accepts media URLs through a command-line interface, selects downloadable formats, and can handle subtitles, metadata, authentication, proxies, cookies, post-processing, and configurable output naming. It also supports embedding in Python programs and extending site handling through plugins.
Why it's ranked here
Its breadth is unusually practical: thousands of supported sites, extensive selection and post-processing controls, browser-cookie extraction, proxy support, signed release checksums, and several distribution choices. The project also tests across multiple Python versions and keeps linting in the standard test target.
What's good
Installation fits several environments: standalone executables, a Python package, a portable Python-based Unix binary, source archives, and third-party package managers. Shell completions and a manual page are packaged. Native AES code provides a fallback when the optional cryptography package is unavailable, while authenticated browser sessions can reuse cookies from several major browsers.
Tradeoffs
Site changes can break extraction, and the documentation warns that the stable channel may become stale between releases. Some capabilities depend on optional packages, external runtimes, or bundled components. Licensing also varies by artifact: the repository and Python distributions use the Unlicense, while PyInstaller executables include GPLv3+ code and other release forms contain separately licensed components.
How to use it well
It suits engineers, archivists, and automation users who need scriptable retrieval with precise format, subtitle, metadata, authentication, and output controls. Prefer the recommended update channel when site compatibility matters, and install through a method whose update process you understand. Treat it as a retrieval and processing component, not a hosted media library, graphical organizer, or publishing service.
Technical notes+
pyproject.toml defines a Python 3.10+ console package built with Hatchling, exposes the yt-dlp command, declares no mandatory runtime dependencies, and groups networking, cryptography, metadata, WebSocket, and JavaScript support as optional extras. Makefile builds the executable as a Python zip application, generates documentation and shell completions, packages source and wheel artifacts, and runs pytest plus Ruff and autopep8 checks. yt_dlp/aes.py falls back to native AES implementations when Cryptodome is unavailable. yt_dlp/cookies.py reads cookie stores from Firefox, Safari, and Chromium-family browsers. yt_dlp/socks.py implements SOCKS4, SOCKS4A, and SOCKS5 connections. yt_dlp/cache.py stores version-tagged JSON entries and rejects cache removal when the target path does not resemble a cache or temporary directory. yt_dlp/webvtt.py partially parses WebVTT segments and adjusts timestamps when assembling subtitles. yt_dlp/update.py distinguishes packaged variants, update channels, and builds that cannot self-update.
Observed
- License
- Repository, source distribution, and wheel use the Unlicense; some release artifacts include differently licensed code.
- Primary language
- Python 3 only, requiring Python 3.10 or newer for the package.
- Interfaces
- Command-line application with documented Python embedding and plugin support.
- Installation
- Standalone executables, portable Python-based Unix binary, pip package, source archive, and third-party package managers.
- Platform support
- Release artifacts cover Windows, macOS, Linux, BSD, glibc, musl, x86, x86_64, ARM64, and ARMv7 variants.
- Packaging
- Hatchling builds source and wheel distributions; packaged data includes shell completions, documentation, and a manual page.
- Verification
- The standard test target runs pytest with warnings treated as errors, followed by Ruff and autopep8 checks.
Read from README.md, Makefile, pyproject.toml, yt_dlp/aes.py, yt_dlp/cache.py, yt_dlp/socks.py, yt_dlp/update.py, yt_dlp/webvtt.py, yt_dlp/cookies.py.
What it can do
Download videos from streaming platforms
Video URL from YouTube or other supported sites → Video file in various formats (MP4, MKV, etc.)
Extract audio from video content
Video URL from supported websites → Audio file in various formats (MP3, M4A, etc.)
Download entire playlists
Playlist URL from supported platforms → Multiple video/audio files from all playlist items
Download video with subtitles
Video URL with subtitle options → Video file with embedded or separate subtitle files
Convert video format during download
Video URL and desired output format specification → Video file in specified format
Download specific quality versions
Video URL with quality parameters (resolution, bitrate) → Video file in requested quality
Extract video metadata
Video URL → JSON data with video information (title, duration, description, etc.)
Tags
Tech Stack
Media
Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.