Develop

Set Display Refresh Rates

Updated: Aug 27, 2026
The display refresh rate represents how many times per second a headset’s screen refreshes. A higher refresh rate enables higher frame rates, brighter output, and improved color clarity. However, higher refresh rates require your app to perform its work in shorter amounts of time.
The default display refresh rate for apps is 72 Hz. If you want to run your app at a different refresh rate, you are responsible for ensuring that your app is performant enough to sustain that rate. Apps that can’t consistently render at the desired display refresh rate will fail Meta Horizon Store review. Such apps might exhibit judder, flickering black areas on the peripheries, and other performance-related problems.

Get refresh rates supported by the device

Some headset models are capable of higher display refresh rates than others. The table below lists the primary currently available refresh rates.
Device Model60 Hz72 Hz80 Hz90 Hz96 Hz100 Hz120 Hz
Quest
Media
apps only
-
-
-
-
-
Quest 2
Media
apps only
Quest Pro
-
-
-
-
Quest 3
-
Quest 3S
-
60 Hz must only be used by media player apps. It is provided as a way to synchronize 30 FPS or 60 FPS video with the display refresh rate for smooth playback. Note that media apps can use higher refresh rates, as long as the refresh rates are supported by the device and the app remains performant. Non-media player apps that set the display refresh rate to 60 Hz will fail the Store review.
To see the current refresh rate on your headset:
  1. Enable developer mode on the Meta Horizon mobile App. For instructions, see Enable Developer Mode.
  2. Use the Meta Quest Developer Hub desktop to:
    • Install the OVR Metrics Tool. For instructions, visit the Meta Horizon Store.
    • Configure the Metrics Performance HUD Settings in the Meta Quest Developer Hub to display the frame rate by choosing the settings gear icon, and then check the two boxes for Average FPS.
To get the list of refresh rates supported by a device:
Note: While the following API will get you a list of refresh rates, it is deprecated. Requesting values that aren’t returned by this API is allowed on supported devices. For instance, Quest 2, Quest Pro, Quest 3, and Quest 3S all support 76 Hz. To maximize compatibility with future headsets, stay with refresh rates listed on the chart above.
Use the Get Available Display Frequencies Blueprint to retrieve an array of the available display frequencies.
Get available display frequencies Blueprint

Set a refresh rate

If you want to set refresh rates other than 72 Hz for your app, the supported devices section of your Android manifest must include a device that supports this rate. In Unreal Engine, this can be done through Project Settings as described in Set Target Device.
To set a refresh rate:
Use the Set Display Frequency Blueprint and set it to the desired refresh rate.
Example of best practices for setting display frequency

Considerations for changing refresh rates

If an app with a display refresh rate higher than 72 Hz experiences thermal events, dynamic throttling may change the refresh rate to 72 Hz as a first step. If thermal conditions worsen, dynamic throttling may take an additional step to change frame rate while maintaining the refresh rate (the equivalent of minVsyncs=2).

Handle refresh rate change events (Optional)

If you need your app to know if dynamic throttling reduces the refresh rate so that the app can respond in some way, you can do so through the event Blueprint Oculus Display Refresh Rate Change. The old and new refresh rates are given as the float values From Refresh Rate and To Refresh Rate.
Note: This event only fires when your project uses the OVR legacy runtime. If your project uses OpenXR, this event is not dispatched during dynamic throttling.
Display refresh rate change event Blueprint example

Testing how an app handles dynamic throttling

You can simulate the dynamic throttling from a higher display refresh rate. While your app is running, broadcast an intent through the adb shell activity manager. For example, this command simulates throttling for 10 seconds:
adb shell am broadcast -a com.oculus.vrruntimeservice.COMPOSITOR_SIMULATE_THERMAL --es subsystem refresh --ei seconds_throttled 10
If you aren’t able to see a visible change in your app, you can verify the refresh rate change by using the Get Current Display Frequency Blueprint and logging the returned value.

Meta Quest 3 extended refresh rates

Meta Quest 3 supports display refresh rates above 120 Hz, up to 240 Hz. This is exclusive to Meta Quest 3. It is not available on Meta Quest 3S, and it is not available on any other headset. Meta Quest 3S uses a different display panel that does not support rates above 120 Hz.
Extended refresh rates require HorizonOS v2.7 or later.
Extended refresh rates depend on the specific display hardware in Meta Quest 3. Do not assume that a future headset will support rates above 120 Hz, and do not make an extended rate a requirement for your app to run. Fall back to a rate from the list the device reports when a request for an extended rate does not succeed.

Up to 207 Hz (standard)

On Meta Quest 3, the display hardware accepts any integer refresh rate from 72 Hz through 207 Hz, and you can request any of them through the standard APIs described above. No additional setup is required. 207 Hz is the highest rate at which the system can deliver a full frame of data to the display at full resolution.

Up to 240 Hz (developer mode)

Rates above 207 Hz require display scaling, because a full-resolution frame exceeds the available bandwidth to the display above 207 Hz. Enable developer mode, then run both of the following commands:
adb shell setprop debug.oculus.forceDisplayScaling 1
adb shell setprop debug.oculus.refreshRate 240
The first command enables display scaling. The frame is rendered at a lower resolution, sent to the display as a smaller payload, and upscaled to the panel’s native resolution by the display hardware. The smaller payload fits within the available bandwidth at 240 Hz.
The second command sets the target refresh rate. Accepts any integer from 72 through 240.
Display scaling trades image quality for bandwidth. The upscaled image is not identical to a natively rendered full-resolution image, and the difference is visible in fine detail such as small text and thin geometry.
To reset both properties and return to the default behavior:
adb shell setprop debug.oculus.forceDisplayScaling ''
adb shell setprop debug.oculus.refreshRate ''

Motion blur at extended refresh rates

Perceived motion blur changes at extended refresh rates. Each frame is displayed for a shorter time, which reduces the smearing that comes from tracking a moving object across a longer frame. The change is most visible in high-contrast scenarios, such as a bright object moving across a dark background. Test the motion in your own content at the rate you plan to ship, because the result depends on your scene’s contrast and motion speed.

Performance considerations for extended refresh rates

A higher refresh rate shortens the time your app has to produce each frame. The frame budget at each rate is:
Refresh rateFrame budget
72 Hz
13.9 ms
90 Hz
11.1 ms
120 Hz
8.3 ms
207 Hz
4.8 ms
240 Hz
4.2 ms
At 240 Hz your app has less than a third of the frame budget it has at 72 Hz. An app that misses this budget will judder, which defeats the reason to raise the rate at all. Extended refresh rates suit apps that render a light scene and benefit from low latency and smooth motion, such as rhythm games, competitive shooters, sports and racing titles, and simple high-contrast environments. An app with a dense scene, heavy post-processing, or a high draw call count is a poor candidate.
Dynamic throttling applies at extended rates in the same way it applies above 72 Hz.