How to Fix yt-dlp HTTP 429 Errors: Causes & Solutions
Clean IP picks: Static IPs from $1.5 each, Dynamic IPs from $0.5/GB
When using yt-dlp to download YouTube videos in bulk, back up content, or manage cross-platform operations, you may occasionally encounter the error HTTP Error 429: Too Many Requests.
A 429 response means the target service considers your requests to exceed its permitted rate or usage limits.
The restriction may be related to your outgoing IP address, account status, request patterns, or a specific endpoint. The exact cause depends on where the error occurs.
To troubleshoot the issue effectively, first identify which request stage returns the 429 error, then apply the appropriate fix.

What Is a yt-dlp HTTP 429 Error? Common Causes
HTTP 429 is the status code returned when a service receives too many requests. It is not necessarily triggered by a single request. In many cases, the service determines that repeated requests from the same outgoing IP address have exceeded its usage limits over a period of time.
Common causes include:
A 429 response does not necessarily mean your IP address has been permanently banned. In many cases, it indicates a temporary restriction that may be lifted after adjusting your request patterns or network connection.
How to Fix yt-dlp HTTP 429 Errors
Follow these troubleshooting steps in order. Start with the simplest checks before making more extensive changes to your setup.
1. Identify Where the 429 Error Occurs
When downloading YouTube videos, yt-dlp sends multiple requests rather than just one. These may include requests for the video webpage, initial data, player APIs, video streams, and subtitles. The troubleshooting approach depends on which stage returns the 429 error:
Check the logs to pinpoint where the 429 error occurs. This is usually more effective than immediately switching IP addresses.
2. Pause Requests and Avoid Repeated Retries
Repeatedly retrying requests after receiving a 429 response may prolong the restriction. Pause the current task for a while, then review the settings and connection issues below. If the restriction is temporary, you may be able to resume downloading once access is restored.
3. Update yt-dlp and Check Your Runtime Environment
Older versions may contain outdated extraction logic. Update yt-dlp to the latest version and make sure your JavaScript runtime is properly configured.
YouTube extraction may require JavaScript challenge-solving scripts. yt-dlp officially recommends Deno and also supports Node.js and QuickJS through configuration.
If the logs show JavaScript Runtime or EJS-related warnings, check whether your runtime environment and challenge-solving components are working correctly.
If the 429 error persists after updating, check your request frequency, outgoing IP address, Cookie status, and the specific endpoint returning the error.
4. Increase Request Intervals
Short intervals between requests can cause bulk download tasks to generate a large number of requests in a short time. Use the following options to space them out:
yt-dlp \
--sleep-requests 2 \
--sleep-interval 5 \
--max-sleep-interval 15 \
--batch-file urls.txtThe --sleep-requests option sets the delay between requests made while extracting video information. The --sleep-interval and --max-sleep-interval options set the range for random delays before each download.
These options apply to different stages of the process. Using them together can help reduce request frequency over short periods.
5. Use Cookies for Login and Access Verification
A 429 error may sometimes occur alongside a verification requirement. According to yt-dlp's official guidance, if YouTube displays a CAPTCHA in your browser, complete the verification there first, then pass your browser Cookies to yt-dlp:
yt-dlp --cookies-from-browser chrome "VIDEO_URL"Keep in mind that Cookies allow yt-dlp to use your browser's login session or complete certain access checks, but they do not guarantee a fix for every 429 error.
Frequent automated requests using a personal account may also carry account and access restriction risks. Never share your Cookie files with others.
If your browser and yt-dlp use different network connections, you can use --source-address to bind connections to a specific local source IP address. This option is useful when your device has multiple available network interfaces and you need to keep the verification environment consistent.
6. Check Your IPv4 and IPv6 Connections
If you suspect a routing or connection issue, try forcing yt-dlp to use IPv4:
yt-dlp --force-ipv4 "VIDEO_URL"This option is intended for troubleshooting IPv6 routing or connectivity problems. IPv6 addresses should not automatically be considered high-risk. Most 429 errors are unrelated to the IP protocol version, so check the other possible causes first.
7. Check Subtitle and Other API Requests
If the logs show that the 429 error occurs during subtitle downloads, focus on the subtitle endpoint. Check the request frequency, subtitle language, and client status.
If only one subtitle language fails, try another available language to determine whether the issue is limited to a specific subtitle request.
If the restriction persists after these checks, consider switching to a different outgoing IP address.
Also note that errors such as 403, LOGIN_REQUIRED, or unavailable formats may involve PO Token or client configuration issues. These are separate from HTTP 429 and should be investigated independently.
How to Reduce yt-dlp 429 Errors with Proxy IPs
If a single outgoing IP address is repeatedly restricted or you need to run bulk download tasks over an extended period, a proxy can help distribute requests across different network exits.
1. Configure a Proxy from the Command Line
Use the --proxy option to connect through an HTTP or SOCKS5 proxy:
# SOCKS5 proxy
yt-dlp --proxy "socks5://username:password@proxy_host:port" "VIDEO_URL"
# HTTP proxy
yt-dlp --proxy "http://username:password@proxy_host:port" "VIDEO_URL"You can also combine a proxy with request interval options:
yt-dlp --proxy "socks5://username:password@proxy_host:port" \
--sleep-requests 2 \
--batch-file urls.txt2. Set a Default Proxy in the Configuration File
To avoid entering the proxy details every time, add them to your yt-dlp configuration file:
▸ Windows: %APPDATA%\yt-dlp\config or config.txt
▸ Linux / macOS: ~/.config/yt-dlp/config or config.txt
If you use a portable version, you can also place yt-dlp.conf in the same directory as the yt-dlp executable.
Add the following options to the configuration file:
--proxy "socks5://username:password@proxy_host:port"
--sleep-interval 3
--max-sleep-interval 103. Dynamic vs. Static Residential Proxies: Which Should You Choose?
Both proxy types provide residential IP addresses, but they serve different use cases:
Choose a rotation interval based on your task volume, request frequency, and provider settings. Frequent IP changes are not always better.
Dynamic residential proxies can distribute requests across separate video tasks. For downloads that require continuous connections, sticky sessions are a better option. They help prevent connection interruptions caused by changing IP addresses during a download.
Keep in mind that a static IP does not guarantee immunity from 429 errors, and rotating to a new dynamic IP does not guarantee that access will be restored.
4. Choosing a Proxy Provider
If you need to run yt-dlp bulk download tasks regularly, residential proxies may be worth considering.
IPDEEP offers dynamic residential proxies and static residential proxies, with support for HTTP, HTTPS, and SOCKS5 protocols. Choose the option that best fits your task volume, target locations, and session requirements.
Distributing requests across suitable IP addresses while maintaining reasonable request intervals can help reduce the load on a single network exit.
Frequently Asked Questions
Q1: How Long Does It Take to Recover from a yt-dlp 429 Error?
The duration of an HTTP 429 restriction depends on the target platform. It may be lifted automatically after some time. Repeated retries can potentially prolong the restriction.
Pause your requests, check your network connection and access status, then gradually resume your tasks.
Q2: What Is a Reliable Setup for Bulk Playlist Downloads?
Consider combining residential proxies, random delays, and retry settings. For example:
yt-dlp --proxy "socks5://your-proxy-endpoint" \
--sleep-requests 2 \
--sleep-interval 5 \
--max-sleep-interval 15 \
--batch-file urls.txtRequest intervals help control download frequency, while retry settings can handle occasional network interruptions. Used together, they can improve download stability and efficiency.





