yt-dlp

Expert assistance for using yt-dlp, a feature-rich command-line audio/video downloader with support for thousands of websites. Fork of youtube-dl with enhanced features and active maintenance.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "yt-dlp" with this command: npx skills add aeonbridge/ab-anthropic-claude-skills/aeonbridge-ab-anthropic-claude-skills-yt-dlp

yt-dlp Skill

Expert assistance for using yt-dlp, a feature-rich command-line audio/video downloader with support for thousands of websites. Fork of youtube-dl with enhanced features and active maintenance.

When to Use This Skill

This skill should be used when:

  • Downloading videos or audio from YouTube, Vimeo, or thousands of other sites

  • Extracting audio from videos in various formats (MP3, M4A, OPUS, etc.)

  • Downloading entire playlists or channels

  • Selecting specific video quality or format combinations

  • Embedding metadata, subtitles, or thumbnails

  • Automating media downloads with scripts

  • Recording live streams

  • Converting video formats with FFmpeg integration

  • Extracting video information without downloading

  • Troubleshooting download issues or understanding yt-dlp options

  • Setting up advanced configurations for batch processing

Overview

yt-dlp is a powerful command-line tool that:

  • Supports thousands of sites: YouTube, Vimeo, Twitter, Facebook, Instagram, TikTok, and many more

  • Actively maintained: Regular updates with bug fixes and new features

  • Feature-rich: Extensive options for format selection, metadata handling, and post-processing

  • Fast and efficient: Multi-threaded downloads with resume capability

  • Extensible: Plugin system for custom extractors and post-processors

Key Improvements Over youtube-dl

  • Better performance and stability

  • More format options and quality selection

  • Enhanced metadata handling

  • Improved playlist and channel downloads

  • Better error handling and retry logic

  • Active development and frequent updates

  • SponsorBlock integration for YouTube

Installation

Recommended Methods

Windows

Download standalone executable

Visit: https://github.com/yt-dlp/yt-dlp/releases/latest

Download: yt-dlp.exe (64-bit)

Or use winget

winget install yt-dlp

Or use scoop

scoop install yt-dlp

macOS

Using Homebrew

brew install yt-dlp

Or download directly

curl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp_macos -o /usr/local/bin/yt-dlp chmod a+rx /usr/local/bin/yt-dlp

Linux

Using pip (recommended)

python3 -m pip install -U yt-dlp

Or download binary

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

Debian/Ubuntu (via apt)

sudo add-apt-repository ppa:tomtomtom/yt-dlp sudo apt update sudo apt install yt-dlp

Using pip (cross-platform)

Install or upgrade

python3 -m pip install -U yt-dlp

Or with pipx (isolated environment)

pipx install yt-dlp

Essential Dependencies

FFmpeg (Strongly Recommended)

Required for merging video+audio formats and post-processing:

Windows (scoop)

scoop install ffmpeg

macOS

brew install ffmpeg

Ubuntu/Debian

sudo apt install ffmpeg

Fedora

sudo dnf install ffmpeg

Optional Dependencies

For better performance and features

pip install brotli certifi mutagen pycryptodomex websockets

For browser cookie support

pip install secretstorage # Linux pip install pywin32 # Windows

For HTTP/3 and impersonation

pip install curl-cffi

Quick Start

Basic Downloads

Download a video

yt-dlp "https://www.youtube.com/watch?v=dQw4w9WgXcQ"

Download from multiple URLs

yt-dlp URL1 URL2 URL3

Download from a file containing URLs

yt-dlp -a urls.txt

Download entire playlist

yt-dlp "https://www.youtube.com/playlist?list=PLAYLIST_ID"

Download channel

yt-dlp "https://www.youtube.com/@channelname"

Audio-Only Downloads

Extract audio as MP3

yt-dlp -x --audio-format mp3 URL

Extract audio as best quality

yt-dlp -x --audio-quality 0 URL

Extract audio with metadata

yt-dlp -x --audio-format mp3 --embed-metadata --embed-thumbnail URL

Download music with best quality

yt-dlp -f 'bestaudio[ext=m4a]' --embed-thumbnail --add-metadata URL

Format Selection

Understanding Formats

List all available formats

yt-dlp -F URL

Download best quality (video+audio)

yt-dlp -f "best" URL

Download best video and best audio separately, then merge

yt-dlp -f "bestvideo+bestaudio" URL

Download specific format by ID

yt-dlp -f 22 URL

Download best video up to 1080p

yt-dlp -f "bestvideo[height<=1080]+bestaudio/best[height<=1080]" URL

Download best MP4 format

yt-dlp -f "bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best" URL

Advanced Format Selection

Best quality with size limit (under 100MB)

yt-dlp -f "best[filesize<100M]" URL

Specific resolution

