Troubleshooting guide
Fix "HTTP Error 403: Forbidden" in yt-dlp
A 403 means the site accepted your connection and then refused to serve the file. With yt-dlp that almost always comes down to one of four things: a stale extractor, missing auth, a cached token that expired mid-session, or an IP the site does not trust.
Quick answer
Work through these in order — most 403s die at step one or two.
# 1. Update — old extractor logic is the #1 cause
yt-dlp -U
# 2. Clear yt-dlp's cache of expired tokens
yt-dlp --rm-cache-dir
# 3. Retry with signed-in browser cookies
yt-dlp --cookies-from-browser chrome "URL"What each step actually fixes
- • Updating replaces extractor logic the site has already broken. Download URLs are signed and formatted per site, and those schemes change constantly — an old yt-dlp asks for files in a way the site now rejects.
- • Clearing the cache removes stored signature data and tokens that have expired. A stale cache can keep producing 403s even after you update.
- • Cookies cover the cases where the file itself is gated: age restrictions, members-only content, region checks, or anything that needs a signed-in session.
Still 403 after all three?
- • Your IP may be blocked or rate-limited. Datacenter and VPN addresses get refused outright by many sites. Test the same command from a home connection — if it works there, the IP is the whole story.
- • You may be downloading too fast. Some sites 403 mid-download as throttling. Try
--limit-rate 2M --sleep-requests 1. - • The video may be genuinely unavailable — region-locked, private, or taken down. Open the URL in a normal browser from the same machine and confirm it plays at all.
The mistake to avoid
Do not start stacking random flags from old forum threads before updating. Nine times out of ten a 403 is stale extractor logic, and no combination of headers or user agents fixes that — yt-dlp -U does.
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.