In a world that’s always online, saving videos for offline viewing is super handy. yt-dlp steps in as a fast, powerful, and free way to do it.

yt-dlp is an open-source command-line tool based on youtube-dl that can download video and audio from 1,700+ websites. It’s not just for YouTube — it also supports TikTok, Instagram, Twitter (X), Vimeo, BBC iPlayer, and hundreds more.

From youtube-dl to yt-dlp

yt-dlp began as a community fork when development on youtube-dl slowed. It set out to fix limitations and quickly became the go-to choice thanks to:

  • Faster downloads with multi-threading
  • Frequent releases (often weekly or biweekly)
  • Better error handling and auto-retries
  • Built-in SponsorBlock to skip sponsored segments

Standout Features

Broad site support: With coverage for 1,700+ sites, yt-dlp is one of the most capable downloaders around.

Advanced format control: Pick exact video resolutions, codecs, and containers; download video-only or audio-only.

Smart playlist handling: Grab entire playlists, full channels, or just specific items.

Subtitle workflow: Download, embed, or convert multilingual subtitles.

Why use yt-dlp?

Free and open source: No paywalls, no ads, no hidden caps.

Fast updates: Keeps pace with site changes.

Highly flexible: Tweak every step of the download pipeline.

Private and safe: No need to hand data to third-party web services.

Installation Guide

System Requirements

  • Python 3.6+ (Python 3.8+ recommended)
  • FFmpeg (for muxing/remuxing and audio/video processing)
  • A stable internet connection

Windows

Method 1: Chocolatey (recommended)

choco install yt-dlp

Method 2: Scoop

scoop install yt-dlp

Method 3: Direct download

  1. Visit the GitHub Releases
  2. Download yt-dlp.exe
  3. Put it somewhere on your PATH or run it directly

Method 4: pip

python -m pip install -U yt-dlp

macOS

Method 1: Homebrew (recommended)

# Install Homebrew if needed
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# Install yt-dlp and FFmpeg
brew install yt-dlp
brew install ffmpeg

Method 2: MacPorts

sudo port install yt-dlp

Method 3: Download binary

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

Linux

Ubuntu/Debian

sudo apt update
sudo apt install yt-dlp

Arch/Manjaro

sudo pacman -S yt-dlp

Fedora

sudo dnf install yt-dlp

Universal method (any distro)

# Using curl
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

# Or using wget
sudo wget 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

Update yt-dlp

# Self-update
yt-dlp -U

# Or via pip
python -m pip install -U yt-dlp

Common Issues

“command not found”: Ensure yt-dlp is on your PATH or call it with the full path.

Python errors: Verify Python 3.6+ is installed and selected.

FFmpeg errors: Install FFmpeg so yt-dlp can process media correctly.

Using yt-dlp: From Basics to Pro

Basic Commands

Download a single video

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

Audio-only (MP3)

yt-dlp -x --audio-format mp3 https://www.youtube.com/watch?v=VIDEO_ID

Download a playlist

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

List available formats without downloading

yt-dlp --list-formats https://www.youtube.com/watch?v=VIDEO_ID

Advanced Options

Choose specific quality

# 1080p video + best audio
yt-dlp -f 'bv*[height=1080]+ba' https://www.youtube.com/watch?v=VIDEO_ID

# Best available video + best audio
yt-dlp -f 'bv*+ba' https://www.youtube.com/watch?v=VIDEO_ID

Download with subtitles

# All available subtitles
yt-dlp --write-sub --all-subs https://www.youtube.com/watch?v=VIDEO_ID

# Vietnamese subtitles only
yt-dlp --write-sub --sub-lang vi https://www.youtube.com/watch?v=VIDEO_ID

Custom output filename

yt-dlp -o '%(title)s by %(uploader)s.%(ext)s' https://www.youtube.com/watch?v=VIDEO_ID

Batch download from a URL list

# urls.txt contains one URL per line
yt-dlp -a urls.txt

Playlist Superpowers

Grab specific items

# Only the 5th video
yt-dlp --playlist-items 5 PLAYLIST_URL

# Items 2,3,7,10
yt-dlp --playlist-items 2,3,7,10 PLAYLIST_URL

# From item 10 to the end
yt-dlp --playlist-start 10 PLAYLIST_URL

Integrations

GUI options

  • yt-dlp-gui — simple desktop front end
  • Tartube — feature-rich manager
  • Media Downloader — cross-platform

Use in a Python script

import yt_dlp

ydl_opts = {
    'format': 'best[height<=720]',
    'outtmpl': '%(title)s.%(ext)s',
}

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

Configuration File

Create a config file to store your defaults:

Linux/macOS: ~/.yt-dlp/config

Windows: %APPDATA%/yt-dlp/config

# Example config
--extract-audio
--audio-format mp3
--output "~/Downloads/%(title)s.%(ext)s"
--write-thumbnail
--embed-metadata

Final Thoughts: A Must-Have Tool

yt-dlp isn’t just a downloader — it’s a full toolbox for managing online media. With support for thousands of sites, speedy downloads, and deep customization, it’s a top pick for:

  • Creators: Safely back up and archive videos
  • Educators: Save learning materials for offline use
  • Researchers: Collect datasets for analysis
  • Everyday users: Watch favorites anytime, anywhere

You may also like

Subscribe
Notify of
guest

0 Comments
Newest
Oldest Most Voted
Inline Feedbacks
View all comments