yt-dlp -f "bestvideo[height=720]+bestaudio" URL

Prefer 60fps

yt-dlp -f "bestvideo[fps>30]+bestaudio" URL

Download only video (no audio)

yt-dlp -f "bestvideo" URL

Download only audio

yt-dlp -f "bestaudio" URL

Prefer free codecs (VP9/Opus over H.264/AAC)

yt-dlp -f "bestvideo[vcodec^=vp]+bestaudio[acodec^=opus]" URL

Common Use Cases

  1. Download Entire Channel or Playlist

Download all videos from a channel

yt-dlp -f "bestvideo[height<=1080]+bestaudio"
--output "%(uploader)s/%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s"
"https://www.youtube.com/@channelname"

Download playlist with numbered files

yt-dlp --output "%(playlist_index)s-%(title)s.%(ext)s" PLAYLIST_URL

Download only videos uploaded in last 7 days

yt-dlp --dateafter now-7days CHANNEL_URL

Download specific date range

yt-dlp --dateafter 20230101 --datebefore 20231231 CHANNEL_URL

  1. Download with Subtitles

Download video with all subtitles

yt-dlp --write-subs --write-auto-subs URL

Download with specific subtitle language

yt-dlp --write-subs --sub-lang en URL

Embed subtitles in video file

yt-dlp --write-subs --embed-subs --sub-lang en URL

Download all available subtitle languages

yt-dlp --write-subs --all-subs URL

Convert subtitles to SRT format

yt-dlp --write-subs --convert-subs srt URL

  1. Download with Metadata and Thumbnails

Embed metadata and thumbnail

yt-dlp --embed-metadata --embed-thumbnail URL

Download thumbnail as separate file

yt-dlp --write-thumbnail URL

Convert thumbnail to JPG

yt-dlp --write-thumbnail --convert-thumbnails jpg URL

Full metadata preservation

yt-dlp --embed-metadata --embed-thumbnail --embed-subs
--embed-chapters --write-description --write-info-json URL

  1. Live Stream Recording

Record live stream from the beginning

yt-dlp --live-from-start URL

Record live stream from current time

yt-dlp URL

Wait for stream to start

yt-dlp --wait-for-video 60 URL

Monitor and download when live

yt-dlp --wait-for-video 3600 --live-from-start URL

  1. Download Specific Playlist Items

Download first 10 videos

yt-dlp --playlist-end 10 PLAYLIST_URL

Download videos 5-15

yt-dlp --playlist-start 5 --playlist-end 15 PLAYLIST_URL

Download specific video from playlist

yt-dlp --playlist-items 1,5,8,12 PLAYLIST_URL

Download every 5th video

yt-dlp --playlist-items "::5" PLAYLIST_URL

Skip first 20 videos

yt-dlp --playlist-start 21 PLAYLIST_URL

  1. Archive and Download History

Skip already downloaded videos

yt-dlp --download-archive archive.txt URL

Continue interrupted downloads

yt-dlp --continue URL

Don't overwrite files

yt-dlp --no-overwrites URL

Force resume from beginning if interrupted

yt-dlp --no-continue URL

Advanced Features

Output Templates

Custom filename pattern

yt-dlp -o "%(title)s.%(ext)s" URL

Organize by uploader and date

yt-dlp -o "%(uploader)s/%(upload_date)s - %(title)s.%(ext)s" URL

Include video ID and resolution

yt-dlp -o "%(id)s - %(title)s [%(resolution)s].%(ext)s" URL

Organized folder structure

yt-dlp -o "Downloads/%(uploader)s/%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s" URL

Available template fields:

%(title)s - Video title

%(id)s - Video ID

%(ext)s - File extension

%(uploader)s - Channel/uploader name

%(upload_date)s - Upload date (YYYYMMDD)

%(duration)s - Video duration in seconds

%(resolution)s - Video resolution (e.g., 1920x1080)

%(playlist)s - Playlist name

%(playlist_index)s - Position in playlist

%(channel)s - Channel name

%(channel_id)s - Channel ID

Post-Processing

Convert to MP4

yt-dlp --merge-output-format mp4 URL

Re-encode video to H.264

yt-dlp --recode-video mp4 URL

Extract audio and convert to MP3 with 320kbps

yt-dlp -x --audio-format mp3 --audio-quality 0 URL

Remux to MKV without re-encoding

yt-dlp --remux-video mkv URL

Embed thumbnail as cover art (audio files)

yt-dlp -x --audio-format mp3 --embed-thumbnail URL

Add metadata and chapters

yt-dlp --embed-metadata --embed-chapters URL

Split video by chapters

yt-dlp --split-chapters URL

Execute command after download

yt-dlp --exec "echo Downloaded: {}" URL

SponsorBlock Integration (YouTube)

Skip sponsored segments

