ytdlp.org

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

Current section

Workflow guide

How to use output templates in yt-dlp

If your downloads are turning into a pile of badly named files, output templates are the fix. They give you control over filenames and folders so repeated downloads stay usable instead of becoming cleanup work.

Quick answer

yt-dlp -o "%(title)s.%(ext)s" "URL"

That is the basic output template pattern: tell yt-dlp exactly how to name the final file.

Organize by uploader

yt-dlp -o "%(uploader)s/%(title)s.%(ext)s" "URL"

This is one of the easiest useful upgrades. Instead of everything landing in one folder, downloads are grouped by source automatically.

Organize playlists better

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

This is where output templates start feeling powerful, not cosmetic. Playlist title and index keep files readable and in order.

Why this matters

Output templates are the bridge between one-off downloading and a repeatable workflow. If you ever rerun commands, work with playlists, or care where files land, this is a high-leverage habit.

Most common output template mistakes

  • • never setting one, then wondering why files are messy
  • • using a flat filename pattern for playlist downloads
  • • forgetting that missing metadata fields can affect naming
  • • testing large runs before validating the pattern on one item

Practical recommendation

Before you download hundreds of files, test your template on one URL first. That is the fastest way to avoid producing a giant folder of badly named media.

Delivery

Want files delivered clean, not cleaned up after?

Paste a link to see the structured metadata a media-import API returns before delivery to S3 or a webhook.

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.