VideoProc Converter AI

Reliable Alternative When yt-dlp Not Working

  • Stable, reliable, and timely updates for successful downloads
  • Download videos/music/subtitles from 1000+ UGC sites
  • Batch save videos, playlists, and channels from multiple sites
  • Pick your preferred quality (4K), size, format, and more
  • Fast download speed powered by GPU acceleration

Download Online Videos & AI Upscale to HD/4K! See the details >>

VideoProc Converter AI Offical YouTube Channel
See the alternative

How to Fix yt-dlp Not Working, 403 Forbidden, 503 & Other Errors

It's incredibly frustrating when yt-dlp stops working overnight without you changing a single setting. But if you've been using this tool long enough, you know this is just part of the routine. Right now, the big culprit is the android_vr client block (started Aug 17), which requires a switch to the Nightly build to fix. But that's not always the end of the story. A 403 or 503 error can be caused by anything from network routing to an unquoted URL. I've spent time digging through GitHub issues, Reddit, and official docs to build this checklist. Here is how to actually fix your setup, whether you're dealing with today's YouTube update or a local configuration issue.

yt-dlp Not Working August 2026

Is yt-dlp Not Working Right Now? August 2026 Update

YouTube downloads suddenly started returning 403 errors on August 17, 2026? It's because YouTube began rejecting formats requested through version 1.65.10 of the android_vr client, which is still selected by stable yt-dlp 2026.07.04.

yt-dlp removed the affected client from its defaults on August 18. That change is available in the nightly build but has not yet reached a stable release. The update steps are covered below under "403 After yt-dlp Selects a Format."

yt-dlp Not Working August 2026

Some affected logs also contain this warning: WARNING: [youtube] No supported JavaScript runtime could be found.

The two messages can appear in the same run, but they describe different problems. The 403 comes from the blocked android_vr request. The warning means yt-dlp cannot run YouTube's JavaScript challenges because a supported runtime is unavailable. Installing Deno or Node.js is still recommended, but it does not replace the yt-dlp update required for this particular 403.

🤔 If you're tired of manually updating to nightly builds or troubleshooting JavaScript runtimes every time YouTube changes its code, consider VideoProc Converter AI. It is a robust alternative for anyone who needs a reliable way to download online videos effortlessly:

  • Frequent updates ensure stable downloads without the need for manual fixes or adjustments.
  • Batch download 4K videos from 1000+ mainstream websites and 2000+ niche platforms.
  • Complete flexibility: set proxies and choose your preferred quality, fps, format, etc.
  • All-in-onetoolkit: download, record, convert, edit, and AI-upscale or enhance videos.

Quick Diagnosis: What Does the yt-dlp Not Working Error Point To

Before you start reinstalling things or blaming your internet, take a breath. Most yt-dlp problems follow a predictable pattern. Let's figure out what's actually happening.

What you see It usually points to Start here

HTTP Error 403: Forbidden

YouTube/client change, rejected media request, token, login or IP issue

Update yt-dlp and check where the 403 occurs

HTTP Error 503: Service Unavailable

Googlevideo/CDN, network route or temporary delivery problem

Retry later and test another network

No supported JavaScript runtime could be found

Incomplete YouTube extraction setup

Install/configure a supported JS runtime

Sign in to confirm you're not a bot

Login, cookies or IP verification

Test browser access and fresh cookies

HTTP Error 429: Too Many Requests

IP rate limiting

Stop repeated requests and check browser/CAPTCHA access

Requested format is not available

Video or format-specific problem

Let yt-dlp choose automatically or inspect available formats

ffmpeg not found / merge error

Local yt-dlp setup

Check ffmpeg and PATH

'list' is not recognized...

Shell syntax, often an unquoted YouTube URL

Put the entire URL in quotes

Unsupported URL

Wrong URL or website extractor changed

Update yt-dlp and test the site/URL

Why Is yt-dlp Not Working

1. YouTube or the Website Changed Something

This is one of the first things to suspect when yt-dlp worked normally yesterday but suddenly fails today without any changes on your side. yt-dlp has to keep adapting to the way YouTube and other websites expose video information and media streams, so changes to player clients, streaming URLs, JavaScript challenges, playback verification, APIs, or page structures can break an otherwise working setup.

