Skip to content

[YouTube] Unable to download video subtitles: HTTP Error 429: Too Many Requests #13831

@DanMixerBR

Description

@DanMixerBR

EDIT BY MAINTAINER: see #13831 (comment) for solutions

Checklist

  • I'm reporting that yt-dlp is broken on a supported site
  • I've verified that I have updated yt-dlp to nightly or master (update instructions)
  • I've checked that all provided URLs are playable in a browser with the same IP and same login details
  • I've checked that all URLs and arguments with special characters are properly quoted or escaped
  • I've searched known issues, the FAQ, and the bugtracker for similar issues including closed ones. DO NOT post duplicates
  • I've read about sharing account credentials and I'm willing to share it if required

Region

Brazil

Provide a description that is worded well enough to be understood

Hello everyone! When I try to download a video with subtitles in "pt-en-US," yt-dlp displays the following error:
"Unable to download video subtitles for 'pt-en-US': HTTP Error 429: Too Many Requests."

This issue occurs occasionally, as if the program is unstable. Interestingly, the error is resolved when I remove the --write-auto-subs --sub-langs "pt-en.*,en-en.*" commands.

Does anyone know how to resolve or work around this issue without having to remove these commands?

Provide verbose output that clearly demonstrates the problem

  • Run your yt-dlp command with -vU flag added (yt-dlp -vU <your command line>)
  • If using API, add 'verbose': True to YoutubeDL params instead
  • Copy the WHOLE output (starting with [debug] Command-line config) and insert it below

Complete Verbose Output

