How to Fix yt-dlp Not Working 403 Forbidden & "Failed to Get Info" Errors

author - Kaley Torres Kaley Torres

Updated on

If you’ve been using yt-dlp to download YouTube videos, you’ve probably run into frustrating yt-dlp not working issues lately. Maybe your downloads suddenly stopped working, you got yt-dlp 403 forbidden error, failed to get info, or the program started demanding a newer version of Python every few weeks.

These issues hit hardest if you’re on a stable or older Linux distro, or if you just don’t feel like constantly upgrading Python. It’s mostly down to YouTube making changes, yt-dlp needing newer Python versions, and the way cookies and sleep flags are handled now. Here’s what’s going on and some practical ways users on Reddit have been keeping their downloads.

yt dlp Not Working yt-dlp 403 forbidden

Why yt-dlp Suddenly Stops Working (Error 403/Failed to Get Info)

If you’ve ever tried yt-dlp only to see Error 403: Forbidden or Failed to Get Info, you know the frustration: everything worked yesterday, and now even updating to the latest version doesn’t fix it. This issue typically affects users on older Linux distros, or anyone who does not constantly update Python. Here’s a detailed breakdown of why it happens and what’s going on behind the scenes.

1. Cookie & Authentication Handling Has Become Critical

YouTube has become more aggressive with login requirements and rate-limiting. Many videos now require valid cookies to download properly. Browser-based session cookies (especially Firefox or Safari) are more reliable than Chromium-based ones due to database locking or stricter security. Without proper cookies, audio-only or high-resolution downloads may fail, even if you are logged in. On Windows, Firefox cookies may be locked if the browser is open. Workarounds include closing Firefox or copying the cookies database to a temporary path. Exporting cookies to a file often breaks quickly, which is why using --cookies-from-browser is now the recommended approach. Advanced users can also pass logged-in cookies manually or install a PO token provider plugin.

2. YouTube Player & API Frequently Change

YouTube constantly updates its streaming infrastructure, DRM, and API behavior to prevent automated downloads. These changes often target separate audio/video streams and signature verification, which is why -f 136+140 may suddenly fail with a 403, while -f best (combined streams) still works. The server may require a valid token for each fragment in DASH or SABR streams. Recent changes also affect livestreams marked as “Made for Kids,” which require different clients or tokens. These are not bugs in yt-dlp; the downloader must adapt to YouTube’s rotating systems.

3. Separate Streams vs Combined Streams & ffmpeg Considerations

Requests for separate audio/video streams are more fragile due to YouTube server-side changes. Users may experience repeated 403 errors on individual fragments. Combined formats (-f best) are more stable because they use a single container, avoiding some of YouTube’s restrictions. In some cases, having ffmpeg installed can interact badly, triggering 403s for separate streams. Removing ffmpeg may temporarily allow downloads but disables merging, converting, or post-processing, so it’s only a temporary workaround.

4. Python Version Requirements Keep Rising

yt-dlp relies on modern Python features. Older Python versions (3.7, 3.9) may fail to handle YouTube’s new JS player signatures or cryptography correctly. Users often see errors when Python is below 3.10, although nightly builds can partially work on 3.9. Keeping Python updated ensures better compatibility.

5. Rate-Limiting and IP Restrictions

Downloading multiple videos quickly may trigger temporary IP blocks. Using sleep flags (--min-sleep-interval, --max-sleep-interval, --sleep-requests) helps mimic human behavior and reduces 403 errors. VPNs can also bypass region-specific restrictions.

6. GUI vs CLI & Nightly Builds

Some GUI tools lag behind yt-dlp’s latest updates, causing format or resolution errors even if the CLI version works. Nightly builds often include hotfixes for breaking YouTube changes, so users relying on stable versions may encounter unexpected failures.

Additional Tips & Workarounds

  • Advanced users can add --extractor-args "youtube:player_client=default,android;formats=missing_pot" to temporarily bypass certain 403s when using --live-from-start.
  • Use -v or --dump-pages to debug and see exactly which requests are blocked.
  • Livestreams labeled as “Made for Kids” may require special handling due to client restrictions (android_vr or ios_downgraded).

> Free YT-DLP Alternatives That Actually Work in 2026

yt dlp Not Working Failed to Get Info

yt-dlp Solutions for Error 403 / Failed to Get Info

If yt-dlp suddenly stops downloading videos, returning Error 403 or “Failed to Get Info,” you can follow these step-by-step solutions. They address YouTube API changes, authentication issues, format conflicts, and best practices observed by the community.

Use Browser Cookies for Authentication

Many YouTube videos now require a logged-in session to download, especially age-restricted, private, or region-locked content. yt-dlp cannot bypass these restrictions on its own, but using cookies from Firefox or Safari allows it to simulate an authenticated session reliably. Chromium-based browsers (Chrome, Edge, Vivaldi) often fail due to cookie database locks or stricter security, so always close the browser before extracting cookies. The --cookies-from-browser option automatically locates the active browser profile and retrieves valid cookies, reducing authentication errors. For multiple profiles, specify the profile path explicitly:

yt-dlp --cookies-from-browser firefox:"Path/to/your/profile" <video_url>

Combine cookies with simplified formats (e.g., -f best) and download intervals (--min-sleep-interval, --max-sleep-interval) to improve success rates for multiple downloads. Always keep yt-dlp updated to maintain compatibility with YouTube's authentication changes.

Use Combined Formats Instead of Separate Streams