The August 17 android_vr breakage is a good example. The yt-dlp installation itself did not suddenly become corrupt. YouTube changed how requests from that client were handled, and downloads started returning 403 until yt-dlp changed its defaults. The same thing can happen on other supported websites when an extractor no longer matches the site's latest API or page structure.

Tips: The best way to tell if it's 'just you' is to look at the scope. If everyone starts seeing the same error at the same time, YouTube probably changed something on their end. Don't waste time rebuilding your setup when the problem is likely a platform-side regression.

2. Your yt-dlp Environment Is Outdated or Incomplete

Sometimes the website is fine, but your local setup has fallen behind.

An older yt-dlp build may still launch normally while using an extractor that no longer works with the current site. A third-party GUI may also bundle an older yt-dlp backend even if you have updated another copy manually.

Other dependencies can matter too. Current YouTube extraction may rely on a supported JavaScript runtime, while ffmpeg is needed for merging or post-processing certain downloads.

3. YouTube Is Rejecting or Restricting the Request

Even if yt-dlp finds the video and lists the formats, the actual download might still be blocked. This usually stems from access issues like cookies, IP bans, or rate limits. If you see a 403 or 429 at this stage, it means the extraction was successful, but the server is slamming the door the moment the media request starts.

YouTube Is Rejecting or Restricting the Request

4. The Video or Format Itself Has a Problem

If ten videos work and one does not, yt-dlp itself is probably not the main problem. The failed video may be private, deleted, age- or region-restricted, available only after login, or missing the format you are forcing. The same applies when one resolution returns 403 while another downloads normally.

Playlist URLs and old format rules can also create video-specific failures. In these cases, it makes more sense to compare another video or let yt-dlp choose a format automatically than to reinstall the whole tool.

5. Your Command Has a Syntax Problem

Some failures happen before yt-dlp even gets a fair chance to process the URL. A common Windows example is a YouTube URL containing &: without quotation marks, Command Prompt can split the URL into separate commands and produce errors such as 'list' is not recognized as an internal or external command.

Old config files can be just as confusing because they may silently force a format, proxy, cookie file, player client, or other option on every run. If a plain yt-dlp command works but your usual setup does not, your command or configuration deserves a closer look.

6. The Media Server or Network Path Is Failing

When a failure occurs only after metadata extraction is complete, the issue is often external. Repeated 503 responses and interrupted downloads, especially those resolved by changing connection, typically point toward media server instability or network routing issues rather than an internal yt-dlp error.

How to Fix yt-dlp Not Working: General Fix

Let's start by updating yt-dlp and running a test on a public video to see what's actually happening:

yt-dlp -vU "VIDEO_URL"

The verbose log should point you in the right direction. Don't focus only on the final error—check the few lines right before it, because they often reveal what actually went wrong:

  • Many unrelated videos suddenly fail: check for a current YouTube or extractor issue. If the fix has only reached nightly, use the nightly build until it lands in stable.
  • You see a JavaScript runtime warning: fix the runtime setup before chasing less obvious causes.
  • Only one video or format fails: try another public video and remove any forced format or old custom options.
  • You see a login, CAPTCHA, bot, or 429 message: check browser access, cookies, and your IP/network.
  • The media downloads but merging fails: look at ffmpeg rather than YouTube.
  • The log ends in 403 or 503: jump to the dedicated sections below, since these two errors need different troubleshooting.

If your usual command is complicated, also try the plain version once:

yt-dlp "VIDEO_URL"

If that works, yt-dlp itself is probably fine. The problem is more likely to be one of your format choices, config entries, cookies, proxy settings, or other custom options. You can then isolate the problem by following the troubleshooting steps below for your specific error, whether it's a 403, 503, or a syntax issue.

How to Fix yt-dlp 403 Forbidden

Do not sort 403 errors only by how quickly the command fails. The better clue is the last step yt-dlp completed before the server refused the request. Run the command with verbose logging, then use the matching section below.

yt-dlp -v "VIDEO_URL"

Before changing cookies, formats, or network settings, update yt-dlp. The project recommends trying the nightly build when the stable release is affected by a recent site change.

