Skip to content
DeviceBench

Free online monitor refresh rate test

Refresh rate test that shows the spread behind the number

Six hundred frame intervals go past before this page commits to a figure: it times the gap between consecutive frames the browser hands it, takes the middle one and turns it into Hz, adopting a familiar rate such as 60, 144 or 165 only when the measurement lands within 3% of it. Underneath sits every interval it collected, because the shape carries as much information as the total — one narrow column is a fixed-rate panel, several columns is either variable refresh working as designed or a machine that cannot hold the schedule. The rate belongs to whichever display this window is currently on, so moving the window to your other monitor changes the answer.

  • 100% free
  • No signup
  • 600 frames
  • Interval histogram
  • 3% snap tolerance

Counting frames — 0 of 600 so far. Leave this window in front and give it a few seconds.

One number will appear here once there are enough intervals behind it.

0 of 600 intervals in the window

Median interval
the frame budget of this panel
Steadiness
intervals within 10% of the median
Shortest frame
Middle half spans
p25 to p75 of every interval

Where the intervals landed

The distribution needs 24 intervals before it is worth drawing. It appears on its own.

Which display this describes

The rate belongs to the screen this browser window is currently on, not to the machine. Drag this window onto your second monitor, press the button above, and watch the figure change within a few hundred frames — on a laptop with an external panel attached, that difference is often the whole answer to why one screen feels smoother than the other.

What is being timed is when the browser hands this page a frame, which is the closest thing to the panel’s clock that any web API exposes. It is a ceiling and never a floor: a machine that cannot keep up will report fewer frames than the display is capable of, so a reading below the rate on the box is worth repeating with everything else closed before you believe it. On a phone the figure moves on its own — a 120 Hz handset drops to 60 or lower when it decides the content is static, which is a power feature rather than a fault.

How to check your monitor's refresh rate

Three passes: one for the number, one for its confidence, one for the second screen.

  1. Keep this window in front and wait for the bar to fill

    The estimate needs several hundred intervals before it stops moving, which is five seconds on a 120 Hz panel and ten on a 60 Hz one. Clicking into another application while it counts does not slow the measurement down, it suspends it: the browser stops handing frames to a window that is not in front, and the page would rather pause than write that down.

  2. Check the steadiness figure before you quote the number

    Steadiness is the share of intervals that landed within 10% of the middle one. Above 90% the panel is holding a fixed rate and the headline can be quoted as it stands. Below that the gaps between frames are genuinely moving, and the distribution underneath will show whether they are moving smoothly, which is variable refresh, or jumping between two clusters, which is a machine that keeps missing its deadline.

  3. Drag the window to your other screen and measure again

    A browser reports the rate of the display its window is currently on, so a laptop with an external monitor attached has two answers and this page will only ever show you one at a time. Move the window fully onto the second screen, press the reset button, and give it another few hundred frames — on most multi-monitor desks that comparison is the reason one screen has always felt smoother than the other.

Technical specifications

What the number isAn estimate of the schedule the browser was given, taken from frame-callback timestamps — not a signal read off the display cable, and never higher than what the compositor is willing to deliver
Sample sizeUp to 600 intervals in a rolling window, republished 4 times a second
EstimatorMedian of the intervals after values past 3× and below 0.4× the rough median are trimmed
SnappingNearest of 20 standard rates from 30 Hz to 540 Hz, applied only when the measurement is within 3% of one
SteadinessShare of intervals within 10% of the median; below 90% the page quotes the raw measurement instead of a standard rate
Throttle detectionA median interval above 100 ms is reported as browser throttling rather than as a 10 Hz display
Distribution16 equal-width bins spanning the 1st to 99th percentile of the intervals
Data kept600 durations in a rolling buffer, held in the tab and released on reload; no display name, serial or EDID is readable from a web page in the first place

Frequently asked questions

Windows says my monitor is 165 Hz but this reads 60.

The operating system is reporting what the panel is capable of and this page is timing what it is actually doing, and those disagree more often than anyone expects. The usual causes, in the order worth checking: the rate was never raised from the default in the display settings, the cable or port cannot carry that rate at your resolution — HDMI 1.4 tops out around 144 Hz at 1080p and 30 Hz at 4K — or a second monitor with a lower rate is dragging the whole desktop down on some driver versions. Change one thing, press reset here, and you will know within ten seconds whether it took.

My reading wanders between 138 and 144. Is the panel faulty?

