yt-dlp: [ie/youtube] `android_vr` extracted media formats may be unplayable in VRChat only - YouTube extractor args are forced to `web` due to a legacy VRChat bug report?
WubTheCaptain
Issue: YouTube media format extraction fails in VRChat whenever yt-dlp's YouTube
web
player client is broken, even in scenarios when it would've been plausible to extract and play media formats with yt-dlp's default player client list - including android_vr
player client outside of the VRChat app when using the same upstream yt-dlp version.This has also led to several users promoting less safe third-party yt-dlp.exe replacements on ask.vrchat.com and on social media, where these unsafe versions may be able to play YouTube videos in VRChat with its default
android_vr
client when VRChat's downstream yt-dlp cannot.Steps to reproduce:
- Obtain / downgrade to VRChat's yt-dlp 2026.02.04 and replace yt-dlp.exe with it in %UserProfile%\AppData\LocalLow\VRChat\VRChat\Tools. Mark the executable as read-only to prevent VRChat client from upgrading it, or invent a time machine to travel back in time to 2026-03-12 when VRChat had this yt-dlp version live where no update was available.
- Run .\yt-dlp.exe --versionin the VRChat tools directory. Make sure it's2026.02.04.
- Visit a world such as Coze Isle by Shinyflvres and attempt to play a non-age restricted YouTube video (https://www.youtube.com/watch?v=kEAC8eeQWcg) - notice this fails with both AVPro and Unity Video in the world due to missing media formats (a webclient).
- Run .\yt-dlp.exe --version(VRChat). Make sure it's2026.02.04again.
- Try .\yt-dlp.exe -F https://www.youtube.com/watch?v=kEAC8eeQWcg. This should succeed to extractandroid_vrformats, while giving errors on sig solving fromweb. (If only 360p25 format-f=18, try rerunning the command.)
Next, try the upstream yt-dlp 2026.02.04 version:
- Obtain upstream yt-dlp 2026.02.04. This uses player_client=android_vr,web,web_safariby default (onlyandroid_vris functional in this version).
- Try .\yt-dlp.exe -F --extractor-args "youtube:player_client=android_vr" https://www.youtube.com/watch?v=kEAC8eeQWcg. This should succeed.
- Attempt to download a video with android_vrusing upstream yt-dlp 2026.02.04:.\yt-dlp.exe -f=299 --extractor-args "youtube:player_client=android_vr" https://www.youtube.com/watch?v=kEAC8eeQWcg. This should also succeed to download a 1080p video withandroid_vr. (If not, at least-f=18will be downloaded.)
Next, try VRChat's downstream yt-dlp 2026.03.03 that's live in VRChat on Windows right now. This yt-dlp version has a working
web
client (due to forced player_js_version=20514@9f4cc5e4
), but no changes to android_vr
.- Make sure .\yt-dlp.exe --versionin the VRChat tools directory says2026.03.03.
- Visit Coze Isle again and play the above video. This should currently succeed.
Observation: VRChat updated from yt-dlp 2026.02.04 (yt-dlp-ejs 0.4.0) to yt-dlp 2026.03.03 (yt-dlp-ejs 0.5.0), which does not change
android_vr
but temporarily fixed web
. As a result, video playback started working within VRChat again in AVPro and Unity Video on Windows.Possible cause:
--extractor-args "youtube:player_client=web"
from a legacy bug report from year 2024: https://feedback.vrchat.com/bug-reports/p/yt-dlp-argument-change-required-to-restore-1080p-ytLog In
WubTheCaptain
Added
yt-dlp-2026.03.03-vrcrustyscript.txt
to OP.