yt-dlp --update-to nightly

Run the same download again after updating. If the error remains, check where the new log stops.

How to Fix a yt-dlp 403 Error Before Video Information Is Retrieved

If the log stops at Downloading webpage, an initial API request, or another step before yt-dlp displays the title and formats, the media download has not started. The website is refusing the first request, the extractor is outdated, or the session needs browser verification.

Open the same video in a browser on the same connection. If the browser also asks you to sign in, solve a CAPTCHA, verify your age, or confirm that you are not a bot, complete that check and continue with the browser cookies steps below.

If the video opens normally in the browser, try the updated yt-dlp build again. On non-YouTube sites protected by Cloudflare, a verified browser session and the same IP may still be required. The yt-dlp FAQ explains how to pass that browser session to yt-dlp.

FFmpeg cannot fix this stage of the failure. yt-dlp has not reached the media file or the final merge yet.

How to Fix a yt-dlp 403 After the Format Is Selected

If the log reaches [info] Downloading 1 format(s) before returning 403, extraction succeeded. The refusal happened when yt-dlp tried to open the selected media URL.

yt-dlp 403 after selecting a video format

The August 2026 android_vr failure has this pattern:

Downloading android vr player API JSON
[info] ... Downloading 1 format(s): 400+251
ERROR: unable to download video data: HTTP Error 403: Forbidden

If your log mentions android_vr and your build predates the August 18 fix, switch to nightly using the update command above. The official yt-dlp issue for this 403 lists nightly as the solution until the next stable release includes the change.

If the log explicitly says that a PO Token is required, follow yt-dlp's current PO Token guide. It recommends using a provider plugin instead of extracting tokens manually, since many PO Tokens are bound to individual video IDs and must be generated separately for each video.

If neither message appears, continue with the format and network checks in the next section.

How to Fix a yt-dlp 403 Error on a Specific Format or After a Download

If one format returns 403 while another works, list the available formats and select a different one:

yt-dlp -F "VIDEO_URL"

yt-dlp -f "FORMAT_ID" "VIDEO_URL"

As a quick comparison, request the best format that already contains both video and audio:

yt-dlp -f "b" "VIDEO_URL"

This may provide lower quality than yt-dlp's usual separate video-and-audio selection, but it tests a different media file. If it works, yt-dlp itself is functioning and the failure is tied more closely to the original format or playback path.

If the download starts and later returns 403, rerun the command once to obtain a fresh media URL. If the same point fails again, disconnect a VPN or proxy, try a phone hotspot, or test IPv4 explicitly:

yt-dlp --force-ipv4 "VIDEO_URL"

A route that works on one connection but not another points to an IP or delivery-path problem. It is still not an FFmpeg error: the failure occurs while yt-dlp is fetching bytes, before the final merge.

How to Fix a yt-dlp 403 Error with a Missing JavaScript Runtime Warning

The warning below does not prove that it caused the 403. It does show that the YouTube extraction setup is incomplete and should be fixed before you try less specific workarounds.

WARNING: [youtube] No supported JavaScript runtime could be found

Deno is the recommended runtime and is enabled by default when yt-dlp can find it. Install Deno 2.3.0 or later, then confirm that it is available on your system path:

deno --version

Official bundled executables such as yt-dlp.exe already include the EJS challenge scripts. If you installed yt-dlp with pip, update it with the default dependency group so that the matching yt-dlp-ejs package is installed:

python -m pip install -U "yt-dlp[default]"

Node.js is also supported, but it must be enabled explicitly:

yt-dlp --js-runtimes node "VIDEO_URL"

See the official EJS setup guide for supported versions and installation-specific instructions. After the warning disappears, rerun the download. If 403 remains, diagnose it by the stage where it now appears rather than assuming the runtime is still the cause.

How to Fix a yt-dlp 403 Error with "Sign in to Confirm You're Not a Bot"

This message points to a session or IP verification problem. Open the same video in your normal browser on the same connection and complete the sign-in, CAPTCHA, age check, or bot-confirmation prompt.

Once the video opens normally, rerun yt-dlp using cookies from that browser:

yt-dlp --cookies-from-browser chrome "VIDEO_URL"

