ytdlp.org

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

Current section

Troubleshooting guide

Fix "Requested format is not available" in yt-dlp

You asked for a format the video does not offer right now. Formats are not a stable menu — sites add and remove them per video, per region, and per client, so a format selector that worked last month can miss today. The fix is to see what actually exists, then select with fallbacks instead of exact demands.

Quick answer

# See every format this video offers right now
yt-dlp -F "URL"

# Then download with fallbacks instead of exact IDs
yt-dlp -f "bv*+ba/b" "URL"

bv*+ba/b means: best video plus best audio, or the best combined file if merging is not possible. It degrades gracefully instead of erroring when a specific format is missing.

Common causes, mapped to fixes

  • Hardcoded format IDs (like -f 137+140). IDs vary per video and disappear without notice. Use selector expressions with / fallbacks instead.
  • Asking for a resolution that does not exist. Use a ceiling, not an exact match: -f "bv*[height<=1080]+ba/b[height<=1080]".
  • Old yt-dlp seeing a partial format list. When extraction half-breaks, entire groups of formats vanish. Run yt-dlp -U and check -F again before changing selectors.
  • MP4-only expectations. Many high-quality streams are VP9/AV1 in WebM. If you need MP4 specifically, prefer --remux-video mp4 or accept what exists and convert after.

Reading -F output without pain

The table lists format ID, extension, resolution, and notes. Video-only rows have no audio column value; audio-only rows have no resolution. Anything you pick from the video-only section needs a +ba companion and ffmpeg to merge. If the list looks suspiciously short, that is usually extraction breakage, not the video — update first.

The mistake to avoid

Do not copy format strings from years-old Stack Overflow answers into scripts and expect them to hold. Every hardcoded ID is a future failure. Selectors with fallbacks are the only format strings safe to automate.

If it keeps breaking

Tired of fixing this every time a site changes?

Paste a link to see what a managed import API returns — the one that stays current so your workflow doesn't break.

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.