ToolActToolAct

Screen Refresh Rate Test

Detect actual monitor refresh rate, test high frame rate performance

0 fps
Current FPS
-- Hz
Estimated Refresh Rate
0 frames
Frame Count
0 seconds
Test Duration
Test Modes
0fps
Stopped
FPS Current FPS

What is Screen Refresh Rate?

Screen refresh rate describes how many times per second a display can update the image, measured in hertz. A 60 Hz screen can refresh up to 60 times per second, while 120 Hz, 144 Hz, or 240 Hz panels can make scrolling, animation, drawing, and games feel smoother when the whole device pipeline supports it. This test helps check whether a monitor is actually running at the expected rate or whether system settings, power-saving mode, cables, adapters, graphics drivers, or an external display are limiting output. Results should be read with context, because browser load, background tasks, and frame timing can affect measured values.

How to Use

How to use

  1. Select test mode: bouncing ball, scrolling stripes, flash test or UFO test
  2. Click Start Test button to begin detection
  3. Watch animation smoothness and FPS value changes
  4. Wait a few seconds to see estimated refresh rate result
  5. Recommend fullscreen testing for more accurate data

Testing Tips

  • Close other animation-heavy tabs before testing; browser load, power-saving mode, and external displays can affect measured smoothness.
  • Compare the displayed FPS with the monitor setting in your operating system or graphics control panel.

Use Cases

Estimate display refresh rate from animation framesStart the test to collect requestAnimationFrame timestamps, calculate current FPS, and estimate the nearest common refresh rate such as 60, 75, 120, 144, 165, 240, or 360 Hz. The frame count and elapsed time help judge whether the sample has run long enough, since a 3-second window gives a far cleaner estimate than the first 500 ms after page load.
Use multiple motion patterns to spot stutterSwitch between bouncing ball, scrolling bars, flashing frames, and UFO-style movement while the test runs. Different patterns make tearing, judder, motion clarity, and backlight strobing (PWM dimming on OLED) visible in ways a single FPS number cannot, which is useful for picking between otherwise identical-looking 144 Hz and 165 Hz panels.
Watch frame stability over timeThe tool keeps a rolling FPS history and draws it on a canvas chart with a 60 Hz reference line. This is useful when comparing monitors, browser tabs, power modes, external displays, or animation performance under load; keep the test tab visible because background throttling can drop the reading from 120 Hz to a capped 30 fps when the tab loses focus.
Detect dropped frames on variable refresh displaysWatch the FPS history chart while the bouncing ball is running: a FreeSync or G-Sync display should hold a steady horizontal line within the LFC range, while dropped frames appear as dips below it. If the line keeps snapping to 60 Hz, the panel may have fallen back to a fixed mode after a hot-plug event, an HDMI 1.4 cable bottleneck, or a driver override.
Verify the cable, adapter, and OS setting chainIf the estimated rate stays below the panel's spec, check that the HDMI 2.1, DisplayPort 1.4, or USB-C Alt-Mode cable is rated for the target bandwidth, that the OS display setting is not locked to a lower refresh rate, and that power-saving mode is disabled. Browser throttling in background tabs can also cap the result below the panel's true rate even when the GPU reports otherwise.

Technical Principle

