yt-dlp-troubleshootinglisted
Install: claude install-skill franciscobmacedo/postreef-skills
# yt-dlp troubleshooting (2026)
Most yt-dlp "bugs" are one of five things: an old build, no JavaScript runtime, a missing PO token, a missing TLS-impersonation dependency, or an IP that the platform has decided is a bot. Work through §1 before touching anything else, then match the exact error text in §2.
Sources: the yt-dlp README and wiki (Extractors, FAQ, PO-Token-Guide, EJS pages), maintainer statements on GitHub issues, the bgutil provider README, and the author's experience running yt-dlp at volume. Quotes are verbatim where marked. Open `references/error-table.md` whenever a version number, a client name, or a flag matters (the user's build is old, you're recommending a runtime or provider version); it carries the sources and the date each fact was checked. This area changes monthly.
## 1. Always do this first (fixes most reports)
```bash
yt-dlp --version # stable is dated YYYY.MM.DD; anything >90 days old is suspect
pip install -U "yt-dlp[default,curl-cffi]" # pip users. [default] = yt-dlp-ejs + deps; curl-cffi = impersonation
yt-dlp --update-to nightly # binary users. "-U" stays on your channel; nightly is the maintainers' recommended channel
yt-dlp -v "URL" 2>&1 | head -40 # verbose header: version, runtimes found, PO-token providers, impersonate targets
```
Read the verbose header. You want to see a JS runtime (`deno` or `node`), and for YouTube on a server, a PO Token Provider line. If a maintainer asks for a bug report th