Files
MajorWiki/03-opensource/media-creative/yt-dlp.md
majorlinux 279c094afc wiki: add firewalld mail ports reset article + session updates
- New article: firewalld mail ports wiped after reload (IMAP + webmail outage)
- New article: Plex 4K codec compatibility (Apple TV)
- New article: mdadm RAID recovery after USB hub disconnect
- Updated yt-dlp article
- Updated all index files: SUMMARY.md, index.md, README.md, category indexes
- Article count: 41 → 42

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-15 16:15:02 -04:00

3.3 KiB

yt-dlp — Video Downloading

What It Is

yt-dlp is a feature-rich command-line video downloader, forked from youtube-dl with active maintenance and significantly better performance. It supports YouTube, Twitch, and hundreds of other sites.


Installation

Fedora

sudo dnf install yt-dlp
# or latest via pip:
sudo pip install yt-dlp --break-system-packages

Update

sudo pip install -U yt-dlp --break-system-packages
# or if installed as standalone binary:
yt-dlp -U

Keep it current — YouTube pushes extractor changes frequently and old versions break.


Basic Usage

# Download a single video (best quality)
yt-dlp https://www.youtube.com/watch?v=VIDEO_ID

# Download to a specific directory with title as filename
yt-dlp -o "/path/to/output/%(title)s.%(ext)s" URL

Plex-Optimized Download

Download best quality and auto-convert to HEVC for Apple TV direct play:

yt-dlp URL

That's it — if your config is set up correctly (see Config File section below). The config handles format selection, output path, subtitles, and automatic AV1/VP9 → HEVC conversion.

[!note] bestvideo[ext=mp4] caps at 1080p because YouTube only serves H.264 up to 1080p. Use bestvideo+bestaudio to get true 4K, then let the post-download hook convert AV1/VP9 to HEVC. See Plex 4K Codec Compatibility for the full setup.


Playlists and Channels

# Download a full playlist
yt-dlp -o "%(playlist_index)s - %(title)s.%(ext)s" PLAYLIST_URL

# Download only videos not already present
yt-dlp --download-archive archive.txt PLAYLIST_URL

--download-archive maintains a file of completed video IDs — re-running the command skips already-downloaded videos automatically.


Format Selection

# List all available formats for a video
yt-dlp --list-formats URL

# Download best video + best audio, merge to mp4
yt-dlp -f 'bestvideo+bestaudio' --merge-output-format mp4 URL

# Download audio only (MP3)
yt-dlp -x --audio-format mp3 URL

Config File

Persist your preferred flags so you don't repeat them every command:

mkdir -p ~/.config/yt-dlp
cat > ~/.config/yt-dlp/config << 'EOF'
--remote-components ejs:github
--format bestvideo+bestaudio
--merge-output-format mp4
--output /plex/plex/%(title)s.%(ext)s
--write-auto-subs
--embed-subs
--exec /usr/local/bin/yt-dlp-hevc-convert.sh {}
EOF

After this, a bare yt-dlp URL downloads best quality, saves to /plex/plex/, embeds subtitles, and auto-converts AV1/VP9 to HEVC. See Plex 4K Codec Compatibility for the conversion hook setup.


Running Long Downloads in the Background

For large downloads or playlists, run inside screen or tmux so they survive SSH disconnects:

screen -dmS yt-download bash -c \
  "yt-dlp -o '/plex/plex/%(title)s.%(ext)s' PLAYLIST_URL 2>&1 | tee ~/yt-download.log"

# Check progress
screen -r yt-download
# or
tail -f ~/yt-download.log

Troubleshooting

For YouTube JS challenge errors, missing formats, and n-challenge failures on Fedora — see yt-dlp YouTube JS Challenge Fix.


Tags

#yt-dlp #youtube #video #plex #linux #media #dev-tools