Refresh-rate estimation uses requestAnimationFrame(t => ...), the browser callback locked to the display's vertical-sync signal. Each invocation receives a DOMHighResTimeStamp in milliseconds; subtracting consecutive timestamps gives the per-frame interval, and 1000 divided by the running mean of those intervals gives an estimated rate in hertz. The estimator collects a few hundred frames so transient stalls average out, then snaps the result to the nearest common panel rate: 60, 75, 90, 120, 144, 165, 240, or 360 Hz. The measurement is bounded by the slowest link in the chain. A 144 Hz panel still reads as 60 Hz when the OS display setting is locked there, when the HDMI 1.4 cable cannot carry the bandwidth (1080p @ 144 Hz needs about 7.6 Gbps, beyond HDMI 1.4's 8.16 Gbps headroom once colour depth is factored in), or when the GPU driver applies a power-saving cap. Variable Refresh Rate technologies (AMD FreeSync, NVIDIA G-Sync) let the panel hold any rate inside its operating range and drop to Low Framerate Compensation when content runs slower than the minimum. Browser scheduling adds its own ceiling. When the test tab loses focus, both Chromium and Firefox throttle requestAnimationFrame to roughly 1 Hz under Page Visibility, and intersection-observer throttling can pin a hidden iframe to about 30 fps even when the tab is active. WebGL and software-fallback compositing paths also occasionally drop frames during GC pauses, so a clean reading wants the test tab in the foreground, no fullscreen video playing in another tab, and a sample window of at least 3 seconds before trusting the snap-to-rate output.

  • Sampling: requestAnimationFrame timestamps are diffed; FPS = 1000 / mean(frame interval ms); estimator snaps to 60/75/90/120/144/165/240/360 Hz buckets.
  • Bandwidth gates: 1080p @ 144 Hz needs ≈ 7.6 Gbps, 4K @ 120 Hz needs ≈ 25 Gbps; HDMI 2.1 (48 Gbps) or DisplayPort 1.4 with DSC (32.4 Gbps) is required for the top tiers.
  • OS / driver cap: the panel can advertise 144 Hz while Windows Display Settings or NVIDIA Control Panel pin it to 60 Hz; rAF cannot exceed whatever the compositor is given.
  • VRR (FreeSync / G-Sync): panel rate floats inside its range; below the LFC threshold the GPU duplicates frames so brightness stays consistent.
  • Tab throttling: Page Visibility drops a backgrounded tab to ≈ 1 Hz; cross-origin hidden iframes are throttled to ≈ 30 fps even when the parent tab is foreground.
  • Sample window: < 500 ms readings are noisy; collect at least 3 seconds with the tab foreground for a stable estimate before snapping to a standard rate.

Examples

Standard 60 Hz office monitor

Mode:            Bouncing Ball
Duration:        5 s
Frame count:     298
Current FPS:     59.6
Estimated rate:  60 Hz

Most desktop and laptop displays sold before 2020 cap at 60 Hz.

144 Hz gaming monitor

Mode:            UFO Test
Duration:        5 s
Frame count:     718
Current FPS:     143.6
Estimated rate:  144 Hz

Typical for esports panels; requires DisplayPort 1.2+ or HDMI 2.0+ and the OS rate must be set to 144 Hz.

Background tab throttling

Mode:            Scrolling Bars
Current FPS:     30.0
Estimated rate:  30 Hz (clamped)

When the tab loses focus Chrome and Firefox throttle requestAnimationFrame to ~30 fps, so always keep the test tab visible.

FAQ

How does the test measure refresh rate?

It uses requestAnimationFrame() to count how many frames render per second. The browser fires this callback once per display refresh, so dividing frame count by elapsed time yields the effective refresh rate. The result usually rounds to a clean number (60, 75, 100, 120, 144, 165, 240 Hz).

Why does it show a lower number than my monitor's spec?

Common causes: power-saving mode is throttling the GPU; the monitor cable doesn't support the rated refresh rate (HDMI 1.4 caps at 60 Hz at 4 K, you need DP 1.2+ or HDMI 2.0+ for higher); the OS is set to 60 Hz despite the monitor capability; another tab is hogging the main thread, dropping frames.

Why does it show a higher number than 60 Hz on a 60 Hz monitor?

Some browsers can fire requestAnimationFrame faster than the actual display refresh during the first frames, especially on a multi-monitor setup where Chrome may pick the highest-refresh display's rate. Run the test for 10+ seconds for a stable reading.

How does this differ from frame rate (FPS)?

Refresh rate is the monitor's maximum frames per second. FPS is how many your application is producing. They're independent: a game running at 200 FPS on a 60 Hz monitor still only displays 60 unique frames per second (with tearing if VSync is off).

What about variable refresh rate (G-Sync, FreeSync)?

VRR monitors change refresh rate frame-by-frame to match the GPU output. This page measures the average rate while it runs; on a VRR display the result will reflect what the browser is currently rendering, not the monitor's max.

Is anything saved or uploaded?

No. The measurement is purely client-side. Results are not logged or transmitted.

Can I run this test in a window vs. fullscreen?

Yes, but background tabs and out-of-focus windows are throttled by the browser to save battery, often to ~1 fps. Run the test with the tab in focus, ideally in fullscreen, for accurate results.