yt-dlp --sponsorblock-mark all URL

Remove sponsored segments

yt-dlp --sponsorblock-remove all URL

Mark and remove specific categories

yt-dlp --sponsorblock-mark sponsor,intro --sponsorblock-remove outro URL

Available categories: sponsor, intro, outro, selfpromo, preview,

filler, interaction, music_offtopic

Browser Cookie Support

Use cookies from browser

yt-dlp --cookies-from-browser firefox URL

Use cookies from Chrome

yt-dlp --cookies-from-browser chrome URL

Use cookies from file

yt-dlp --cookies cookies.txt URL

Export cookies (for authentication)

First: Use browser extension to export cookies.txt

yt-dlp --cookies cookies.txt URL

Rate Limiting and Network Options

Limit download speed (1MB/s)

yt-dlp --limit-rate 1M URL

Use proxy

yt-dlp --proxy http://proxy.example.com:8080 URL

Set custom user agent

yt-dlp --user-agent "Mozilla/5.0..." URL

Add referer header

yt-dlp --referer "https://example.com" URL

Set timeout

yt-dlp --socket-timeout 30 URL

Retry on failure

yt-dlp --retries 10 URL

Sleep between downloads

yt-dlp --sleep-interval 5 URL

Geo-Restriction Bypass

Use VPN or proxy

yt-dlp --proxy socks5://127.0.0.1:1080 URL

Use Tor

yt-dlp --proxy socks5://127.0.0.1:9050 URL

Fake IP for geo-restricted content

yt-dlp --geo-bypass URL

Specify geo-bypass country

yt-dlp --geo-bypass-country US URL

Configuration File

Create ~/.config/yt-dlp/config (Linux/macOS) or %APPDATA%/yt-dlp/config.txt (Windows):

Default format selection

-f bestvideo[height<=1080]+bestaudio/best[height<=1080]

Output template

-o ~/Downloads/%(uploader)s/%(title)s.%(ext)s

Always embed metadata

--embed-metadata --embed-thumbnail --embed-subs

Download subtitles

--write-subs --sub-lang en

Archive to avoid re-downloading

--download-archive ~/.config/yt-dlp/archive.txt

No overwrite

--no-overwrites

Continue incomplete downloads

--continue

Prefer free formats

--prefer-free-formats

Add metadata

--add-metadata

SponsorBlock

--sponsorblock-mark all

Rate limit (optional)

--limit-rate 5M

Retries

--retries 10

Sleep between downloads

--sleep-interval 3

Information Extraction (No Download)

Get video info as JSON

yt-dlp --dump-json URL

Get only the title

yt-dlp --get-title URL

Get direct video URL

yt-dlp --get-url URL

Get filename without downloading

yt-dlp --get-filename URL

Get thumbnail URL

yt-dlp --get-thumbnail URL

Get video duration

yt-dlp --get-duration URL

Get all available info

yt-dlp --dump-single-json URL

Simulate download (show what would be done)

yt-dlp --simulate URL

List formats without downloading

yt-dlp -F URL

Batch Processing and Automation

Bash Script Example

#!/bin/bash

download_channel.sh

CHANNEL_URL="$1" OUTPUT_DIR="$2"

yt-dlp
--download-archive archive.txt
--format "bestvideo[height<=1080]+bestaudio"
--output "${OUTPUT_DIR}/%(upload_date)s - %(title)s.%(ext)s"
--write-subs
--embed-subs
--embed-metadata
--embed-thumbnail
--no-overwrites
--continue
--retries 10
--sleep-interval 5
"$CHANNEL_URL"

Python Integration

import yt_dlp

Basic download

ydl_opts = { 'format': 'bestvideo+bestaudio/best', 'outtmpl': '%(title)s.%(ext)s', }

with yt_dlp.YoutubeDL(ydl_opts) as ydl: ydl.download(['https://www.youtube.com/watch?v=VIDEO_ID'])

Extract info only

with yt_dlp.YoutubeDL({'quiet': True}) as ydl: info = ydl.extract_info('URL', download=False) title = info.get('title', None) duration = info.get('duration', None) print(f"Title: {title}, Duration: {duration}s")

Audio extraction

ydl_opts = { 'format': 'bestaudio/best', 'postprocessors': [{ 'key': 'FFmpegExtractAudio', 'preferredcodec': 'mp3', 'preferredquality': '192', }], }

with yt_dlp.YoutubeDL(ydl_opts) as ydl: ydl.download(['URL'])

Common Options Reference

General Options

--help, -h Show help message --version Print program version --update Update to latest version --ignore-errors Continue on download errors --no-abort-on-error Continue even if errors occur --quiet, -q Suppress output --verbose, -v Print debug information --dump-json Output info as JSON --simulate, -s Don't download, simulate

Download Options

