Home / Device & Media Tools / Frame Time Test
Device & Media Tools

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.

Wave183 · browser-local frame pacing diagnostic

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.

local · no upload · no signup
Ready. Keep this tab visible during a run.0.0s
—FPS now
—Average FPS
—1% low FPS
—0.1% low FPS
—Median frame time
—P99 frame time
—Worst frame
0Frames >1.5× budget
—Budget hit rate
0Measured frames

Live frame-time trace

The dashed line is your selected frame budget. Orange/red points are delayed frames relative to that budget. A flat trace is more informative than a high average with repeated spikes.

Frame-time distribution

A narrow cluster suggests even pacing. A long right tail is where stutter lives. 1% low summarizes recurring slow frames better than one single minimum.

Controlled browser workload

This canvas deliberately changes how much work this page performs. Use the same load when comparing browsers or devices. It is not a game-engine GPU benchmark.

Run interpretation

Run a benchmark to generate a stability summary.

Compare with a saved run

Save a run, change one condition, then run again to compare.

Local run history

Only summary metrics and test settings are stored locally. Raw frame samples are not kept in history.
Truth boundary: this measures 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.

Search by task, tool name, or category. Press Esc to close.
Start typing to find a tool.