Auto-calibrated timing analysis, a live frame-time graph, and a camera-verifiable numbered marker — click Start and let it work out your refresh interval on its own.
RUNS ENTIRELY IN YOUR BROWSER · NOTHING IS RECORDED OR UPLOADED
Last updated: · Reviewed for accuracy against current browser APIs
Share:
Click Start. The first second or two calibrates automatically — no need to know your refresh rate in advance.
Detected rate–
Frames seen0
Skips0
Skip rate–
Longest stall–
Jitter–
Frame time (ms) — flat is healthy, spikes are skips
The first second or so establishes your actual refresh interval automatically — no need to tell it your monitor's Hz.
Let it run for at least 15-30 seconds.
A short run can easily show zero skips just by luck; longer runs give a more honest picture.
Watch the live graph for spikes.
A flat line near your expected frame time is healthy; tall spikes are skips being caught as they happen.
Close other tabs and heavy programs if skips are frequent.
This test can only see delays on the browser's own side — a busy system is a common, fixable cause.
Use a camera for panel-level confirmation.
If this test looks clean but motion still feels off, a slow-shutter photo of the marker checks the display's own delivery, which this test can't see.
How this test actually works
Every call to requestAnimationFrame hands back a timestamp, and this test measures the gap between consecutive timestamps rather than assuming a fixed number. For the first couple dozen frames, it collects those gaps and takes the median to establish your actual refresh interval — about 16.7ms on a 60Hz display, 6.9ms on 144Hz, and so on — which is why it works the same way regardless of what your monitor is rated for, without you needing to enter anything.
After that calibration window, any gap that comes in noticeably longer than that expected interval — more than 1.5 times it — gets logged as a skip, and the number of frames skipped is worked out from how much longer that gap was than expected. The numbered marker above advances by one on every frame the browser actually renders, which is what makes it meaningful to photograph: a real skip shows up as a repeated or missing number, not just a number on a screen.
What this test can't see
This is worth being direct about rather than letting the tool oversell itself. A frame skip counted here means the browser itself failed to deliver a new frame to the screen on schedule — usually because the main thread was busy with something else and missed its window. That's a real, common cause of visible stutter, and it's exactly the kind of drop this test is built to catch.
What it cannot see is frame skipping that happens further down the pipeline, inside the monitor itself. A panel's own scaler can silently repeat a frame that the browser delivered perfectly correctly and on time — from the browser's point of view, nothing went wrong at all, yet the screen still stutters. No amount of JavaScript running in a browser tab can observe that, because by the time a frame skip like that happens, the browser has already finished its job.
Confirming panel-level skipping with a camera
The practical way to check what your monitor is actually doing, independent of what this test reports, is a slow-shutter photo. Set a phone camera's shutter speed slower than one refresh interval — for a 60Hz display, slower than roughly 1/60th of a second — and photograph the numbered marker while the test runs.
Evenly spaced, distinct numbers in the resulting streak mean the panel is presenting frames at a consistent cadence. A gap where a number should be, or the same number appearing twice, points to the panel itself skipping or repeating a frame — a hardware-level issue this browser-side counter has no way to catch on its own.
What causes frame skipping
On the browser's side of things: a CPU that's busy with something else, background tabs or programs competing for resources, a garbage-collection pause stalling the main thread for a moment, or a GPU that's falling behind on compositing — an outdated graphics driver makes this last one more likely, so it's worth confirming you're on the latest from NVIDIA, AMD, or Intel. Any of these can make the browser miss its window to hand over a new frame, which this test will correctly catch.
On the display's side: a cable or port that can't fully support your chosen resolution and refresh rate together (a common example is 4K at 120Hz over a port that only handles 4K at 60Hz, which can silently fall back or skip), a refresh rate pushed past what the panel can reliably sustain, or aggressive picture processing like motion smoothing interfering with frame timing. These are the kind that need the camera method above to properly confirm.
This vs. Refresh Rate Test
These two answer different questions and work well together. Refresh Rate Test tells you what rate your display is currently running at — is it genuinely doing 144Hz, or has it silently fallen back to 60? This test assumes whatever rate it detects is correct and instead asks whether every frame at that rate is actually arriving on schedule, or whether some are being skipped or repeated along the way. A display can pass one of these and fail the other.
Frequently asked questions
What's the difference between this and the Refresh Rate Test?
Refresh Rate Test tells you what rate your display is running at. This test checks whether every frame at that rate is actually being delivered on schedule, or whether some are being skipped or repeated.
Can this test detect frame skipping happening in the monitor itself?
No. This test only sees what happens on the browser's side of the pipeline. A monitor's own scaler can silently repeat a frame that was delivered correctly, and no browser-based test can see that — a camera-based long-exposure photo of the moving marker is the practical way to check.
Why does it say "calibrating" when I first start the test?
The test measures the first couple dozen frames and works out your actual refresh interval from there, rather than asking what rate your display runs at — which is what makes it work the same way on 60Hz, 144Hz, or 240Hz without any setup.
What usually causes frame skipping?
On the browser side: a busy CPU, background programs, garbage collection pauses, or a GPU falling behind. On the display side: a cable or port limitation, an overclocked refresh rate, or aggressive picture processing.
Is some skipping normal?
The occasional single skip during a long run usually isn't worth worrying about. Frequent, repeated skipping is the more meaningful signal to act on.
Does this tool record or upload anything?
No. All timing analysis happens locally in your browser using its own animation clock — nothing is captured, recorded, or sent anywhere.
More tools on ProDeviceTest
Frame delivery is one part of overall motion quality. These cover the rest.
Refresh Rate Test — measure what your display is actually outputting right now
Ghosting Test — check motion blur and trailing with a moving object
HDR Test — check HDR, wide-gamut, and shadow/highlight detail