Almost certainly not — that is what a variable-refresh display looks like from inside a browser. G-Sync, FreeSync and the VESA Adaptive-Sync standard underneath them let the monitor change its own timing to match whatever is being drawn, so the interval between frames is supposed to move. The steadiness figure is the giveaway: a fixed panel sits above 95%, an adaptive one running an unsteady workload sits well below it, and the distribution spreads across several columns instead of stacking into one.

Why does it need six hundred frames rather than one second?

Because a short sample is dominated by whatever else happened during it. One garbage collection, one compositor hiccup or one frame lost to a background tab adds a single enormous interval, and over 60 samples that is enough to pull a mean off by several Hz — which is exactly why the estimate uses a median and trims anything past three times it before the second pass. Six hundred intervals make the middle value stable enough that the last digit stops flickering, and the trade is that the number reacts slowly when the conditions change under it.

It says 1 Hz, or nothing at all.

The tab was in the background while it counted. Browsers cut a hidden tab's animation callbacks down to roughly one a second, and some stop them entirely, so a page that carried on measuring would report a 1 Hz display with complete confidence. This one watches for that, refuses to publish the number and says why — bring the window back to the front and the count restarts from zero.

Does the browser I use change the answer?

It can, and the honest way to put it is that the measurement is of the schedule your browser was given rather than of the cable. Some browsers cap animation callbacks below the panel rate to save power on battery, some throttle when the window is partly covered, and a few historically capped everything at 60 regardless of hardware. If two browsers on the same machine disagree, run both with the window fully visible and on mains power, and treat the higher of the two as the panel's real behavior.

Can I test a phone or tablet screen this way?

Yes, and the number will legitimately move while you watch. A 120 Hz phone drops to 60, 24 or even 10 Hz when the system decides the content on screen is static, and raises it again when you scroll — that is a battery feature, not a fault, and it is why a handset that advertises 120 Hz can read 60 here while sitting still. Keep a finger moving on the glass during the count if you want to see the top of its range.

Is this the same thing as my frame rate?

No: this is how often the display can accept a new picture, and frame rate is how often something manages to produce one. They coincide when a machine has work to spare, which is why an idle browser tab usually reports the panel rate exactly, and they separate the moment something struggles — the display keeps refreshing at its own rate and simply shows the previous picture again. That is why this page deliberately draws nothing at all while it counts.

About refresh rate and what a browser is really timing

Refresh rate is how many times a second a display is willing to accept a new picture, and it is set by timing rather than by the panel alone: a resolution, a color depth and a cable standard together decide the highest rate a link can carry, which is why the same monitor offers 240 Hz at 1080p and 120 Hz at 4K over the same wire. A web page cannot ask any of that directly. There is no API that reports Hz, no access to the EDID block the monitor sends about itself, and screen.refreshRate has never existed in any browser. What a page can do is time the callbacks it is given: the browser schedules them in step with the compositor, the compositor is in step with the display, and the gaps between them are therefore the display’s own beat as closely as anything in JavaScript can observe it.

The reason this page draws nothing while it counts is that a scene contaminates the measurement in one direction only. Give the loop something expensive to render and it will start missing refreshes, at which point the intervals double and the estimate reads exactly half the panel’s rate with no indication that anything went wrong — a 240 Hz monitor confidently reported as 120. With an empty callback the only thing that can lengthen an interval is the browser or the display itself, which is the question being asked. Choosing how much work to add is a different and equally useful exercise, and it belongs on the FPS test, where the load is a control rather than a contaminant.

Three things routinely make people distrust a reading here, and all three are the measurement being honest. A number that moves is usually adaptive sync changing the timing on purpose. A number far below the box specification usually means the rate was never selected in the operating system’s display settings, or the cable cannot carry it at this resolution. And a number that changes when you move the window is the correct behavior of a two-monitor desk, not a bug. Once you have the figure, the milliseconds it implies are often the more useful form — 144 Hz is a frame every 6.94 ms — and the Hz to ms converter does that arithmetic both ways. If the panel holds its rate but motion still looks wrong, the next suspect is how quickly its pixels can change color, which the ghosting test shows directly, or how late the picture answers your hand, which the input lag test times.

What is stored while the frames are counted

Every number on this page is worked out by JavaScript running in the tab you are reading it in. Nothing you type, paste or open is uploaded, logged or kept, which is also why the tools carry on working after you disconnect from the network.

The buffer behind this measurement holds durations and nothing else — six hundred millisecond figures at most, each overwritten by a newer one as the window advances. No page can read your monitor’s model, serial number or EDID data, so there would be nothing to identify a display with even if the site wanted to.