Replace chrome with the browser you actually used. Keep the same connection when you rerun the command, since some verified sessions depend on both the cookies and the IP address that completed the check.

If the log also contains 429 Too Many Requests, stop simultaneous or repeated downloads and complete any browser CAPTCHA before trying again. The yt-dlp FAQ describes 429 as an IP-based block caused by overuse.

Use cookies for this branch because the error points to login or browser verification. If YouTube shows no such prompt, return to the earlier 403 branches instead of treating cookies as a universal fix.

How to Fix yt-dlp 503 Service Unavailable

If your log ends with HTTP Error 503: Service Unavailable after yt-dlp has selected a format, started downloading, or displayed Resuming download, the failure is occurring during media delivery. yt-dlp has already retrieved the video information, but the request to the googlevideo.com media server cannot be completed.

yt-dlp HTTP Error 503 Service Unavailable

A 503 at this stage is often temporary. It may be related to the media server, network route, IP address, request frequency, or selected format. The most useful fixes are to start a fresh request, retry more slowly, switch networks, or download another format. See the detailed steps below:

Step 1. Retry with a Fresh URL and HTTP Backoff

Run the original command again once. yt-dlp will request a fresh media URL and can resume an existing .part file when possible. If the same retry loop returns, add a delay between HTTP retries:

yt-dlp --retries 10 --retry-sleep "http:linear=2:10:2" "VIDEO_URL"

This spaces the retries from two to ten seconds apart instead of sending ten requests in quick succession. It cannot force an unavailable server to respond, but it gives a temporary CDN problem time to clear. If the log specifically reports failed DASH or HLS fragments, reduce fragment concurrency and apply the delay to fragment retries:

yt-dlp -N 1 --fragment-retries 10 --retry-sleep "fragment:linear=2:10:2" "VIDEO_URL"

The -N 1 option affects segmented downloads only. It will not change a normal single-file HTTP request.

Step 2. Change the Route to the Googlevideo Server

If delayed retries still fail, disconnect a VPN or proxy and run the command again. If you are already using a direct connection, try the same video once through another network, such as a phone hotspot. You can also test IPv4 explicitly:

yt-dlp --force-ipv4 "VIDEO_URL"

If the download works on the hotspot, without the VPN, or over IPv4, use the working route or wait before returning to the original connection. Reinstalling yt-dlp will not repair a CDN route that fails only on one network.

Step 3. Switch to Another Media Format

If one video still fails, list its available formats:

yt-dlp -F "VIDEO_URL"

Select a different format ID and try again:

yt-dlp -f "FORMAT_ID" "VIDEO_URL"

For a quick test, request the best format that already contains both video and audio:

yt-dlp -f "b" "VIDEO_URL"

This may provide lower quality than the normal best-video-plus-best-audio selection, but it can use a different media file. If another format works, keep that format or retry the preferred one later.

✍️ What If the yt-dlp 503 Forbidden Error Still Appears

Try one unrelated public video. If many videos fail only on one connection but work on another, continue with the working network or wait for the original IP or route to recover. If one video fails while other videos download normally, retry that video later or use a format that works. If fresh URLs, delayed retries, another network, and another format all return 503, check the current yt-dlp issue tracker for a matching report and try again later. At that point, repeatedly changing local settings is unlikely to help.

Cookies are relevant only when YouTube also asks for login or browser verification. Deno is relevant to JavaScript extraction. Neither is a direct fix for a 503 that occurs after yt-dlp has already selected a format and reached the media server.

How to Fix Other Problems When yt-dlp Is Not Working

If your yt-dlp error does not match the 403 or 503 cases above, look for the exact message or behavior below. These problems usually come from the command, local setup, saved options, or a site-specific extractor rather than a widespread YouTube outage.

1. How to Fix 'list' Is Not Recognized When Running yt-dlp

If Windows CMD displays 'list' is not recognized as an internal or external command, then very possibly it's because yt-dlp has not received the complete URL. CMD is treating each ampersand as a command separator. To fix this, put quotation marks around the entire URL: yt-dlp "https://www.youtube.com/watch?v=ABC&list=XYZ&index=1"

2. How to Fix "ffmpeg Not Found" or "JS Runtimes: None" in yt-dlp

