Frame Time Test
Measure browser-visible frame pacing instead of trusting average FPS alone. Run a timed benchmark, inspect 1% lows and P99 spikes, mark hitches you actually notice, compare controlled runs, and export the evidence locally.
Frame Time Test — average FPS is only the headline
Measure every visible-tab animation interval, then inspect the lows, percentiles and spikes that explain stutter. Add a controlled canvas workload, mark a hitch you actually feel, and compare repeated runs under the same conditions.
Live frame-time trace
Frame-time distribution
Controlled browser workload
Run interpretation
Compare with a saved run
Local run history
requestAnimationFrame delivery inside this browser tab. It does not read another game's FPS, raw GPU counters, panel scan timing or hardware latency.How to read frame pacing without fooling yourself
Average FPS can hide stutter
Two runs can share the same average while one contains repeated long frames. Read average FPS beside the 1% low, P99 frame time and the trace rather than treating one number as the whole experience.
1% low is a pattern, not one accident
This page converts the slowest 1% of measured frame intervals into an FPS-equivalent rate. The single worst frame is still shown separately because one isolated interruption should not silently define the whole run.
Use enough time for lows
A 10-second run is useful for a quick check. Thirty to sixty seconds produces more meaningful tail statistics, especially 0.1% low. Keep duration, load, target, tab visibility and power state the same when comparing runs.
Mark what you actually feel
If motion visibly hitches, press “I saw a hitch” during the run. The marker does not prove causation, but it lets you compare your perception with nearby frame-time spikes instead of relying on memory after the test.
Browser timing is not game FPS
requestAnimationFrame is paced by this page, the browser, compositor and display path. It cannot inspect Fortnite, Valorant or another process. Use a game or driver overlay when you need that application's real render telemetry.
Foreground only
The benchmark aborts if the tab becomes hidden because browsers throttle background animation. That avoids mixing foreground pacing with background-tab behavior and producing a misleading result.