### Checklist
- [x] I've read the [**NO AI / NO LLM POLICY**](https://github.co…m/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#no-ai--no-llm-policy) and understand I may be blocked from the repository if it is violated
- [x] I'm reporting that yt-dlp is broken on a **supported** site
- [x] I've verified that I have **updated yt-dlp to nightly or master** ([update instructions](https://github.com/yt-dlp/yt-dlp#update-channels))
- [x] I've checked that all provided URLs are playable in a browser with the same IP and same login details
- [x] I've checked that all URLs and arguments with special characters are [properly quoted or escaped](https://github.com/yt-dlp/yt-dlp/wiki/FAQ#video-url-contains-an-ampersand--and-im-getting-some-strange-output-1-2839-or-v-is-not-recognized-as-an-internal-or-external-command)
- [x] I've searched [known issues](https://github.com/yt-dlp/yt-dlp/issues/3766), [the FAQ](https://github.com/yt-dlp/yt-dlp/wiki/FAQ), and the [bugtracker](https://github.com/yt-dlp/yt-dlp/issues?q=is%3Aissue%20-label%3Aspam%20%20) for similar issues **including closed ones**. DO NOT post duplicates
- [x] I've read about [sharing account credentials](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#are-you-willing-to-share-account-details-if-needed) and I'm willing to share it if required
### Region
United States
### Provide a description that is worded well enough to be understood
The latest stable version (stable@2027.07.04) does this:
```
$ yt-dlp "https://www.youtube.com/watch?v=93jxWV0PXRQ"
[youtube] Extracting URL: https://www.youtube.com/watch?v=93jxWV0PXRQ
[youtube] 93jxWV0PXRQ: Downloading webpage
WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one
[youtube] 93jxWV0PXRQ: Downloading android vr player API JSON
[info] 93jxWV0PXRQ: Downloading 1 format(s): 400+251
ERROR: unable to download video data: HTTP Error 403: Forbidden
```
I'm in the US. The video is accessible through a non-logged-in browser.
### Provide verbose output that clearly demonstrates the problem
- [x] Run **your** yt-dlp command with **-vU** flag added (`yt-dlp -vU <your command line>`)
- [x] If using API, add `'verbose': True` to `YoutubeDL` params instead
- [x] Copy the WHOLE output (starting with `[debug] Command-line config`) and insert it below
### Complete Verbose Output
```shell
[debug] Command-line config: ['-vU', 'https://www.youtube.com/watch?v=93jxWV0PXRQ']
[debug] Encodings: locale utf-8, fs utf-8, pref utf-8, out utf-8 (No ANSI), error utf-8 (No ANSI), screen utf-8 (No ANSI)
[debug] yt-dlp version stable@2026.07.04 from yt-dlp/yt-dlp [997fa1408] (zip)
[debug] Python 3.11.2 (CPython x86_64 64bit) - Linux-6.1.0-40-amd64-x86_64-with-glibc2.36 (OpenSSL 3.0.17 1 Jul 2025, glibc 2.36)
[debug] exe versions: ffmpeg 5.1.8-0 (setts), ffprobe 5.1.8-0, rtmpdump 2.4
[debug] Optional libraries: Cryptodome-3.11.0, brotli-1.0.9, certifi-2022.12.07, mutagen-1.46.0, pyxattr-0.8.1, requests-2.28.2, sqlite3-3.40.1, urllib3-1.26.15 (unsupported), websockets-10.4 (unsupported), yt_dlp_ejs-0.8.0
[debug] JS runtimes: none
[debug] Proxy map: {}
[debug] Request Handlers: urllib
[debug] Plugin directories: none
[debug] Loaded 1744 extractors
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp/releases/latest
Latest version: stable@2026.07.04 from yt-dlp/yt-dlp
yt-dlp is up to date (stable@2026.07.04 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
[debug] [youtube] [jsc] JS Challenge Providers: bun (unavailable), deno (unavailable), node (unavailable), quickjs (unavailable)
[youtube] Extracting URL: https://www.youtube.com/watch?v=93jxWV0PXRQ
[youtube] 93jxWV0PXRQ: Downloading webpage
WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one
[debug] [youtube] Forcing "main" player JS variant for player c74cbcd6
original url = /s/player/c74cbcd6/player_es6.vflset/en_US/base.js
[youtube] 93jxWV0PXRQ: Downloading android vr player API JSON
[debug] Sort order given by extractor: quality, res, fps, hdr:12, source, vcodec, channels, acodec, lang, proto
[debug] Formats sorted by: hasvid, ie_pref, quality, res, fps, hdr:12(7), source, vcodec, channels, acodec, lang, proto, size, br, asr, vext, aext, hasaud, id
[debug] Default format spec: bestvideo*+bestaudio/best
[info] 93jxWV0PXRQ: Downloading 1 format(s): 400+251
[debug] Invoking http downloader on "https://rr3---sn-jpocxaa-a03z.googlevideo.com/videoplayback?expire=1787041421&ei=LcKDar-qH8qDkucPpez1uAo&ip=72.49.35.78&id=o-AG0Ne0dBRzfOvqM7yQsDc4yCfcwsyV1IqG8kYVIkFuvT&itag=400&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&met=1787019821%2C&mh=8t&mm=18%2C29&mn=sn-jpocxaa-a03z%2Csn-2o5ua5-5g&ms=aub%2Crdu&mv=m&mvi=3&pl=24&rms=aub%2Caub&initcwndbps=4458750&bui=AR3QkAkkXimDvWTwVGjceLoXNE34yUPqEOsA1mUfdIWGOHW5SXad5Sv2UzMd5__ejTGVOfVbtiRZYsCm&spc=KBGBcvhzP97MQKMJspFmMuXOGU-kyP__zrHdZCMirQ&vprv=1&svpuc=1&mime=video%2Fmp4&rqh=1&gir=yes&clen=172422605&dur=1271.269&lmt=1786984897540288&mt=1787018922&fvip=4&keepalive=yes&fexp=51565115%2C51946838&c=ANDROID_VR&txp=5309224&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&sig=AE0s2JYwRgIhAJ3id28yJKqp2SXdG0Jnqzl7tvjeoGbz587bXSfVgWqwAiEAi9yNbKjSz9aDyq-vnT7OmPFav4KgfhrZU85FrOLRU9M%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&lsig=APaTxxMwRAIgRyJfuCj0QAQ0GgwZ2LvitMdctqCD-9xQwhiau_mbvIkCIGIET2eosWF7p1Fbm5dy0DfIa_vSpTGA49n5seydbI89"
ERROR: unable to download video data: HTTP Error 403: Forbidden
Traceback (most recent call last):
File "/usr/local/src/yt-dlp/./yt-dlp/yt_dlp/networking/_urllib.py", line 419, in _send
res = opener.open(urllib_req, timeout=self._calculate_timeout(request))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/urllib/request.py", line 525, in open
response = meth(req, response)
^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/urllib/request.py", line 634, in http_response
response = self.parent.error(
^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/urllib/request.py", line 563, in error
return self._call_chain(*args)
^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/urllib/request.py", line 496, in _call_chain
result = func(*args)
^^^^^^^^^^^
File "/usr/lib/python3.11/urllib/request.py", line 643, in http_error_default
raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 403: Forbidden
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/local/src/yt-dlp/./yt-dlp/yt_dlp/YoutubeDL.py", line 3571, in process_info
partial_success, real_download = self.dl(fname, new_info)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/src/yt-dlp/./yt-dlp/yt_dlp/YoutubeDL.py", line 3324, in dl
return fd.download(name, new_info, subtitle)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/src/yt-dlp/./yt-dlp/yt_dlp/downloader/common.py", line 480, in download
ret = self.real_download(filename, info_dict)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/src/yt-dlp/./yt-dlp/yt_dlp/downloader/http.py", line 362, in real_download
establish_connection()
File "/usr/local/src/yt-dlp/./yt-dlp/yt_dlp/downloader/http.py", line 119, in establish_connection
ctx.data = self.ydl.urlopen(request)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/src/yt-dlp/./yt-dlp/yt_dlp/YoutubeDL.py", line 4305, in urlopen
return self._request_director.send(req)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/src/yt-dlp/./yt-dlp/yt_dlp/networking/common.py", line 117, in send
response = handler.send(request)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/src/yt-dlp/./yt-dlp/yt_dlp/networking/_helper.py", line 194, in wrapper
return func(self, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/src/yt-dlp/./yt-dlp/yt_dlp/networking/common.py", line 359, in send
return self._send(request)
^^^^^^^^^^^^^^^^^^^
File "/usr/local/src/yt-dlp/./yt-dlp/yt_dlp/networking/_urllib.py", line 424, in _send
raise HTTPError(UrllibResponseAdapter(e.fp), redirect_loop='redirect error' in str(e)) from e
yt_dlp.networking.exceptions.HTTPError: HTTP Error 403: Forbidden
```