How to Fix yt-dlp Not Working 403 Forbidden & "Failed to Get Info" Errors
Kaley Torres
Updated on
If yt-dlp suddenly stops downloading YouTube videos, the error message can be more confusing than the problem itself. You may see HTTP 403 Forbidden, 429 Too Many Requests, "Sign in to confirm you’re not a bot," missing formats, or a warning that no supported JavaScript runtime was found.
Recent reports in the yt-dlp issue tracker show 403 errors linked to outdated versions, VPNs or proxies, IPv6 connections, data-center IPs, high-volume downloading, and changes in YouTube’s streaming behavior. In some cases, a missing JavaScript runtime can also lead to incomplete format extraction or repeated 403 failures.
That means updating yt-dlp is not always enough. The right fix depends on where the error occurs and what the full message says. In this guide, we’ll explain the most common yt-dlp errors, focus on why 403 Forbidden happens, and show practical ways to get YouTube downloads working again.

yt-dlp Not Working: Quick Answers to Common Errors
The same download failed symptom can come from an outdated yt-dlp version, a missing JavaScript runtime, YouTube's bot verification, a blocked network request, or a problem with the selected format. Use the table below to identify the error and the most practical next step.
| Common Error | Quick Answer |
|---|---|
| yt-dlp 403 Forbidden | 403 Forbidden usually means YouTube rejected the requested media URL or format. Update yt-dlp, check your JavaScript runtime, and test without a VPN or proxy. |
| yt-dlp 403 after downloading starts | If 403 appears after extraction, YouTube may be rejecting the selected media stream. Update yt-dlp and try another format or network. |
| yt-dlp 403 with no JavaScript runtime | A missing JavaScript runtime can limit available formats and trigger 403 errors. Install and enable a supported runtime such as Deno or Node.js. |
| yt-dlp "No supported JavaScript runtime could be found" | yt-dlp cannot find a JavaScript runtime required for some YouTube extraction. Install a supported runtime and configure --js-runtimes if needed. |
| yt-dlp "Sign in to confirm you're not a bot" | YouTube is requiring authentication or bot verification. Make sure the video works in your browser and use an authenticated session when appropriate. |
| yt-dlp 429 Too Many Requests | YouTube is rate-limiting your requests. Slow down downloads, reduce parallel requests, and check your VPN or proxy. |
| yt-dlp missing formats | Missing formats can result from YouTube changes or incomplete JavaScript-based extraction. Update yt-dlp and check your JavaScript runtime. |
| yt-dlp "This video is not available" | Check whether the video plays in your browser. If it does, update yt-dlp; otherwise, the video may have region, age, login, or access restrictions. |
| yt-dlp keeps retrying 403 errors | Repeated 403s usually indicate that the selected streaming route is being rejected. Check the JavaScript runtime, update yt-dlp, and try another format. |
| yt-dlp stopped working after an update | Check the yt-dlp version, configuration, JavaScript runtime, and extractor output. YouTube changes can also make older setups stop working. |
For most yt-dlp 403 errors, don't start by reinstalling everything. First identify where the 403 occurs, update yt-dlp, check for a supported JavaScript runtime, and test your network without a VPN or proxy. If the log shows Sign in to confirm you're not a bot, missing formats, SABR, or PO Token warnings, follow that specific error instead of treating it as a generic 403 problem.
Why Does yt-dlp Stop Working With 403 Errors?
A yt-dlp 403 Forbidden error can happen for several reasons, and it does not always mean that yt-dlp itself is broken. Recent YouTube changes have made JavaScript runtime support, authentication, streaming requests, and network conditions more important.
1. Missing JavaScript Runtime
This is one of the most important causes to check now. Without a supported JavaScript runtime, yt-dlp may miss formats or fall back to streaming methods that can result in 403 errors. Installing a supported runtime such as Deno can restore full YouTube extraction support.
2. YouTube Streaming Changes
YouTube frequently changes how it delivers videos, audio, and stream fragments. As a result, a format that worked previously may suddenly return 403 Forbidden, especially when yt-dlp cannot complete the required player or JavaScript processing.
3. Cookies or Bot Verification
If yt-dlp reports "Sign in to confirm you're not a bot", YouTube may be
requiring authentication or additional verification. Check that the video plays
normally in your browser and, when appropriate, provide a valid browser session
with --cookies-from-browser.
4. VPN, Proxy, or IP Restrictions
YouTube may limit requests based on the network or IP address. VPNs, proxies, and shared IPs can sometimes trigger 403 or 429 responses, so testing the same download without them can help identify a network-related problem.
5. Outdated yt-dlp or GUI Version
YouTube changes can quickly make older extractor code unreliable. If you use a GUI such as YTDLnis, check whether its bundled yt-dlp version and related components are up to date.
6. Format-Specific 403 Errors
If one format fails with 403 while another works, the problem may be limited to that particular streaming route. Let yt-dlp select another available format before changing other settings.
In short: When 403 appears together with "No supported JavaScript runtime could be found", check the JavaScript runtime first. If you see "Sign in to confirm you're not a bot", focus on authentication and cookies; otherwise, update yt-dlp and test the format and network separately.
👉 How to Download Audio Only Using youtube-dl
How to Fix yt-dlp Error 403 and “Failed to Get Info”
If yt-dlp suddenly stops downloading YouTube videos, start with the basics: update yt-dlp, enable a supported JavaScript runtime, and check whether YouTube is asking for authentication. These steps address the most common causes behind current 403 errors, missing formats, and “Failed to Get Info” messages.
1. Update yt-dlp Before Trying Other Fixes
YouTube changes its player, streaming requests, and extraction requirements frequently. An older yt-dlp build may therefore fail even if the same video worked previously. Update to the latest stable release first; if the problem appeared very recently, a nightly build may contain a newer fix.
yt-dlp -U yt-dlp -U --update-to nightly
Do not assume every 403 can be fixed by updating, but this is the quickest way to rule out an outdated extractor.
2. Install a JavaScript Runtime and EJS
One of the biggest changes to current YouTube extraction is the external JavaScript runtime requirement. yt-dlp now uses EJS (External JavaScript Scripts) to solve JavaScript challenges from YouTube. Without a supported runtime, yt-dlp warns that some formats may be missing, and YouTube extraction can become increasingly unreliable.
Deno is the recommended runtime and is enabled by default when available. Other supported runtimes can be explicitly configured with --js-runtimes.
yt-dlp --js-runtimes deno <video_url>
If you installed yt-dlp through pip or pipx, also make sure the matching yt-dlp-ejs package is installed and kept up to date:
pip install -U "yt-dlp[default]"
This step is particularly important when your log contains “No supported JavaScript runtime could be found”. The official EJS documentation recommends installing both a supported JavaScript runtime and the EJS challenge scripts. :contentReference[oaicite:2]{index=2}
3. Fix “Sign in to Confirm You’re Not a Bot”
If yt-dlp reports “Sign in to confirm you’re not a bot”, the problem is usually authentication or YouTube's current anti-bot checks rather than a simple download failure. First confirm that the video plays normally in your browser.
If you are already signed in, pass the browser session to yt-dlp:
yt-dlp --cookies-from-browser firefox <video_url>
You can replace firefox with your browser when supported. The important point is to use a valid browser session and, where required, keep the same network/IP. Do not blindly reuse old exported cookie files, since expired or incomplete cookies can cause authentication failures. yt-dlp's FAQ specifically recommends browser cookies for authentication-related blocking. :contentReference[oaicite:3]{index=3}
4. If You Get 403 During the Actual Download
A 403 Forbidden that appears after yt-dlp has already extracted the video usually means that YouTube rejected the media request itself. This is different from failing to find the video.
First update yt-dlp and make sure EJS is working. Then let yt-dlp choose the available format instead of forcing an old format ID:
yt-dlp <video_url>
Check the available formats with:
yt-dlp -F <video_url>
If only certain formats return 403 while others work, the problem may be tied to the selected YouTube client, streaming method, token requirements, or that particular media URL. Current yt-dlp issues show 403 failures occurring during video-data requests even when extraction itself succeeds. :contentReference[oaicite:4]{index=4}
5. Check for SABR or PO Token-Related Warnings
Some current YouTube formats use SABR streaming, while other requests may require a PO Token. In these cases, yt-dlp may successfully identify the video but skip formats because a direct media URL is unavailable or a required token is missing.
Look for messages such as “YouTube is forcing SABR streaming”, “missing a url”, or “PO Token” in the output. These indicate that the problem is deeper than a simple format selection error. Recent yt-dlp issue reports show these conditions affecting format availability. :contentReference[oaicite:5]{index=5}
In this situation, avoid forcing a specific format ID copied from an older guide. Start with automatic format selection and make sure yt-dlp, EJS, and the JavaScript runtime are current.
6. Check Your VPN, Proxy, and Network
If yt-dlp works on one network but repeatedly returns 403 or 429 on another, your IP address, VPN, proxy, or request pattern may be contributing to the restriction. Test the same video without a VPN or proxy and avoid sending large numbers of requests in parallel.
For authentication-related problems, browser cookies and yt-dlp should also use a compatible network environment. Changing networks repeatedly can make an existing login session less useful.
7. Run a Verbose Test Instead of Guessing
If the basic fixes do not work, run yt-dlp with verbose output. This shows whether the failure occurs during extraction, JavaScript processing, authentication, format selection, or the actual media request.
yt-dlp -vU <video_url>
Pay particular attention to lines showing JS runtimes, PO Token, player_client, SABR, the selected format, and the exact request that returns 403. The yt-dlp issue tracker specifically asks users reporting download-data 403 errors to provide the complete verbose output. :contentReference[oaicite:6]{index=6}
Quick takeaway: For current yt-dlp YouTube errors, do not treat every 403 as a format or FFmpeg problem. Start with an updated yt-dlp, a working JavaScript runtime and EJS, then check authentication, cookies, network restrictions, and any SABR or PO Token warnings. If the error remains, yt-dlp -vU is the fastest way to identify which stage is actually failing.
Read More: 4K Video Downloader Not Working/Can’t Parse Link/Retrieving Video Info.