C:\Users\danilo.serafim\Desktop\YT.Video.Downloader>bin\yt-dlp https://www.youtube.com/watch?v=dSDpoobO6yM -f "bv[height<=1080][ext=mp4]+ba[ext=m4a]" -S vcodec:h264 --embed-thumbnail --write-auto-subs --sub-langs "pt-en.*,en-en.*" --convert-subs "srt" -o "videos/%(title)s.%(ext)s" -o "subtitle:videos/subtitles/%(title)s.%(ext)s" -vU
[debug] Command-line config: ['https://www.youtube.com/watch?v=dSDpoobO6yM', '-f', 'bv[height<=1080][ext=mp4]+ba[ext=m4a]', '-S', 'vcodec:h264', '--embed-thumbnail', '--write-auto-subs', '--sub-langs', 'pt-en.*,en-en.*', '--convert-subs', 'srt', '-o', 'videos/%(title)s.%(ext)s', '-o', 'subtitle:videos/subtitles/%(title)s.%(ext)s', '-vU']
[debug] Encodings: locale cp1252, fs utf-8, pref cp1252, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version stable@2025.07.21 from yt-dlp/yt-dlp [9951fdd0d] (win_exe)
[debug] Python 3.10.11 (CPython AMD64 64bit) - Windows-10-10.0.19045-SP0 (OpenSSL 1.1.1t  7 Feb 2023)
[debug] exe versions: ffmpeg 2025-07-21-git-8cdb47e47a-essentials_build-www.gyan.dev (setts), ffprobe 2025-07-21-git-8cdb47e47a-essentials_build-www.gyan.dev
[debug] Optional libraries: Cryptodome-3.23.0, brotli-1.1.0, certifi-2025.07.14, curl_cffi-0.10.0, mutagen-1.47.0, requests-2.32.4, sqlite3-3.40.1, urllib3-2.5.0, websockets-15.0.1
[debug] Proxy map: {}
[debug] Request Handlers: urllib, requests, websockets, curl_cffi
[debug] Plugin directories: none
[debug] Loaded 1857 extractors
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp/releases/latest
Latest version: stable@2025.07.21 from yt-dlp/yt-dlp
yt-dlp is up to date (stable@2025.07.21 from yt-dlp/yt-dlp)
[debug] [youtube] [pot] PO Token Providers: none
[debug] [youtube] [pot] PO Token Cache Providers: memory
[debug] [youtube] [pot] PO Token Cache Spec Providers: webpo
[youtube] Extracting URL: https://www.youtube.com/watch?v=dSDpoobO6yM
[youtube] dSDpoobO6yM: Downloading webpage
[youtube] dSDpoobO6yM: Downloading tv client config
[debug] Loading youtube-sts.a1f2424c-main from cache
[youtube] dSDpoobO6yM: Downloading tv player API JSON
[youtube] dSDpoobO6yM: Downloading ios player API JSON
[debug] Loading youtube-nsig.a1f2424c-main from cache
[debug] [youtube] Decrypted nsig ysjkLjwJPDPCsjM7 => HhHXP2jEfp0Nfw
[debug] [youtube] Decrypted nsig ojRD8T1XPHXX5V9v => 6PTEhRa0E_y6eA
[debug] [youtube] dSDpoobO6yM: ios client https formats require a GVS PO Token which was not provided. They will be skipped as they may yield HTTP Error 403. You can manually pass a GVS PO Token for this client with --extractor-args "youtube:po_token=ios.gvs+XXX". For more information, refer to  https://github.com/yt-dlp/yt-dlp/wiki/PO-Token-Guide . To enable these broken formats anyway, pass --extractor-args "youtube:formats=missing_pot"
[youtube] dSDpoobO6yM: Downloading m3u8 information
[info] dSDpoobO6yM: Downloading subtitles: pt-en-US, en-en-US
[debug] Sort order given by user: vcodec:h264
[debug] Sort order given by extractor: quality, res, fps, hdr:12, source, vcodec, channels, acodec, lang, proto
[debug] Formats sorted by: hasvid, ie_pref, vcodec:h264(7), quality, res, fps, hdr:12(7), source, channels, acodec, lang, proto, size, br, asr, vext, aext, hasaud, id
[info] dSDpoobO6yM: Downloading 1 format(s): 137+140
[info] Writing video subtitles to: videos\Five Nights at Freddy's 2 | Official Trailer.pt-en-US.vtt
[debug] Invoking http downloader on "https://www.youtube.com/api/timedtext?v=dSDpoobO6yM&ei=lHqCaKrcLKfCobIPwcfvsAE&caps=asr&opi=112496729&xoaf=5&xospf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1753406724&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=216B0D3A71E5D10121EC6578F8C859341A5DB806.BE0BE8BA702283532EEAD7881FDC2957DA51D96E&key=yt8&lang=en-US&tlang=pt-en-US&fmt=vtt"
ERROR: Unable to download video subtitles for 'pt-en-US': HTTP Error 429: Too Many Requests
Traceback (most recent call last):
  File "yt_dlp\YoutubeDL.py", line 4425, in _write_subtitles
  File "yt_dlp\YoutubeDL.py", line 3250, in dl
  File "yt_dlp\downloader\common.py", line 468, in download
  File "yt_dlp\downloader\http.py", line 371, in real_download
  File "yt_dlp\downloader\http.py", line 122, in establish_connection
  File "yt_dlp\YoutubeDL.py", line 4236, in urlopen
  File "yt_dlp\networking\common.py", line 117, in send
  File "yt_dlp\networking\_curlcffi.py", line 194, in send
  File "yt_dlp\networking\_helper.py", line 194, in wrapper
  File "yt_dlp\networking\common.py", line 359, in send
  File "yt_dlp\networking\_curlcffi.py", line 290, in _send
yt_dlp.networking.exceptions.HTTPError: HTTP Error 429: Too Many Requests

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "yt_dlp\YoutubeDL.py", line 1664, in wrapper
  File "yt_dlp\YoutubeDL.py", line 1820, in __extract_info
  File "yt_dlp\YoutubeDL.py", line 1879, in process_ie_result
  File "yt_dlp\YoutubeDL.py", line 3061, in process_video_result
  File "yt_dlp\YoutubeDL.py", line 185, in wrapper
  File "yt_dlp\YoutubeDL.py", line 3318, in process_info
  File "yt_dlp\YoutubeDL.py", line 4433, in _write_subtitles
yt_dlp.utils.DownloadError: Unable to download video subtitles for 'pt-en-US': HTTP Error 429: Too Many Requests

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions