ytdlp.org

Practical yt-dlp docs: install, commands, fixes, cookies, and workflows.

Current section

Command guide

How to download playlists with yt-dlp

Playlist downloads are easy to start and easy to let turn into a mess. The real goal is not just downloading every item. It is getting the whole playlist cleanly, without duplicate files, broken naming, or chaos when you rerun it.

Quick answer

yt-dlp "PLAYLIST_URL"

That downloads the playlist using yt-dlp defaults. It is the right starting point before you add extra workflow flags.

Download only part of a playlist

yt-dlp --playlist-start 5 --playlist-end 12 "PLAYLIST_URL"

Use this when you want a range instead of the full list. This is useful for testing before you commit to a very large playlist.

Keep playlist downloads organized

yt-dlp -o "%(playlist_title)s/%(playlist_index)s - %(title)s.%(ext)s" "PLAYLIST_URL"

This is where playlist downloads stop feeling random. Good output templates save a lot of cleanup later.

The real playlist pain point: reruns

The first run is easy. The second and third runs are where people get duplicate files and messy folders. If you are downloading evolving playlists repeatedly, you should start thinking about archive files and predictable naming.

Most common playlist mistakes

  • • downloading into a flat folder with no structure
  • • rerunning the command with no duplicate-management strategy
  • • testing on a huge playlist before checking naming/output first
  • • assuming private playlist items will work without cookies or auth

Practical recommendation

If the playlist is large, do one test pass first with a short range and your final output template. That saves a lot of cleanup if your naming or folder structure is wrong.

Automation

Running this on a schedule? See the API version.

Paste a link and watch one API call do what your batch script does — extraction, retries, and site breakage handled.

Straightforward yt-dlp help for installs, commands, fixes, cookies, and repeatable workflows.

ytdlp.org is an independent, community-maintained documentation site. It is not affiliated with the yt-dlp project — the official source code lives at github.com/yt-dlp/yt-dlp.