SteamVR offers a rich set of customizable settings to the user. To ensure that a game will run well out-of-the-box, a developer can suggest tailored default user settings for their game on Steam Frame, including the refresh rate or the display resolution that should be optimal for the experience. A user can further refine these settings in
VR Settings -> Video -> Per-Application Video Settings. A user can also use
Reset to Default to restore the default settings suggested for this game.
The method for suggesting these default settings is identical regardless of which platform runtime (Proton, Lepton, native) or VR runtime (OpenVR, OpenXR) the application is built for. Developers can include a file named
vrpreferences.json at the root of their game package and SteamVR will read this file and automatically create the corresponding per-application default values for relevant settings.
The vrpreferences.json file is read when the application is being installed or upon startup of SteamVR. During development, if the package is not fetched through Steam for installation, it is necessary to restart SteamVR for the changes to take effect.
The file must contain a dictionary named
steam_frame and one or more of the following entries:
| Name | Value / Type | Corresponding Video -> Per-Application Video Settings menu entry | Behavior when not specified |
|---|
| preferResolution | <integer>, width component | Resolution Per Eye | Use 1728x1728 |
| preferMinRefreshRate | <integer> | Frame Limit / Refresh Rate Override | Use 72 Hz |
| preferHalfFramerate | true, false | Frame Limit / Throttling Behavior | No throttling |
| preferMotionSmoothingMode | "off", "on", "alwaysOn" | Motion Smoothing | Use global setting under Video -> Motion Smoothing |
JSON syntax can be prone to errors. In particular, make sure to not have a comma following the last entry in the steam_frame dictionary.
A developer can add, remove or change these suggested defaults though a game update, and as long as the user did not modify the settings through
VR Settings -> Video -> Per-Application Video Settings, the updated defaults will be used. If a user has overridden a setting, their override will continue to be used until they use
Reset to Default.
Example
vrpreferences.json:
{
"steam_frame": {
"preferResolution": 2160,
"preferMinRefreshRate": 90,
"preferHalfFramerate": true,
"preferMotionSmoothingMode": "off"
}
}
This example file suggests:
- A default resolution of 2160x2160
- A default display refresh rate of 90 Hz
- A default frame throttling to 1/2 (Frame Limit to 45 FPS)
- A default override to disable Motion Smoothing
To validate that the
vrpreferences.json is picked up by SteamVR, the
vrserver.txt log file can be searched:
[Info] - [Settings] Loading app-provided preferences from '/home/steamos/.local/share/Steam/steamapps/common/<game folder>/vrpreferences.json'
Parsing errors will be reported in this log, for example:
[Info] - Parsing of JSON file "/home/steamos/.local/share/Steam/steamapps/common/[...]/vrpreferences.json" failed: * Line 5, Column 3
4: "preferMinRefreshRate": 120,
5: }
6: }
Missing '}' or object member name
Tue Jul 28 2026 11:05:56.126069 [Info] - [Settings] No or invalid application preferences settings at '/home/steamos/.local/share/Steam/steamapps/common/[...]/vrpreferences.json'
To fully validate that all preferences are being picked up, use
VR Settings -> Video -> Per-Application Video Settings, press
Reset to Default and check the defaulted settings against the specified preferences.