yt-dlp Not Working? Try the Free Working yt-dlp Alternative
If you're frustrated with yt-dlp suddenly failing with 403 errors or broken downloads every month or week, WinX YouTube Downloader offers a hassle-free alternative that keeps up with YouTube's frequent changes:
- Proactive update mechanism: WinX automatically adapts to YouTube's playback or JS verification updates, minimizing download interruptions.
- Wide platform support: Download videos from YouTube, Vimeo, Facebook, Dailymotion, and over 300 other sites without compatibility issues.
- Flexible formats & resolutions: Supports MP4, WebM, FLV, and resolutions from 720p to 4K, letting you choose quality that suits your needs.
- Stable, user-friendly experience: No command-line hassles, no frequent dependency updates, just reliable one-click downloads.

In most cases, any occasional yt-dlp not working errors can be quickly resolved by following the steps outlined above.
FAQs — yt-dlp Not Working Issues
A 403 can happen when YouTube rejects a media request, format, client, or required token. Update yt-dlp first, make sure a supported JavaScript runtime and EJS are available, then check cookies, PO Token, and network restrictions.
yt-dlp now relies on an external JavaScript runtime and EJS to solve YouTube's JavaScript challenges. Without one, some formats may be unavailable and downloads can fail. Deno is recommended, while Node, Bun, and QuickJS can also be enabled.
Cookies can help when YouTube requires an authenticated session, such as for some age-restricted videos or bot verification. If the video plays normally in your browser, try passing that browser session with --cookies-from-browser. Cookies do not fix every 403, especially when the problem is a missing token or rejected media request.
Yes. Some YouTube clients require a Proof of Origin (PO) Token for certain requests. Without the required token, a format URL may return HTTP 403 or become unavailable. If your verbose output mentions PO Tokens, check yt-dlp's current PO Token guidance instead of simply changing the video format.
Without a working JavaScript runtime, yt-dlp may fall back to SABR or other restricted streaming methods, where individual fragments can return 403. Make sure the JS runtime and EJS components are installed before forcing a different format.
Updating yt-dlp does not automatically resolve every YouTube restriction. The failure may involve JavaScript challenges, authentication, PO Tokens, SABR streaming, a blocked IP, or a specific client or format. Run yt-dlp -vU <video_url> to identify which stage is failing.


Free Download
Free Download