Skip to content

yt-dlp - Video Download Tool

yt-dlp is a feature-rich command-line program to download videos from YouTube and other video platforms. It offers extensive options for quality selection, format choice, and batch downloading.

Terminal window
# On Windows (using winget)
winget install yt-dlp
# On macOS
brew install yt-dlp
# On Linux
python3 -m pip install -U yt-dlp
Terminal window
# Download a single video in best quality
yt-dlp https://www.youtube.com/watch?v=VIDEO_ID
# Download with custom filename
yt-dlp -o "%(title)s.%(ext)s" https://www.youtube.com/watch?v=VIDEO_ID
Terminal window
# Download best video+audio quality
yt-dlp -f "bestvideo+bestaudio" https://www.youtube.com/watch?v=VIDEO_ID
# Limit maximum quality to 1080p
yt-dlp -f "bestvideo[height<=1080]+bestaudio" https://www.youtube.com/watch?v=VIDEO_ID
# Download specific format (e.g., 720p)
yt-dlp -f "bestvideo[height=720]+bestaudio" https://www.youtube.com/watch?v=VIDEO_ID
Terminal window
# Extract audio in best quality (default mp3)
yt-dlp -x https://www.youtube.com/watch?v=VIDEO_ID
# Specify audio format
yt-dlp -x --audio-format mp3 https://www.youtube.com/watch?v=VIDEO_ID
# Set audio quality (0 is best, 9 is worst)
yt-dlp -x --audio-format mp3 --audio-quality 0 https://www.youtube.com/watch?v=VIDEO_ID
Terminal window
# Download entire playlist
yt-dlp https://www.youtube.com/playlist?list=PLAYLIST_ID
# Download specific items from playlist
yt-dlp --playlist-items 1,3,5-7 https://www.youtube.com/playlist?list=PLAYLIST_ID
# Download playlist starting from specific item
yt-dlp --playlist-start 5 https://www.youtube.com/playlist?list=PLAYLIST_ID

Output Templates

Terminal window
# Save videos in specific directory with custom naming
yt-dlp -o "videos/%(playlist_title)s/%(title)s.%(ext)s" URL
# Include video quality in filename
yt-dlp -o "%(title)s-%(height)sp.%(ext)s" URL

Download Options

Terminal window
# Download with subtitles
yt-dlp --write-sub --sub-lang en URL
# Download thumbnail
yt-dlp --write-thumbnail URL
# Extract metadata
yt-dlp --write-info-json URL
Terminal window
# Download subtitles only (skip video) - clean timestamped SRT format
yt-dlp --write-sub --write-auto-sub --skip-download --convert-subs srt --sub-langs en "VIDEO_URL"

What this does:

  • --write-sub — Downloads available manual subtitles
  • --write-auto-sub — Downloads auto-generated subtitles as fallback
  • --skip-download — Only downloads subtitles, not the video
  • --convert-subs srt — Converts to standard SRT format
  • --sub-langs en — Specifies English (change to all for all languages)

Best Practice: Manual + Auto Combined If you want manual subs with auto-generated as fallback in one command:

Terminal window
yt-dlp --write-sub --write-auto-sub --skip-download --convert-subs srt --sub-langs en -o "%(title)s" "VIDEO_URL"

yt-dlp will prefer manual subtitles if they exist, and fall back to auto-generated if no manual subs are available.

  • Rate Limiting: Control download speed

    Terminal window
    yt-dlp --limit-rate 1M URL
  • Batch Downloads: Download from text file

    Terminal window
    yt-dlp -a urls.txt
  • Format Selection: List available formats

    Terminal window
    yt-dlp -F URL
  • Authentication: For private videos

    Terminal window
    yt-dlp --username USER --password PASS URL