It’s my first time working on a vrc world project with my friend, we are trying to implement a vizvid video player in the world but for some reason the video player can’t play youtube links at 1080p resolution, for any video link I put in that is. I’m wondering how do people solve this or if there’s anything I’ve missed in the process.
world link here too
Usually world creators just add one of the common pre-made video player prefabs made by other creators, and for first time video watching you might need to enable untrusted urls.
I have also seen this issue for several weeks in VRChat, but I have been a bit busy to deal with the troubleshooting myself. Thanks for the heads-up, OP.
If you’re seeing 360p muxes from YouTube, it usually means yt-dlp’s web or web_safari extractor is broken and it’s falling back to android_vr. Unlike the upstream yt-dlp executable, VRChat’s yt-dlp defaults to webor web_safari instead of android_vr because video players in VRChat can only play premuxed formats (only available in web,web_safari with 1080p and android_vr with 360p without PO tokens).
If you’re on Windows, open up a Terminal window, cd %LocalAppdata%Low\VRChat\VRChat\Tools and share the output of .\yt-dlp.exe --version please. Example output:
PS C:\Users\linda.LINDALAP\AppData\LocalLow\VRChat\VRChat\Tools> .\yt-dlp.exe --version
2026.03.03
There’s no way to get verbose logs (-v, --verbose) out of VRChat’s yt-dlp executable, so the best you can do is then share a YouTube URL where you’re experiencing the issue.
The relevant video playback lines from the full output logs may also be helpful.
If you feel adventurous and experimental yourself. You’ll need a JS runtime (Deno) installed first for web,web_safari formats. Caution, this downloads an executable with winget and installs it. Please don’t follow me or do this unless you know what you’re doing!
PS C:\Users\linda.LINDALAP\AppData\Local\Temp\yt-dlp_upstream_2026.03.03> winget install DenoLand.Deno
Found Deno [DenoLand.Deno] Version 2.7.13
This application is licensed to you by its owner.
Microsoft is not responsible for, nor does it grant any licenses to, third-party packages.
Downloading https://github.com/denoland/deno/releases/download/v2.7.13/deno-x86_64-pc-windows-msvc.zip
██████████████████████████████ 46.8 MB / 46.8 MB
Successfully verified installer hash
Extracting archive...
Successfully extracted archive
Starting package install...
Command line alias added: "deno"
Successfully installed
Then you can try .\yt-dlp.exe --extractor-args="youtube:player_client=web" -F https://www.youtube.com/watch?v=kEAC8eeQWcg with an upstream yt-dlp release to see which web formats are available with a version matching VRChat’s version (in this scenario, an upstream yt-dlp 2026.03.03 release). Here I’ve tried both web and web_safari:
PS C:\Users\linda.LINDALAP\AppData\Local\Temp\yt-dlp_upstream_2026.03.03> .\yt-dlp.exe --extractor-args "youtube:player_client=web" -F https://www.youtube.com/watch?v=kEAC8eeQWcg
[youtube] Extracting URL: https://www.youtube.com/watch?v=kEAC8eeQWcg
[youtube] kEAC8eeQWcg: Downloading webpage
[youtube] kEAC8eeQWcg: Downloading web player API JSON
ERROR: [youtube] kEAC8eeQWcg: The page needs to be reloaded.. The page needs to be reloaded.
PS C:\Users\linda.LINDALAP\AppData\Local\Temp\yt-dlp_upstream_2026.03.03> .\yt-dlp.exe --extractor-args "youtube:player_client=web_safari" -F https://www.youtube.com/watch?v=kEAC8eeQWcg
[youtube] Extracting URL: https://www.youtube.com/watch?v=kEAC8eeQWcg
[youtube] kEAC8eeQWcg: Downloading webpage
[youtube] kEAC8eeQWcg: Downloading web safari player API JSON
ERROR: [youtube] kEAC8eeQWcg: The page needs to be reloaded.. The page needs to be reloaded.
To be sure, let’s add the player_js_version=20514@9f4cc5e4extractor arg used in 2026.03.03.
PS C:\Users\linda.LINDALAP\AppData\Local\Temp\yt-dlp_upstream_2026.03.03> .\yt-dlp.exe --extractor-args "youtube:player_client=web_safari;player_js_version=20514@9f4cc5e4" -F https://www.youtube.com/watch?v=kEAC8eeQWcg
[youtube] Extracting URL: https://www.youtube.com/watch?v=kEAC8eeQWcg
[youtube] kEAC8eeQWcg: Downloading webpage
[youtube] kEAC8eeQWcg: Downloading web safari player API JSON
ERROR: [youtube] kEAC8eeQWcg: The page needs to be reloaded.. The page needs to be reloaded.
As one can see from the above, web and web_safari extractors are broken in 2026.03.03 and returning The page needs to be reloaded.. The page needs to be reloaded. errors. android_vr works, but only for 360p (-f 18):
PS C:\Users\linda.LINDALAP\AppData\Local\Temp\yt-dlp_upstream_2026.03.03> .\yt-dlp.exe --extractor-args "youtube:player_client=android_vr" -F https://www.youtube.com/watch?v=kEAC8eeQWcg
[youtube] Extracting URL: https://www.youtube.com/watch?v=kEAC8eeQWcg
[youtube] kEAC8eeQWcg: Downloading webpage
[youtube] kEAC8eeQWcg: Downloading android vr player API JSON
[info] Available formats for kEAC8eeQWcg:
ID EXT RESOLUTION FPS CH │ FILESIZE TBR PROTO │ VCODEC VBR ACODEC ABR ASR MORE INFO
───────────────────────────────────────────────────────────────────────────────────────────────────────────────────
sb3 mhtml 48x27 2 │ mhtml │ images storyboard
sb2 mhtml 80x45 1 │ mhtml │ images storyboard
sb1 mhtml 160x90 1 │ mhtml │ images storyboard
sb0 mhtml 320x180 1 │ mhtml │ images storyboard
139 m4a audio only 2 │ 358.80KiB 49k https │ audio only mp4a.40.5 49k 22k [en] low, m4a_dash
140 m4a audio only 2 │ 949.19KiB 130k https │ audio only mp4a.40.2 130k 44k [en] medium, m4a_dash
251 webm audio only 2 │ 887.45KiB 121k https │ audio only opus 121k 48k [en] medium, webm_dash
160 mp4 256x144 30 │ 635.61KiB 87k https │ avc1.4d400c 87k video only 144p, mp4_dash
134 mp4 640x360 30 │ 2.72MiB 381k https │ avc1.4d401e 381k video only 360p, mp4_dash
18 mp4 640x360 30 2 │ ≈ 3.64MiB 510k https │ avc1.42001E mp4a.40.2 44k [en] 360p
298 mp4 1280x720 60 │ 15.30MiB 2142k https │ avc1.640020 2142k video only 720p60, mp4_dash
299 mp4 1920x1080 60 │ 28.24MiB 3952k https │ avc1.64002a 3952k video only 1080p60, mp4_dash
The 720p (-f 298) and 1080p (-f 299) formats are not playable in VRChat, because they are video only DASH streams and merging different video/audio formats is not supported; only premuxed formats with both video & audio in one format are playable, and here the -f 18 (360p) is the only premuxed format with both video and audio for VRChat.
I am aware that the web extractor hack (forcing downgrading player_js_version=20514@9f4cc5e4 for web) in yt-dlp 2026.03.03 is fragile. See my feature request to VRChat from March 13, 2026 to update to a newer version: Update to yt-dlp 2026.03.13 / yt-dlp-ejs 0.7.0 to improve YouTube playback compatibility | Voters | VRChat.
Testing the same on yt-dlp nightly 2026.04.10.235301, which uses a newer yt-dlp-ejs and (I’m assuming) doesn’t use a player_js_version hack:
PS C:\Users\linda.LINDALAP\AppData\Local\Temp\yt-dlp-nightly-2026.04.10.235301> .\yt-dlp.exe --extractor-args "youtube:player_client=web" -F https://www.youtube.com/watch?v=kEAC8eeQWcg
[youtube] Extracting URL: https://www.youtube.com/watch?v=kEAC8eeQWcg
[youtube] kEAC8eeQWcg: Downloading webpage
[youtube] kEAC8eeQWcg: Downloading web client config
[youtube] kEAC8eeQWcg: Downloading web player API JSON
[youtube] kEAC8eeQWcg: Downloading player 8456c9de-main
[youtube] [jsc:deno] Solving JS challenges using deno
[info] Available formats for kEAC8eeQWcg:
ID EXT RESOLUTION FPS CH │ FILESIZE TBR PROTO │ VCODEC ACODEC ASR MORE INFO
────────────────────────────────────────────────────────────────────────────────────────
sb3 mhtml 48x27 2 │ mhtml │ images storyboard
sb2 mhtml 80x45 1 │ mhtml │ images storyboard
sb1 mhtml 160x90 1 │ mhtml │ images storyboard
sb0 mhtml 320x180 1 │ mhtml │ images storyboard
18 mp4 640x360 30 2 │ ≈3.64MiB 510k https │ avc1.42001E mp4a.40.2 44k 360p
Hmm, only a 360p format from web. How about web_safari?
PS C:\Users\linda.LINDALAP\AppData\Local\Temp\yt-dlp-nightly-2026.04.10.235301> .\yt-dlp.exe --extractor-args "youtube:player_client=web_safari" -F https://www.youtube.com/watch?v=kEAC8eeQWcg
[youtube] Extracting URL: https://www.youtube.com/watch?v=kEAC8eeQWcg
[youtube] kEAC8eeQWcg: Downloading webpage
[youtube] kEAC8eeQWcg: Downloading player 8456c9de-main
[youtube] [jsc:deno] Solving JS challenges using deno
[youtube] kEAC8eeQWcg: Downloading m3u8 information
[info] Available formats for kEAC8eeQWcg:
ID EXT RESOLUTION FPS CH │ FILESIZE TBR PROTO │ VCODEC ACODEC ASR MORE INFO
──────────────────────────────────────────────────────────────────────────────────────────
sb3 mhtml 48x27 2 │ mhtml │ images storyboard
sb2 mhtml 80x45 1 │ mhtml │ images storyboard
sb1 mhtml 160x90 1 │ mhtml │ images storyboard
sb0 mhtml 320x180 1 │ mhtml │ images storyboard
91 mp4 256x144 30 │ ~ 1.21MiB 170k m3u8 │ avc1.4D400C mp4a.40.5
93 mp4 640x360 30 │ ~ 4.98MiB 696k m3u8 │ avc1.4D401E mp4a.40.2
18 mp4 640x360 30 2 │ ≈ 3.64MiB 510k https │ avc1.42001E mp4a.40.2 44k 360p
300 mp4 1280x720 60 │ ~25.50MiB 3566k m3u8 │ avc1.640020 mp4a.40.2
301 mp4 1920x1080 60 │ ~39.47MiB 5518k m3u8 │ avc1.64002A mp4a.40.2
As far as I remember, those 1080p M3U8 formats (-f 301) should be playable in VRChat, but I am not 100% certain.
Feel free to submit a bug report on Canny explaining web,web_safari playback is broken and not returning any formats (no 1080p), or upvote the above feature request to restore 1080p video playback. I may do that later…
Upstream yt-dlp 2026.03.17 works for extracting web_safari formats, please submit a bug report to VRChat Canny to update yt-dlp in VRChat…
PS C:\Users\linda.LINDALAP\AppData\Local\Temp\yt-dlp_upstream_2026.03.17> .\yt-dlp.exe --version
2026.03.17
PS C:\Users\linda.LINDALAP\AppData\Local\Temp\yt-dlp_upstream_2026.03.17> .\yt-dlp.exe --extractor-args "youtube:player_client=web_safari" -F https://www.youtube.com/watch?v=kEAC8eeQWcg
[youtube] Extracting URL: https://www.youtube.com/watch?v=kEAC8eeQWcg
[youtube] kEAC8eeQWcg: Downloading webpage
[youtube] kEAC8eeQWcg: Downloading player 8456c9de-main
[youtube] [jsc:deno] Solving JS challenges using deno
[youtube] kEAC8eeQWcg: Downloading m3u8 information
[info] Available formats for kEAC8eeQWcg:
ID EXT RESOLUTION FPS CH │ FILESIZE TBR PROTO │ VCODEC ACODEC ASR MORE INFO
──────────────────────────────────────────────────────────────────────────────────────────
sb3 mhtml 48x27 2 │ mhtml │ images storyboard
sb2 mhtml 80x45 1 │ mhtml │ images storyboard
sb1 mhtml 160x90 1 │ mhtml │ images storyboard
sb0 mhtml 320x180 1 │ mhtml │ images storyboard
91 mp4 256x144 30 │ ~ 1.21MiB 170k m3u8 │ avc1.4D400C mp4a.40.5
93 mp4 640x360 30 │ ~ 4.98MiB 696k m3u8 │ avc1.4D401E mp4a.40.2
18 mp4 640x360 30 2 │ ≈ 3.64MiB 510k https │ avc1.42001E mp4a.40.2 44k 360p
300 mp4 1280x720 60 │ ~25.50MiB 3566k m3u8 │ avc1.640020 mp4a.40.2
301 mp4 1920x1080 60 │ ~39.47MiB 5518k m3u8 │ avc1.64002A mp4a.40.2
Not 100% certain on M3U8 playback in VRChat again, but it should work IIRC.