Run the following commands from the same terminal or environment used to launch yt-dlp:

  • ffmpeg -version
  • deno --version

If either command is not recognized, add the folder containing that executable to PATH, restart the terminal, and try again. If both commands work in the terminal but a GUI still reports ffmpeg not found or JS runtimes: none, restart the GUI and check which environment it uses. The GUI may not have access to the same PATH as your terminal.

💡 Tips: On Windows, the JavaScript runtime can also be placed in the same folder as yt-dlp.exe or supplied through the --js-runtimes option. See the official EJS setup guide for the supported runtime options.

3. How to Fix yt-dlp When It Works in the Terminal but Not in a GUI

Check the version used in the terminal: yt-dlp --version

Compare it with the version shown in the GUI log. If they are different, the GUI is using its own yt-dlp executable. Use the GUI's built-in updater or replace its bundled yt-dlp backend. If the GUI allows you to select a custom backend, point it to the updated executable. Updating yt-dlp in the terminal alone will not update a separate copy stored inside the GUI. Restart the GUI and confirm that its log now shows the same version as the terminal before testing the download again.

4. How to Fix yt-dlp When a Config File Overrides Your Command

Run the video once without loading any yt-dlp configuration files: yt-dlp --ignore-config "VIDEO_URL"

If this command works, an option in your config file is causing the failure. Check for an old proxy, format selector, cookies file, player client, extractor argument, or other workaround that is being applied to every download. Remove the outdated option and run yt-dlp normally again. The possible config locations are listed in the yt-dlp configuration documentation.

5. How to Fix "Requested Format Is Not Available" in yt-dlp

Remove the hard-coded format ID and let yt-dlp choose an available format: yt-dlp "VIDEO_URL". If this works, the format specified in your usual command is not available for that video. List the formats that can currently be downloaded: yt-dlp -F "VIDEO_URL"

Choose a format from that list instead of continuing to use an old command such as: yt-dlp -f 137+140 "VIDEO_URL". Format availability can differ between videos, so a combination that worked previously may not work for every URL.

Fix Requested Format Is Not Available in yt-dlp

6. How to Fix yt-dlp When It Fails with a Proxy or VPN

Disable the proxy or VPN temporarily and retry the same public video. Also remove any --proxy option from the command or yt-dlp config file. If you are unsure whether a proxy is being used, check the verbose log:

yt-dlp -v "VIDEO_URL"

If the video downloads over the direct connection, the failure is tied to the proxy IP or network route. Keep the direct connection or switch to another proxy or VPN server. If yt-dlp continues to fail without the proxy or VPN, the network route is not the only cause, so continue with the error shown in the new verbose log.

7. How to Fix "HTTP Error 400" After Adding Cookies to yt-dlp

Remove the --cookies option and run the command again. If the 400 error disappears, the cookie file is malformed or uses the wrong newline format. The simplest replacement is to let yt-dlp read cookies directly from your browser:

yt-dlp --cookies-from-browser chrome "VIDEO_URL"

Replace chrome with the browser you use.

If you prefer a cookies.txt file, re-export it in Mozilla/Netscape format. Its first line must be one of the following:

# HTTP Cookie File
# Netscape HTTP Cookie File

The newline format should be CRLF on Windows and LF on Linux or macOS. The official yt-dlp FAQ documents these cookie-file requirements.

8. How to Fix yt-dlp When It Downloads a Playlist Instead of One Video

Add --no-playlist to restrict the command to the current video:

yt-dlp --no-playlist "VIDEO_URL"

This usually happens when a YouTube watch URL also contains list= and index= parameters. You can also remove those parameters and use a clean watch URL containing only the video ID. If the single video now downloads normally, yt-dlp was processing the playlist information included in the original URL.

9. How to Fix "Unsupported URL" in yt-dlp

Update yt-dlp and test the URL again. If you installed an official executable that supports self-updating, run: yt-dlp -U

If your copy was installed through pip, pipx, a package manager, or a third-party application, update it through the same installation method. If the latest stable version still returns Unsupported URL, the extractor fix may only be available in the nightly build:

yt-dlp --update-to nightly

