Skip to main content

Graphics checks & calculations

Browser frame-time & frame pacing test

Measure browser frame intervals, median, P95, P99 and observed callback frequency. Build a low-load baseline and download the raw timing samples.

Updated:

Measure browser frame intervals

A small moving marker provides a light browser baseline. Keep this tab visible and focused for the whole capture.

A 1.5-second warmup runs before sampling.

A simple moving marker runs during warmup and sampling.

Ready. Start when other browser activity has settled.

How to read these numbers

A sample is the positive difference between two requestAnimationFrame timestamps after warmup. Mean, median, P95 and P99 use all valid intervals; percentiles use linear interpolation at (n − 1) × p / 100. At least 30 valid intervals are required. P95 means 95% of the interpolated distribution is at or below that value.

The callback rate equals valid intervals ÷ their total time. It reflects browser scheduling and can change with other tabs, power settings and system load. It does not measure GPU execution time or confirm your display’s physical refresh rate.

Method & result interpretation

A low-load baseline for browser frame delivery

This tool measures the intervals between requestAnimationFrame callbacks with a simple animated marker rather than a texture stress workload. A short warm-up precedes sampling. Keep this tab visible and focused, choose a duration, and compare repeated runs under the same display and power settings.

The observed callback frequency often follows display refresh scheduling, but it is not a direct measurement of panel refresh, pixel response, input latency or GPU execution time. A 60 Hz display and a light workload may both result in callbacks around 16.7 ms apart; changing browser or power settings can change that rhythm.

Understand mean, median, P95 and P99 frame time

Mean frame time averages the recorded intervals. Median is the middle of the sorted sequence. P95 and P99 describe the upper tail: larger values mean some callbacks took longer to arrive. Percentiles use linear interpolation at index p × (n − 1) in the sorted samples, with p between zero and one.

For example, regular 16.7 ms callbacks produce a tight distribution near that interval. A few 50 ms gaps can raise P95 or P99 while leaving the median almost unchanged. These are illustrative timings, not expected results for a specific GPU. The chart helps locate changes over the sampling period.

Sample quality and interrupted runs

At least 30 valid frame intervals are required before the tool treats the sample set as sufficient. A short stop or an interruption is still labeled in the result, and the exported file retains the raw timing data and reason. More samples improve the description of this run; they do not turn it into a hardware certification.

When the document becomes hidden or the window loses focus, sampling stops and the run is marked as interrupted. Browsers may pause or throttle background callbacks, so those pauses must not be mistaken for a GPU stall. Return to this tab and start a new run to obtain a comparable baseline.

Compare the baseline with a texture workload

First repeat the low-load test, then run the homepage texture workload using unchanged browser, display, power mode and background applications. A difference describes how browser delivery changed under those conditions. It does not identify whether the CPU, GPU, compositor, driver or another application caused it.

JSON downloads are created locally and include sampling settings, completion state, timings and browser context. Review them before sharing. To investigate missing WebGL support, use the capability report; to inspect texture budgets, use the memory calculator. This timing test itself does not require WebGL.

Technical references

Continue your checks

GPU texture rendering test