AVPro Player , Vizvid plays low resolution yt videos

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…