YouTube frequently updates its streaming infrastructure, which can cause separate audio/video streams (e.g., -f 136+140) to fail with HTTP 403 errors. SABR/DASH streaming, DRM checks, and signature validation now often require a token for each fragment. Using a combined format downloads both video and audio in a single container, avoiding these errors.

Command example:

yt-dlp -f best <video_url>
  • The -f best option automatically selects the highest-quality combined format available, ensuring audio and video are together.
  • This method bypasses SABR streaming and fragmented DASH restrictions.
  • Combined formats reduce issues caused by FFmpeg conflicts, as no merging of separate streams is needed.
  • For login-required or age-restricted videos, combine -f best with --cookies-from-browser firefox.

Tip: Always check available formats first with yt-dlp --list-formats <video_url> to ensure the best combined format is selectable.

Fallback to Lower-Resolution or Pre-Combined Formats

If high-resolution or separate streams repeatedly fail (4K+, -f 136+140), request a lower-resolution pre-combined format. This avoids separate streams and reduces format-specific blocks while maintaining good quality:

yt-dlp -S vcodec:h264,fps,res:720,acodec:m4a <video_url>

Update to Nightly Builds

YouTube’s player and streaming APIs change frequently. Stable versions may not immediately include fixes, leading to 403 errors or missing formats. Nightly builds contain the latest patches to handle these breaking changes.

yt-dlp -U --update-to nightly
  • Nightly builds include fixes for SABR streaming, nsig updates, and other API modifications.
  • Use nightly builds if separate streams or high-resolution formats fail.
  • Combine nightly builds with --cookies-from-browser firefox for login-restricted content.
  • Nightly builds are updated frequently; running yt-dlp -U periodically keeps compatibility current.

Test Without FFmpeg (Optional)

FFmpeg may trigger 403 errors during separate stream merging. Temporarily uninstalling or renaming FFmpeg can help identify if it causes failures. Note: this disables merging, conversion, and metadata embedding. Use primarily for testing, then restore FFmpeg for post-processing:

yt-dlp -f 136+140 <video_url> (without ffmpeg in PATH)

Tip: Later manually merge or convert formats with FFmpeg once download succeeds.

Handle Audio-Only Downloads Correctly

Downloading audio-only formats (MP3/M4A) can fail due to server-side restrictions or authentication issues. Instead, download the best audio stream first, then convert using FFmpeg:

yt-dlp -f bestaudio <video_url> -o "video.m4a"
ffmpeg -i video.m4a output.mp3

Tip: Include cookies if required and adjust output format as needed (opus, AAC, etc.).

Prepare for Deno & Python ≥3.10 Requirement

Future yt-dlp versions rely on Deno for executing YouTube JS code. Installing Deno in advance ensures smooth operation:

winget install DenoLand.Deno
deno --version

Nightly builds may still partially work on Python 3.9, but 3.10+ is recommended.

Switch to CLI if Using a GUI

Some GUI frontends lag behind yt-dlp updates. Using the CLI ensures the latest code, full control over cookies, formats, and sleep intervals, and avoids errors caused by outdated GUI backends:

yt-dlp -f best --cookies-from-browser firefox <video_url>

Additional Fixes

  • Use an archive file to avoid duplicate downloads:
    --download-archive "Path/to/archive.txt"
  • Embed metadata, thumbnails, and chapters:
    --embed-metadata --embed-thumbnail --embed-chapters <video_url>
  • Fix SRT subtitles:
    --write-sub --write-auto-sub --sub-lang en --sub-format srt --use-postprocessor srt_fix
  • Prefer Opus audio when possible:
    -x --audio-format opus
  • Monitor GitHub Issue #14680 or Reddit for temporary API changes.

Important: Combining browser cookies, sleep intervals, simpler format selection, nightly builds, and monitoring updates is the safest approach to bypass 403 errors and ensure yt-dlp downloads continue smoothly.

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.
download YTB video with winx

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

1. Why do I get yt-dlp 403 forbidden or “Failed to Get Info” suddenly on yt-dlp?

YouTube frequently updates its player, API, and streaming infrastructure, enforcing SABR/DASH fragment tokens and signature checks. Older yt-dlp versions or separate streams often fail. Using combined formats (-f best), cookies, or nightly builds resolves most sudden 403 errors.

2. How do cookies affect downloading videos with yt-dlp?

Many videos require login sessions. Browser cookies from Firefox or Safari help yt-dlp authenticate correctly. On Windows, Firefox may lock the cookies file, so close the browser or copy it to a temp path. Proper cookies prevent 403s on age-restricted or private videos.

3. Should I use separate audio/video streams or combined formats?

Separate streams (-f 136+140) are fragile due to YouTube's fragment-based streaming, DRM, and nsig checks. Combined formats (-f best) download video and audio in one container, avoiding SABR restrictions and FFmpeg merging conflicts, offering higher success rates for downloads.

4. Why do some videos fail even with the latest yt-dlp version?

YouTube's ongoing API and JS player changes, livestream or “Made for Kids” restrictions, IP rate-limits, and high-resolution formats can still block downloads. Nightly builds, cookies, sleep intervals, or using lower-resolution pre-combined formats usually solve these persistent failures.

5. How can I future-proof yt-dlp downloads against breaking changes?

Keep yt-dlp updated (nightly builds), use valid browser cookies, prefer combined formats, apply sleep intervals, and monitor GitHub/Reddit for API changes. Install Deno for future JS player execution and maintain Python 3.10+ to reduce compatibility issues and prevent sudden download failures.

Continue Reading...