yt-dlp

Feature-rich video downloader — downloads video and audio from 1000+ websites including YouTube, Vimeo, Twitter, TikTok. yt-dlp features: Python API (yt_dlp.YoutubeDL context manager), format selection (bestvideo+bestaudio), audio extraction (postprocessors FFmpegExtractAudio), metadata extraction (extract_info()), subtitle download, playlist support, rate limiting (ratelimit), cookies support, proxy, SponsorBlock integration, thumbnail download, chapter markers, and --no-download for metadata-only. Fork of youtube-dl with faster development. CLI tool with Python API for agent media processing pipelines.

Evaluated Mar 06, 2026 (0d ago) v2024.x
Homepage ↗ Repo ↗ Developer Tools python yt-dlp youtube video-download audio-extraction media ffmpeg
⚙ Agent Friendliness
56
/ 100
Can an agent use this?
🔒 Security
78
/ 100
Is it safe for agents?
⚡ Reliability
63
/ 100
Does it work consistently?

Score Breakdown

⚙ Agent Friendliness

MCP Quality
--
Documentation
78
Error Messages
75
Auth Simplicity
82
Rate Limits
75

🔒 Security

TLS Enforcement
85
Auth Strength
75
Scope Granularity
72
Dep. Hygiene
80
Secret Handling
78

Browser cookies passed to yt-dlp contain authentication tokens — handle cookie files as sensitive credentials. Downloaded content may contain malware in embedded metadata; validate before processing. Respect copyright law and platform Terms of Service. Agent automation must implement rate limiting to avoid ToS violations.

⚡ Reliability

Uptime/SLA
68
Version Stability
60
Breaking Changes
55
Error Recovery
70
AF Security Reliability

Best When

Downloading media from 1000+ websites for agent processing pipelines (transcription, analysis, archival) where manual download isn't feasible — yt-dlp handles format selection, metadata, and post-processing in a single Python API call.

Avoid When

You need real-time streaming, YouTube Data API access (for metadata, not download), or are downloading without permission.

Use Cases

  • Agent audio extraction — ydl_opts = {'format': 'bestaudio/best', 'postprocessors': [{'key': 'FFmpegExtractAudio', 'preferredcodec': 'mp3'}], 'outtmpl': '%(title)s.mp3'}; with yt_dlp.YoutubeDL(ydl_opts) as ydl: ydl.download(['https://youtube.com/watch?v=...']) — agent downloads YouTube video as MP3 for transcription or music analysis
  • Agent metadata extraction — with yt_dlp.YoutubeDL({'quiet': True}) as ydl: info = ydl.extract_info(url, download=False) — extract title, duration, description, thumbnail URL without downloading; agent builds video database from YouTube channel without storage overhead
  • Agent transcript download — ydl_opts = {'writesubtitles': True, 'writeautomaticsub': True, 'subtitleslangs': ['en'], 'skip_download': True}; agent downloads YouTube auto-generated captions for text analysis; subtitle files in .vtt or .srt format
  • Agent playlist download — ydl_opts = {'format': 'bestvideo[ext=mp4]+bestaudio[ext=m4a]', 'outtmpl': '%(playlist_index)s-%(title)s.%(ext)s'}; with yt_dlp.YoutubeDL(ydl_opts) as ydl: ydl.download(['https://youtube.com/playlist?list=...']) — download entire playlist; agent ingests lecture series or tutorial playlists
  • Agent format selection — 'format': 'bestvideo[height<=720]+bestaudio/best[height<=720]' — download 720p max; agent saves bandwidth and storage; format selector language allows precise quality/codec control

Not For

  • Downloading copyrighted content without permission — yt-dlp is a tool; usage must comply with platform ToS and copyright law; agent automation must respect content licensing
  • Real-time streaming — yt-dlp downloads complete files; for live stream recording use --live-from-start or streaming tools
  • High-volume commercial scraping — YouTube ToS prohibits automated bulk downloading; for commercial video data use YouTube Data API

Interface

REST API
No
GraphQL
No
gRPC
No
MCP Server
No
SDK
Yes
Webhooks
No

Authentication

Methods: none cookies
OAuth: No Scopes: No

No auth for public content. Age-restricted or members-only content requires browser cookies (--cookies-from-browser or --cookies file). Platform authentication via cookies passed to yt-dlp.

Pricing

Model: open_source
Free tier: Yes
Requires CC: No

yt-dlp is Unlicense licensed (public domain). Free for all use.

Agent Metadata

Pagination
none
Idempotent
Full
Retry Guidance
Not documented

Known Gotchas

  • ffmpeg required for format merging and audio extraction — yt-dlp downloads best video and audio separately then merges with ffmpeg; without ffmpeg installed, format 'bestvideo+bestaudio' fails; agent containers must install ffmpeg alongside yt-dlp: apt-get install ffmpeg; verify with ydl.params.get('ffmpeg_location')
  • YouTube frequently breaks yt-dlp — YouTube changes internal API; yt-dlp releases updates within hours but agent code must update frequently; pin to latest version not a fixed old version; agent CI should check yt-dlp version weekly; add try/except DownloadError with fallback
  • outtmpl template variables must match info_dict — %(title)s, %(id)s, %(ext)s are standard; %(playlist_title)s only available for playlist downloads; agent code using playlist variables on single video raises KeyError; use %(playlist_title|None)s with default for safety
  • extract_info() returns flat_playlist by default — ydl.extract_info(playlist_url) returns playlist info with entries list; extract_info with process=False returns unprocessed data; agent processing individual videos must iterate info['entries']; entries may be lazy-loaded generators not lists
  • Rate limiting required for polite agent automation — yt-dlp without rate limiting downloads at maximum speed; YouTube may temporarily block IP; agent pipelines must set 'ratelimit': 500000 (500KB/s) and 'sleep_interval': 2 for respectful downloading; aggressive downloading triggers bot detection
  • Cookies required for age-restricted content — yt-dlp without auth skips age-restricted videos silently or errors; agent pipelines processing YouTube channels must handle missing cookies gracefully; extract_info(download=False) with 'ignoreerrors': True continues playlist despite access errors

Alternatives

Full Evaluation Report

Comprehensive deep-dive: security analysis, reliability audit, agent experience review, cost modeling, competitive positioning, and improvement roadmap for yt-dlp.

AI-powered analysis · PDF + markdown · Delivered within 30 minutes

$99

Package Brief

Quick verdict, integration guide, cost projections, gotchas with workarounds, and alternatives comparison.

Delivered within 10 minutes

$3

Score Monitoring

Get alerted when this package's AF, security, or reliability scores change significantly. Stay ahead of regressions.

Continuous monitoring

$3/mo

Scores are editorial opinions as of 2026-03-06.

5404
Packages Evaluated
26151
Need Evaluation
173
Need Re-evaluation
Community Powered