VRCVideoCacher is a tool used to cache VRChat videos to your local disk and/or fix YouTube videos from failing to load.
It replaces VRChats yt-dlp.exe with our own stub yt-dlp, this gets replaced on application startup and is restored on exit.
Auto install missing codecs: VP9 | AV1 | AC-3
From VRC or EAC? no.
From YouTube/Google? maybe, we strongly recommend you use an alternative Google account if possible.
In order to fix YouTube videos failing to load, you'll need to install our Chrome extension from here or Firefox from here, more info here. Visit YouTube.com while signed in, at least once while VRCVideoCacher is running, after VRCVideoCacher has obtained your cookies you can safely uninstall the extension, although be aware that if you visit YouTube again with the same browser while the account is still logged in, YouTube will refresh you cookies invalidating the cookies stored in VRCVideoCacher. To circumvent this I recommended deleting your YouTube cookies from your browser after VRCVideoCacher has obtained them, or if you're using your main YouTube account leave the extension installed, or maybe even use an entirely separate web browser from your main one to keep things simple.
Loading failed. File not found, codec not supported, video resolution too high or insufficient system resources.
Sync system time, Open Windows Settings -> Time & Language -> Date & Time, under "Additional settings" click "Sync now"
Edit Config.json and set ytdlDelay to something like 10 seconds.
Attempted to play an untrusted URL (Domain: localhost) that is not allowlisted for public instances.
Run notepad as Admin then browse to C:\Windows\System32\drivers\etc\hosts add this new line 127.0.0.1 localhost.youtube.com to the bottom of the file, edit Config.json and set ytdlWebServerURL to http://localhost.youtube.com:9696
- Install
dotnet-runtime-10.0 - Run with
./VRCVideoCacher - By default VRCVideoCacher will try to download and run its own binaries, but if you'd like to use your system packages instead, set
ytdlPathto""inConfig.json, you'll need to installdeno,ffmpegand yt-dlp usingpip install "yt-dlp[default,curl-cffi]"the pip version is required due to package manager versions not including browser impersonation, make sure to always keep yt-dlp updated otherwise you will run into issues.
- If you have VRCX, delete the startup shortcut "VRCVideoCacher" from
%AppData%\VRCX\startup - Delete "yt-dlp.exe" from
%AppData%\..\LocalLow\VRChat\VRChat\Toolsand restart VRChat or rejoin world.
| Option | Description |
|---|---|
| ytdlWebServerURL | Used to circumvent VRChats public world video player whitelist, see above for usage instructions. |
| ytdlPath | Path to the yt-dlp executable, default Utils\\yt-dlp.exe, when set to "" it will use global PATH instead, as a side effect this will disable the yt-dlp, ffmpeg and deno auto updater. |
| ytdlUseCookies | Uses the Chrome or Firefox extension for cookies, this is used to circumvent YouTubes bot detection. |
| ytdlAutoUpdate | Auto update yt-dlp, ffmpeg and deno. |
| ytdlAdditionalArgs | Add your own yt-dlp args (only add these if you know what you're doing) |
| ytdlDubLanguage | Set preferred audio language for AVPro and cached videos, be warned you may end up with auto translated slop. e.g. de for German, check list of supported lang codes |
| ytdlDelay | No delay (Default) 0, YouTube videos can fail to load sometimes in-game without this delay. e.g. 8 for 8 seconds. |
| CachedAssetPath | Location to store downloaded videos, e.g. store videos on separate drive with D:\\DownloadedVideos |
| BlockedUrls | List of URLs to never load in VRC, also works for blocking domains e.g. [ "https://youtube.com", "https://youtu.be" ] to block YouTube. |
| BlockRedirect | Video to load in-place of Blocked URL. |
| CacheYouTube | Download YouTube videos to CachedAssets to improve load times next time the video plays. |
| CacheYouTubeMaxResolution | Maximum resolution to cache youtube videos in (Larger resolutions will take longer to cache), e.g. 2160 for 4K. |
| CacheYouTubeMaxLength | Maximum video duration in minutes, e.g. 60 for 1 hour. |
| CacheMaxSizeInGb | Maximum size of CachedAssets folder in GB, 0 for Unlimited. |
| CachePyPyDance | Download videos that play while you're in PyPyDance |
| CacheVRDancing | Download videos that play while you're in VRDancing |
| PatchResonite | Enable Resonite support. |
| PatchVRC | Enable VRChat support. |
| AutoUpdate | When a update is available for VRCVideoCacher it will automatically be installed. |
| PreCacheUrls | Download all videos from a JSON list format e.g. [{"fileName":"video.mp4","url":"https:\/\/example.com\/video.mp4","lastModified":1631653260,"size":124029113},...] "lastModified" and "size" are optional fields used for file integrity. |
Generate PoToken has unfortunately been deprecated