Downloading Playlists
yt-dlp excels at handling playlists, channels, and other collections of videos. This guide covers the various options and strategies for efficiently downloading multiple videos.
Basic Playlist Operations
Download Entire Playlist
# Download all videos in a playlist
yt-dlp "https://youtube.com/playlist?list=PLAYLIST_ID"
# Download channel uploads
yt-dlp "https://youtube.com/c/channelname"
# Download user uploads
yt-dlp "https://youtube.com/@username"
Playlist Item Selection
# Download specific items by index
yt-dlp -I 1,3,5 "https://youtube.com/playlist?list=PLAYLIST_ID"
# Download range of items
yt-dlp -I 1:10 "https://youtube.com/playlist?list=PLAYLIST_ID"
# Download with step
yt-dlp -I 1::2 "https://youtube.com/playlist?list=PLAYLIST_ID"
# Download in reverse order
yt-dlp -I ::-1 "https://youtube.com/playlist?list=PLAYLIST_ID"
Advanced Playlist Options
Playlist Processing Control
# Process playlist randomly
yt-dlp --playlist-random "https://youtube.com/playlist?list=PLAYLIST_ID"
# Lazy playlist processing (process as received)
yt-dlp --lazy-playlist "https://youtube.com/playlist?list=PLAYLIST_ID"
# Reverse playlist order
yt-dlp --playlist-reverse "https://youtube.com/playlist?list=PLAYLIST_ID"
Flat Playlist Mode
# Extract only metadata, don't download
yt-dlp --flat-playlist "https://youtube.com/playlist?list=PLAYLIST_ID"
# Simulate to see what would be downloaded
yt-dlp --simulate "https://youtube.com/playlist?list=PLAYLIST_ID"
Playlist Organization
Output Templates for Playlists
# Organize by playlist and index
yt-dlp -o "%(playlist)s/%(playlist_index)02d - %(title)s.%(ext)s" \
"https://youtube.com/playlist?list=PLAYLIST_ID"
# Organize by uploader and playlist
yt-dlp -o "%(uploader)s/%(playlist)s/%(title)s.%(ext)s" \
"https://youtube.com/playlist?list=PLAYLIST_ID"
# Include upload date
yt-dlp -o "%(upload_date>%Y)s/%(playlist)s/%(title)s.%(ext)s" \
"https://youtube.com/playlist?list=PLAYLIST_ID"
Playlist Metadata
# Write playlist metadata files
yt-dlp --write-playlist-metafiles "https://youtube.com/playlist?list=PLAYLIST_ID"
# Skip playlist metadata
yt-dlp --no-write-playlist-metafiles "https://youtube.com/playlist?list=PLAYLIST_ID"
Filtering and Selection
Date-based Filtering
# Download videos from last week
yt-dlp --dateafter today-1week "https://youtube.com/c/channelname"
# Download videos from specific date range
yt-dlp --dateafter 20230101 --datebefore 20231231 \
"https://youtube.com/c/channelname"
Quality-based Filtering
# Skip low-quality videos
yt-dlp --match-filters "height>=720" "https://youtube.com/playlist?list=PLAYLIST_ID"
# Filter by duration
yt-dlp --match-filters "duration>300" "https://youtube.com/playlist?list=PLAYLIST_ID"
Archive Management
Download Archive
# Track downloaded videos to avoid re-downloading
yt-dlp --download-archive downloaded.txt \
"https://youtube.com/c/channelname"
# Break on existing files
yt-dlp --break-on-existing \
--download-archive downloaded.txt \
"https://youtube.com/c/channelname"
Limit Downloads
# Limit total downloads
yt-dlp --max-downloads 10 "https://youtube.com/playlist?list=PLAYLIST_ID"
# Break after errors
yt-dlp --skip-playlist-after-errors 3 \
"https://youtube.com/playlist?list=PLAYLIST_ID"
Channel-Specific Features
YouTube Channel Downloads
# Download all channel content
yt-dlp "https://youtube.com/c/channelname"
# Download only videos (not shorts/live)
yt-dlp "https://youtube.com/c/channelname/videos"
# Download shorts only
yt-dlp "https://youtube.com/c/channelname/shorts"
# Download live streams
yt-dlp "https://youtube.com/c/channelname/streams"
Channel Sections
# Download playlists from channel
yt-dlp "https://youtube.com/c/channelname/playlists"
# Download community posts (if available)
yt-dlp "https://youtube.com/c/channelname/community"
Playlist Concatenation
Merge Playlist Videos
# Concatenate all videos in playlist
yt-dlp --concat-playlist always \
-o "%(playlist)s_complete.%(ext)s" \
"https://youtube.com/playlist?list=PLAYLIST_ID"
# Concatenate multi-part videos only
yt-dlp --concat-playlist multi_video \
"https://youtube.com/playlist?list=PLAYLIST_ID"
Performance Optimization
Concurrent Downloads
# Download multiple videos simultaneously (external tool)
yt-dlp --external-downloader aria2c \
--external-downloader-args "-j 4 -x 4 -s 4" \
"https://youtube.com/playlist?list=PLAYLIST_ID"
Batch Processing
# Use batch file for multiple playlists
yt-dlp --batch-file playlists.txt \
-o "%(uploader)s/%(playlist)s/%(title)s.%(ext)s"
Special Playlist Types
YouTube Feeds
# Download from various YouTube feeds
yt-dlp ":ytfav" # Favorites (requires authentication)
yt-dlp ":ytwatchlater" # Watch Later (requires authentication)
yt-dlp ":ytsubs" # Subscriptions (requires authentication)
yt-dlp ":ythistory" # Watch History (requires authentication)
yt-dlp ":ytrec" # Recommended videos
yt-dlp ":ytnotif" # Notifications (requires authentication)
Search Results as Playlists
# Download search results
yt-dlp "ytsearch10:python tutorial"
# Download with date sorting
yt-dlp "ytsearchdate:5:machine learning"
Troubleshooting Playlists
Common Issues
- Private videos: Use
--ignore-errorsto skip - Large playlists: Use
--max-downloadsto limit - Rate limiting: Add
--sleep-intervalbetween downloads
Error Handling
# Continue on errors
yt-dlp --ignore-errors "https://youtube.com/playlist?list=PLAYLIST_ID"
# Skip unavailable videos
yt-dlp --no-abort-on-error "https://youtube.com/playlist?list=PLAYLIST_ID"
# Detailed error reporting
yt-dlp --verbose "https://youtube.com/playlist?list=PLAYLIST_ID"
Monitoring Progress
# Monitor large playlist downloads
yt-dlp --progress \
--newline \
-o "%(playlist)s/%(playlist_index)03d - %(title)s.%(ext)s" \
"https://youtube.com/playlist?list=LARGE_PLAYLIST_ID"