Guides

Configuration File

There are a few systems in VRChat that have configurable options or properties. These systems aren't customized with settings you can set in the application, as the default settings are sufficient for the vast majority of VRChat players.

However, we have provided a way for you to customize some of these values in case you want to change how they work!

Configuration File Location

VRChat doesn't create a configuration file by default. You can create your configuration file in %LocalAppdata%Low\VRChat\VRChat. The file must be named config.json and must consist of a valid JSON structure.

📘

PC-Only Feature

These settings can only be adjusted on PC. They cannot be changed on Quest.

An example configuration file might look like this:

{
	"betas": [
		"particle_system_limiter"
	],
	"ps_max_particles": 50000,
	"ps_max_systems": 200,
	"ps_max_emission": 5000,
	"ps_max_total_emission": 40000,
	"ps_mesh_particle_divider": 60,
	"ps_mesh_particle_poly_limit": 50000,
	"ps_collision_penalty_high": 50,
	"ps_collision_penalty_med": 30,
	"ps_collision_penalty_low": 10,
	"ps_trails_penalty": 10,
	"dynamic_bone_max_affected_transform_count" : 32,
	"dynamic_bone_max_collider_check_count" : 8,
	"cache_directory" : "C:/VRCCache/"
}

Not all of the available properties are listed above. These properties will be described below.

Configuration File Uses

The configuration file may be used to customize several systems in VRChat.

Rich Presence

You can disable the Discord and Steam Rich Presence functionality by adding this value to your configuration file.

Property NamePurposeValid Values
disableRichPresenceDisables the Steam and Discord Rich Presence integration.Bool, true or false

Cache Settings

Location

Normally, VRChat stores its cache in %AppData%\..\LocalLow\VRChat\VRChat in several sub-folders. This is the location that Microsoft Windows expects temporary program files to be stored, but advanced users may wish to move this cache in case of smaller OS drives or some other reason.

Property NamePurposeValid Values
cache_directoryDefines the location where VRChat should store its cache data.Any valid path. Do not use \ as a path symbol-- this indicates an escape symbol in JSON. Use \\ or / instead.

The config file and output logs will still be present in the default location, but all cache will be stored in the defined directory by this property.

When this value is not present, the default value of %AppData%\..\LocalLow\VRChat\VRChat is used.

Size and Expiry Time

By default, the cache will limit itself to 20 gigabytes in size. It may drift slightly above or below this value depending on the size of the assets present in the cache. Files will be removed based on how long it has been since that file has been accessed. If a file has not been accessed in 30 days, it will be removed.

You can adjust both of these settings using the following configuration options. Please note that the values cannot be adjusted below their default values.

Property NamePurposeValid Values
cache_sizeMaximum size, in gigabytes, of the cacheGreater than or equal to 30
cache_expiry_delayMaximum age, in days, of files in the cacheGreater than or equal to 30

📘

This system is enabled on Quest and cannot be disabled.

To prevent abuse and heavy particle use affecting performance, Particle Systems can be limited when used on avatars. Click the section header to see the documentation page describing this system.

🚧

Since we've replaced Dynamic Bones with PhysBones, this isn't really a relevant setting anymore.

Dynamic Bone is a very performance-heavy component, and it is easy for an avatar creator to overuse the component. VRChat has provided a method by which users can limit the number of Dynamic Bones permitted on avatars. Click the section header to see the documentation page describing this system.

Camera and Screenshot Settings

As of VRChat 2022.2.2, the camera's resolution can be set via an in-app option. However, you can also choose "Config" as an option.

You can adjust the resolution of your camera's images and screenshot settings with some configuration options. The minimum resolution is 1280x720 pixels, and the maximum resolution is 7680x4320 pixels.

Property NamePurposeValid Values
camera_res_heightAdjusts the height of images taken with the VR camera.

Only used if "Config File" is selected in the camera for the resolution setting.
720 to 4320
camera_res_widthAdjusts the width of images taken with the VR camera.

Only used if "Config File" is selected in the camera for the resolution setting.
1280 to 7680 
screenshot_res_heightAdjusts the height of images taken with the F12 key.720 to 2160
screenshot_res_widthAdjusts the width of images taken with the F12 key.1280 to 3840
picture_output_folderDefines the folder where images are saved when taken with the VR camera.Any valid path. Do not use \ as a path symbol-- this indicates an escape symbol in JSON. Use \\ or / instead.
picture_output_split_by_dateIf false, photos will be dumped directly into the output folder without being sorted into YYYY-MM folders.true (default) or false
camera_spout_res_widthAdjusts the width of the Stream Camera Spout2 output.Width x Height can be any pixel value between 720p and 4k
camera_spout_res_heightAdjusts the height of the Stream Camera Spout2 output.Width x Height can be any pixel value between 720p and 4k

First-Person Steadycam FOV

In addition, you can adjust the field of vision for the first-person Steadycam option, which is available in the Camera menu when you're in VR. This will allow you to increase the field of vision when using this option, letting your stream viewers have a better view of the action while preventing jerky movement.

Property NamePurposeValid Values
fpv_steadycam_fovAdjusts the field of view of the first person view steadycam. The value represents the vertical FOV.

Most HMDs have a default value of 50-55. If you're looking to visibly increase this FOV for your viewers, try values of 65-70. Keep in mind this can be highly subjective!
30 to 110