-f, --format FORMAT Format selection -o, --output TEMPLATE Output filename template --playlist-items ITEMS Playlist items to download --min-filesize SIZE Minimum file size --max-filesize SIZE Maximum file size --date DATE Download only on this date --datebefore DATE Download before this date --dateafter DATE Download after this date

Post-Processing

-x, --extract-audio Extract audio only --audio-format FORMAT Audio format (mp3, m4a, opus, etc.) --audio-quality QUALITY Audio quality (0-9, 0=best) --recode-video FORMAT Re-encode video --remux-video FORMAT Remux to different container --embed-subs Embed subtitles in video --embed-thumbnail Embed thumbnail --embed-metadata Add metadata to file --embed-chapters Add chapter markers --split-chapters Split by chapters --sponsorblock-mark CATS Mark SponsorBlock categories --sponsorblock-remove CATS Remove SponsorBlock segments

Subtitle Options

--write-subs Write subtitles --write-auto-subs Write auto-generated subtitles --all-subs Download all subtitles --sub-lang LANGS Subtitle languages (comma-separated) --sub-format FORMAT Subtitle format (srt, vtt, etc.) --convert-subs FORMAT Convert subtitles to format

Best Practices

  1. Use Download Archive

Always use --download-archive archive.txt to avoid re-downloading videos:

yt-dlp --download-archive archive.txt CHANNEL_URL

  1. Set Reasonable Rate Limits

Be respectful of bandwidth:

yt-dlp --limit-rate 5M --sleep-interval 3 URL

  1. Use Configuration Files

Store commonly used options in config file instead of typing them each time.

  1. Handle Errors Gracefully

Use retry options and error handling:

yt-dlp --retries 10 --ignore-errors --no-abort-on-error URL

  1. Organize Downloads

Use meaningful output templates:

yt-dlp -o "%(uploader)s/%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s" URL

  1. Keep yt-dlp Updated

Update regularly for bug fixes and new features:

yt-dlp -U

or

pip install -U yt-dlp

Troubleshooting

Common Issues

"Unable to extract video data"

Update yt-dlp

yt-dlp -U

Clear cache

yt-dlp --rm-cache-dir

Try different format

yt-dlp -f 'best' URL

"HTTP Error 403: Forbidden"

Use cookies from browser

yt-dlp --cookies-from-browser firefox URL

Or use cookies file

yt-dlp --cookies cookies.txt URL

"Requested format not available"

List available formats first

yt-dlp -F URL

Then select compatible format

yt-dlp -f "bestvideo+bestaudio" URL

Geo-restricted Content

Use proxy or VPN

yt-dlp --proxy socks5://127.0.0.1:1080 URL

Or bypass geo-restriction

yt-dlp --geo-bypass --geo-bypass-country US URL

Slow Downloads

Use multiple connections

yt-dlp --concurrent-fragments 4 URL

Check your rate limit setting

Remove or increase --limit-rate if set

Getting Help

Show all options

yt-dlp --help

Search for specific option

yt-dlp --help | grep subtitle

Check version

yt-dlp --version

Verbose output for debugging

yt-dlp --verbose URL

Update and Maintenance

Updating yt-dlp

Self-update (if installed as binary)

yt-dlp -U

Update via pip

pip install -U yt-dlp

Update to specific channel

yt-dlp --update-to nightly # or stable, or master

Check current version

yt-dlp --version

Release Channels

  • stable: Well-tested releases (default)

  • nightly: Daily builds, recommended for regular users

  • master: Latest development after each commit

Supported Sites

yt-dlp supports thousands of sites, including:

  • Video: YouTube, Vimeo, Dailymotion, Twitch, TikTok

  • Social: Facebook, Instagram, Twitter/X, Reddit

  • Streaming: Twitch, Crunchyroll, Netflix (with cookies), Disney+

  • Education: Coursera, Udemy, Khan Academy, edX

  • News: BBC, CNN, NBC, ABC

  • And many more: Full list at https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md

Legal and Ethical Considerations

Important Notes:

  • Respect copyright and terms of service of websites

  • Only download content you have the right to download

  • Some content may be protected by DRM or geo-restrictions

  • Always check local laws regarding downloading copyrighted content

  • Use yt-dlp responsibly and ethically

Resources

License

yt-dlp is licensed under the Unlicense (public domain). Some bundled components may use different licenses.

Note: This skill provides comprehensive guidance for using yt-dlp. Always ensure your use complies with local laws and website terms of service.

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

evolution-api

No summary provided by upstream source.

Repository SourceNeeds Review
General

graphiti

No summary provided by upstream source.

Repository SourceNeeds Review
General

langextract

No summary provided by upstream source.

Repository SourceNeeds Review
General

graphrag

No summary provided by upstream source.

Repository SourceNeeds Review