{"id":5258,"date":"2026-02-20T07:17:00","date_gmt":"2026-02-19T22:17:00","guid":{"rendered":"https:\/\/matoken.org\/blog\/?p=5258"},"modified":"2026-02-20T07:17:01","modified_gmt":"2026-02-19T22:17:01","slug":"yt-dlp_subtitle_429error","status":"publish","type":"post","link":"https:\/\/matoken.org\/blog\/2026\/02\/20\/yt-dlp_subtitle_429error\/","title":{"rendered":"yt-dlp\u3067YouTube\u306e\u5b57\u5e55\u30d5\u30a1\u30a4\u30eb\u306e\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u306b\u5931\u6557(HTTP Error 429: Too Many Requests)"},"content":{"rendered":"<div id=\"preamble\">\n<div class=\"sectionbody\">\n<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"48\" height=\"48\" viewBox=\"0 0 12 12\"><path fill=\"currentColor\" d=\"M1 7h2V5h2V4H3V3h1V2H3V1H2v1H1v1h1v1H1v1h1v1H1Zm0 4h4v-1H2V8H1ZM0 6h1V5H0Zm6 6h1v-2h3v2h1V8h-1v1H7V8H6ZM4 7h1V6H4Zm3 1h1V7H7ZM5 6h1V5H5Zm3 1h1V6H8Zm1 1h1V7H9ZM5 3h1V2H5Zm4 2h1V2H7v1h2Zm0 0\"\/><\/svg><!-- https:\/\/icon-sets.iconify.design\/ dinkie-icons:translate-hira-latin --><\/p>\n<div class=\"paragraph\">\n<p>Tokyo Linux Users Group \u306eTechnical Meeting \u306e\u30d3\u30c7\u30aa\u304cYouTube \u306b\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3055\u308c\u3066\u3044\u308b\u3068\u5148\u65e5\u306e #kagolug \u3067\u6559\u3048\u3066\u3082\u3089\u3063\u305f\u306e\u3067\u89b3\u3066\u307f\u3088\u3046\u3068\u601d\u3044\u307e\u3057\u305f\uff0e<br \/>\n\u3067\u3082TLUG \u306f\u82f1\u8a9e\u3067\u3059\uff0e\u4ee5\u524d\u306fWisper.cpp \u3067\u6587\u5b57\u8d77\u3053\u3057 &amp; \u6a5f\u68b0\u7ffb\u8a33\u3067\u5b57\u5e55\u3092\u4f5c\u3063\u3066\u3044\u307e\u3057\u305f\u304c\u6700\u8fd1\u306eYouTube \u306e\u6587\u5b57\u8d77\u3053\u3057\u306f\u5927\u5206\u826f\u304f\u306a\u3063\u3066\u3044\u308b\u306e\u3067\u305d\u308c\u3092\u4f7f\u304a\u3046\u3068\u30ed\u30fc\u30ab\u30eb\u306b\u30d3\u30c7\u30aa\u3068\u5b57\u5e55\u3092dl \u3057\u3088\u3046\u3068\u3057\u305f\u3068\u3053\u308d\u5b57\u5e55\u306e\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u306b\u5931\u6557\u3057\u307e\u3057\u305f\uff0e<\/p>\n<\/div>\n<div class=\"ulist\">\n<ul>\n<li>\n<p><a href=\"https:\/\/www.tlug.jp\/\">Tokyo Linux Users Group<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.youtube.com\/@TokyoLinuxUsersGroup\" class=\"bare\">https:\/\/www.youtube.com\/@TokyoLinuxUsersGroup<\/a><\/p>\n<\/li>\n<\/ul>\n<\/div>\n<p><!--more--><\/p>\n<div class=\"paragraph\">\n<p>\u9069\u5f53\u306a\u89e3\u50cf\u5ea6\u306e\u30d3\u30c7\u30aa\u3068\u30aa\u30fc\u30c7\u30a3\u30aa\uff0c\u305d\u308c\u3068\u82f1\u8a9e\u306e\u6587\u5b57\u8d77\u3053\u3057\u5b57\u5e55\u3068\uff0c\u305d\u308c\u3092\u65e5\u672c\u8a9e\u306b\u7ffb\u8a33\u3057\u305f\u3082\u306e\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3088\u3046\u3068\u3057\u307e\u3057\u305f\uff0e<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre>$ yt-dlp -f 244+251 yYgF87nqyKI --write-auto-subs --sub-langs ja,en_orig\n[youtube] Extracting URL: yYgF87nqyKI\n[youtube] yYgF87nqyKI: Downloading webpage\n[youtube] yYgF87nqyKI: Downloading android vr player API JSON\n[youtube] yYgF87nqyKI: Downloading web safari player API JSON\n[youtube] yYgF87nqyKI: Downloading player 4c5cf06a-tv\n[youtube] [jsc:deno] Solving JS challenges using deno\n[youtube] yYgF87nqyKI: Downloading m3u8 information\n[info] yYgF87nqyKI: Downloading subtitles: ja\n[info] yYgF87nqyKI: Downloading 1 format(s): 244+251\n[info] Writing video subtitles to: CDImage - Cam [yYgF87nqyKI].ja.vtt\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see  https:\/\/github.com\/yt-dlp\/yt-dlp#impersonation  for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'ja': HTTP Error 429: Too Many Requests<\/pre>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p><em>*Too Many Requests*<\/em> \u3068\u304b\u8a00\u308f\u308c\u3066\u3057\u307e\u3044\u307e\u3057\u305f\uff0e\u4eca\u65e5\u521d\u3081\u3066\u5b9f\u884c\u3057\u305f\u306e\u306b\u306a\u3093\u3067?<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p><code>--verbose<\/code> \u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u4ed8\u3051\u3066\u307f\u307e\u3057\u305f\u304c\u3088\u304f\u308f\u304b\u308a\u307e\u305b\u3093<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre>[info] Writing video subtitles to: CDImage - Cam [yYgF87nqyKI].ja.vtt\n[debug] Invoking http downloader on \"https:\/\/www.youtube.com\/api\/timedtext?v=yYgF87nqyKI&amp;ei=M4WXaZnECfax2roP_YqAqAc&amp;caps=asr&amp;opi=112496729&amp;xoaf=5&amp;xowf=1&amp;xospf=1&amp;hl=en&amp;ip=0.0.0.0&amp;ipbits=0&amp;expire=1771562915&amp;sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&amp;signature=1B0AC6AA8FB20AFE9B45B2F66DBB1000F04DE626.909918AF43ACD2AFD3E0C2C61E53A3C72E49AB6C&amp;key=yt8&amp;kind=asr&amp;lang=en&amp;fmt=vtt&amp;tlang=ja\"\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see  https:\/\/github.com\/yt-dlp\/yt-dlp#impersonation  for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'ja': HTTP Error 429: Too Many Requests\nTraceback (most recent call last):\n  File \"\/home\/matoken\/bin\/yt-dlp\/yt_dlp\/YoutubeDL.py\", line 4449, in _write_subtitles\n    self.dl(sub_filename, sub_copy, subtitle=True)\n    ~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"\/home\/matoken\/bin\/yt-dlp\/yt_dlp\/YoutubeDL.py\", line 3285, in dl\n    return fd.download(name, new_info, subtitle)\n           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"\/home\/matoken\/bin\/yt-dlp\/yt_dlp\/downloader\/common.py\", line 480, in download\n    ret = self.real_download(filename, info_dict)\n  File \"\/home\/matoken\/bin\/yt-dlp\/yt_dlp\/downloader\/http.py\", line 362, in real_download\n    establish_connection()\n    ~~~~~~~~~~~~~~~~~~~~^^\n  File \"\/home\/matoken\/bin\/yt-dlp\/yt_dlp\/downloader\/http.py\", line 119, in establish_connection\n    ctx.data = self.ydl.urlopen(request)\n               ~~~~~~~~~~~~~~~~^^^^^^^^^\n  File \"\/home\/matoken\/bin\/yt-dlp\/yt_dlp\/YoutubeDL.py\", line 4260, in urlopen\n    return self._request_director.send(req)\n           ~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^\n  File \"\/home\/matoken\/bin\/yt-dlp\/yt_dlp\/networking\/common.py\", line 117, in send\n    response = handler.send(request)\n  File \"\/home\/matoken\/bin\/yt-dlp\/yt_dlp\/networking\/_helper.py\", line 194, in wrapper\n    return func(self, *args, **kwargs)\n  File \"\/home\/matoken\/bin\/yt-dlp\/yt_dlp\/networking\/common.py\", line 359, in send\n    return self._send(request)\n           ~~~~~~~~~~^^^^^^^^^\n  File \"\/home\/matoken\/bin\/yt-dlp\/yt_dlp\/networking\/_requests.py\", line 361, in _send\n    raise HTTPError(res, redirect_loop=max_redirects_exceeded)\nyt_dlp.networking.exceptions.HTTPError: HTTP Error 429: Too Many Requests\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n  File \"\/home\/matoken\/bin\/yt-dlp\/yt_dlp\/YoutubeDL.py\", line 1698, in wrapper\n    return func(self, *args, **kwargs)\n  File \"\/home\/matoken\/bin\/yt-dlp\/yt_dlp\/YoutubeDL.py\", line 1854, in __extract_info\n    return self.process_ie_result(ie_result, download, extra_info)\n           ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"\/home\/matoken\/bin\/yt-dlp\/yt_dlp\/YoutubeDL.py\", line 1913, in process_ie_result\n    ie_result = self.process_video_result(ie_result, download=download)\n  File \"\/home\/matoken\/bin\/yt-dlp\/yt_dlp\/YoutubeDL.py\", line 3096, in process_video_result\n    self.process_info(new_info)\n    ~~~~~~~~~~~~~~~~~^^^^^^^^^^\n  File \"\/home\/matoken\/bin\/yt-dlp\/yt_dlp\/YoutubeDL.py\", line 189, in wrapper\n    return func(self, *args, **kwargs)\n  File \"\/home\/matoken\/bin\/yt-dlp\/yt_dlp\/YoutubeDL.py\", line 3353, in process_info\n    sub_files = self._write_subtitles(info_dict, temp_filename)\n  File \"\/home\/matoken\/bin\/yt-dlp\/yt_dlp\/YoutubeDL.py\", line 4457, in _write_subtitles\n    raise DownloadError(msg)\nyt_dlp.utils.DownloadError: Unable to download video subtitles for 'ja': HTTP Error 429: Too Many Requests<\/pre>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p>ISSUES \u3092\u63a2\u3059\u3068\u65e2\u77e5\u306e\u554f\u984c\u306e\u3088\u3046\u3067\u30ef\u30fc\u30af\u30a2\u30e9\u30a6\u30f3\u30c9\u304c\u3042\u308a\u307e\u3057\u305f\uff0e<\/p>\n<\/div>\n<div class=\"quoteblock\">\n<blockquote>\n<div class=\"quoteblock\">\n<blockquote>\n<div class=\"paragraph\">\n<p>[FreeTubeApp\/FreeTube#7484](<a href=\"https:\/\/github.com\/FreeTubeApp\/FreeTube\/pull\/7484\" class=\"bare\">https:\/\/github.com\/FreeTubeApp\/FreeTube\/pull\/7484<\/a>)<\/p>\n<\/div>\n<\/blockquote>\n<\/div>\n<div class=\"paragraph\">\n<p>FreeTube is adding a PO token to their subtitles requests. But FreeTube doesn&#8217;t use auto-translated subs AFAICT.<br \/>\n<mark>#<\/mark> Manual subtitles and original language automatic captions are not affected by this HTTP Error 429 issue.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Only subtitles\/captions that have been automatically translated into another language are affected. So you may be able to get the subs you want without a problem if you are precise with your <code>--sub-langs<\/code> and <code>--write-subs<\/code> vs <code>--write-auto-subs<\/code> arguments.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>But if you <em>want<\/em> translated auto subs,<br \/>\n<mark>#<\/mark> there are 2 known ways of avoiding this HTTP Error 429:<\/p>\n<\/div>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>Pass fresh cookies to yt-dlp from a browser session where you&#8217;ve very recently loaded auto-translated subs<\/p>\n<\/li>\n<li>\n<p>Wait ~60 seconds after extraction and before downloading the auto subs, e.g. <code>--sleep-subtitles 60<\/code><\/p>\n<\/li>\n<\/ul>\n<\/div>\n<div class=\"paragraph\">\n<p>(Either of these 2 methods will work individually, you do not need to combine them)<\/p>\n<\/div>\n<\/blockquote>\n<div class=\"attribution\">\n&#8212; <a href=\"https:\/\/github.com\/yt-dlp\/yt-dlp\/issues\/13831#issuecomment-3712613129\">[YouTube] Unable to download video subtitles: HTTP Error 429: Too Many Requests \u00b7 Issue #13831 \u00b7 yt-dlp\/yt-dlp<\/a>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p>\u3068\u3044\u3046\u3053\u3068\u3067\u3068\u308a\u3042\u3048\u305a <code>--sleep-subtitles 60<\/code> \u3092\u4ed8\u3051\u3066\u5b9f\u884c\u3059\u308b\u3053\u3068\u3067\u5b57\u5e55\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u6642\u306bsleep \u3057\u3066\u6012\u3089\u308c\u305a\u306b\u5b57\u5e55\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3057\u305f\uff0e<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre>$ yt-dlp -f 244+251 yYgF87nqyKI --write-auto-subs --sub-langs ja,en_orig --sleep-subtitles 60<\/pre>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p>\u305d\u3057\u3066mpv \u7b49\u3067\u3053\u3093\u306a\u611f\u3058\u3067\u5b57\u5e55\u30922\u3064\u8868\u793a\u3057\u306a\u304c\u3089\u8996\u8074\u53ef\u80fd\u306b :)<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre>$ mpv --sub-files='CDImage - Cam [yYgF87nqyKI].en.vtt:CDImage - Cam [yYgF87nqyKI].ja.vtt' --secondary-sid=2 'CDImage - Cam [yYgF87nqyKI].webm'<\/pre>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p><span class=\"image\"><img decoding=\"async\" src=\"https:\/\/matoken.org\/blog\/wp-content\/uploads\/2026\/02\/mpv-2subs.webp\" alt=\"mpv 2subs\"><\/span><\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"title\">\u74b0\u5883<\/div>\n<div class=\"content\">\n<pre>$ yt-dlp --version\n2026.02.04\n$ deno --version\ndeno 2.6.8 (stable, release, x86_64-unknown-linux-gnu)\nv8 14.5.201.2-rusty\ntypescript 5.9.2\n$ lsb_release -dr\nDescription:    Debian GNU\/Linux forky\/sid\nRelease:        n\/a\n$ arch\nx86_64<\/pre>\n<\/div>\n<\/div>\n<div class=\"ulist\">\n<div class=\"title\">toot<\/div>\n<ul>\n<li>\n<p><a href=\"https:\/\/inari.opencocon.org\/@matoken\/116093859772053347\">matoken :fox:: &#8220;#tlug \u306e\u30d3\u30c7\u30aa\u304cYouTube \u306b\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3055\u308c\u3066\u3044\u2026&#8221; &#8211; \u3044\u306a\u3053\u3093<\/a><\/p>\n<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Tokyo Linux Users Group \u306eTechnical Meeting \u306e\u30d3\u30c7\u30aa\u304cYouTube \u306b\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3055\u308c\u3066\u3044\u308b\u3068\u5148\u65e5\u306e #kagolug \u3067\u6559\u3048\u3066\u3082\u3089\u3063\u305f\u306e\u3067\u89b3\u3066\u307f\u3088\u3046\u3068\u601d\u3044\u307e\u3057\u305f\uff0e \u3067\u3082TLU [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"webmentions_disabled_pings":false,"webmentions_disabled":false,"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":4,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"federated","footnotes":""},"categories":[7,6,199],"tags":[762,529,704],"class_list":["post-5258","post","type-post","status-publish","format-standard","hentry","category-debian-linux","category-linux","category-sid","tag-mpv","tag-subtitle","tag-yt-dlp"],"_links":{"self":[{"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/posts\/5258","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/comments?post=5258"}],"version-history":[{"count":3,"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/posts\/5258\/revisions"}],"predecessor-version":[{"id":5261,"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/posts\/5258\/revisions\/5261"}],"wp:attachment":[{"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/media?parent=5258"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/categories?post=5258"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/tags?post=5258"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}