When YouTube and other sites work but one service still fails, the problem is probably limited to that site's extractor. Capture the complete verbose log: yt-dlp -v "VIDEO_URL"

Check the yt-dlp issue tracker for an existing report. If the site has changed and no extractor fix is available yet, you may need to wait for an update or submit the affected URL and verbose log to the project.

yt-dlp Still Not Working? Try VideoProc Converter AI

If you've already updated yt-dlp, or you're simply tired of troubleshooting runtimes, cookies, format IDs, 403 errors, and whatever breaks next—and just want to download your favorite videos with a few clicks, VideoProc Converter AI can be a real lifesaver. One thing I particularly like about it is how actively its downloader is maintained. The team keeps updating it to respond to changes across YouTube and other video platforms, so you don't have to keep chasing fixes whenever something changes. Just paste the video URL, let it analyze the available streams, and choose the resolution, format, audio, or subtitles you want.

Some of the Highlight Features of VideoProc:

  • 1-Click to download videos, audio, subtitles, and playlists
  • Choose available resolution, format, fps, size, and subtitle language.
  • Support  YouTube, Vimeo, and 1,000+ UGC sites and 2,000+ niche sites.
  • Stable and easy enough! No separate ffmpeg, Deno, or command-line setup.
  • Built-in proxy, conversion, compression, editing, and AI enhancement tools
  • VideoProc Converter AI is trusted by high-authority sitesTrustScore 4.3

FAQs

1. Is yt-dlp down right now?

yt-dlp is a local program, not a hosted download service, so it does not go down in the usual sense. A supported website can change its player or API and break an extractor until yt-dlp adapts. That is what happened with YouTube's android_vr route on August 17, 2026.

2. Why did yt-dlp stop working overnight?

For the current YouTube 403 wave, YouTube started rejecting formats requested through a player client used by yt-dlp stable. The August 18 nightly removes that client from the default set. Other overnight failures may come from a site extractor change, an expired session, an IP restriction, or a CDN outage, so confirm the final error in -vU output.

3. Should I use stable or nightly yt-dlp?

The project recommends nightly for regular users because website fixes arrive there sooner. Stable changes less often, which suits distributors, but that delay is inconvenient when YouTube has just changed a playback route.

4. Why does yt-dlp -U say I am up to date when downloads still fail?

A release binary updates within its current channel. If stable is current at 2026.07.04, -U can confirm that version even though the August fix exists only in nightly. A package-managed copy may also require pip, Homebrew, apt, pipx, or the GUI's own updater.

5. Does yt-dlp require Deno now?

YouTube extraction now requires an external JavaScript runtime and EJS scripts for full support. Deno is the recommended runtime and is enabled by default when found. Missing it can remove formats or cause extraction failures, but it was not the sole cause of the August 17 android_vr 403 regression.

6. Does FFmpeg fix yt-dlp 403 errors?

No. FFmpeg handles merging, conversion, audio extraction, and other post-processing. A 403 comes from the website or media server before FFmpeg can work on the file.

7. Why does yt-dlp work for some videos but not others?

The videos may use different formats, CDN nodes, access restrictions, player clients, or token requirements. Compare them with yt-dlp -F, use the same network and authentication state, and note where their verbose logs diverge.

8. What should I do about repeated 503 errors?

Try a different video, wait before retrying, and reduce concurrent downloads. If the same file always fails at one fragment, keep the verbose log and test another normal network path. Do not treat 503 as a synonym for 403; they point to different failures.

About The Author

Cecilia Hwung is the editor-in-chief of Digiarty VideoProc. With over a decade of experience, she specializes in delivering insightful content on AI trends, video/audio editing, conversion, troubleshooting, and software reviews. Her expertise makes her a trusted ally in enhancing users' digital experiences.

Home > Resource > How to Fix 4K Video Downloader not Working

Digiarty Software, established in 2006, pioneers multimedia innovation with AI-powered and GPU-accelerated solutions. With the mission to "Art Up Your Digital Life", Digiarty provides AI video/image enhancement, editing, conversion, and more solutions. VideoProc under Digiarty has attracted 5.2 million users from 180+ countries.

Any third-party product names and trademarks used on this website, including but not limited to Apple, are property of their respective owners.

X