Rendered FPS Test

Measure the real frame rate this browser tab renders under three synthetic render loads.

Rendered frames

Render load

Medium

Moving primitives are drawn every frame to create load. Switching the load never resets the sample.

Frame time histogram

Last 60

Last 60 frames · bars above 20 ms are red, others green.

Rendered frame rateLive
—FPS
Independent rAF samplingCurrent load: Medium

Frame statistics

0 / 300
Current FPS
— FPS
Average FPS
— FPS
Min FPS
— FPS
Max FPS
— FPS
1% low
— FPS
Dropped frames
—

What this measures

This measures rendered frames in this browser tab, not in-game FPS or your monitor's Hz

No snapping to 60 / 120 / 144: the raw rendered frame rate is shown, so it dips under load.

Sampling window

A 300-frame ring buffer holds recent frame times; current / avg / min / max / 1% low / dropped frames refresh every 1000 ms. 1% low is the average FPS of the slowest 1% of frames; a dropped frame is any frame time above 1.5× the median.

Current load
Medium
Primitives / frame
160
Samples
0

FPS Tester: Measure Rendered Frame Rate and Frame-Time Stability

An FPS tester measures how many frames your browser actually renders each second, and how evenly those frames arrive. A high average number can hide a stutter that you feel, so this page reports the frame-time distribution, the slowest 1% of frames and a dropped-frame count alongside the average. Three render loads let you see where the device starts to struggle. Everything is sampled locally with requestAnimationFrame; no data leaves the tab.

An FPS tester measures rendered frames per second in the current browser tab, not a monitor's refresh rate and not in-game FPS. It samples requestAnimationFrame frame intervals, then reports current, average, minimum and maximum FPS, 1% low (the average of the slowest 1% of frames) and frames exceeding 1.5 × the median frame time. 60 Hz maps to a 16.7 ms frame budget; results vary with GPU, tab visibility and background load.

Definition
Frames actually rendered per second in this browser tab
Units
FPS; frame time in ms = 1000 / FPS
Sampling
requestAnimationFrame, rolling 300-frame buffer, 1-second reporting window
1% low
Average frame rate of the slowest 1% of frames in the sample
Dropped frame
Frame time greater than 1.5 × the median frame time — this tool’s rule, not an industry standard
Reference budget
60 Hz ≈ 16.7 ms · 120 Hz ≈ 8.3 ms · 144 Hz ≈ 6.9 ms · 165 Hz ≈ 6.1 ms per frame
Ceiling
Bound by the display refresh rate and vsync; a 60 Hz panel cannot show more than 60 rendered frames per second
Cannot measure
In-game FPS, GPU utilization, or a monitor’s rated Hz
Data
All samples stay in the browser tab; nothing is uploaded or stored

What does an FPS tester actually measure?

It measures the render loop, not the panel. Each time the browser is ready to paint a frame, requestAnimationFrame fires; the gap between two callbacks is the frame time. Dividing 1000 by that gap gives the frame rate for that moment. Averaging those intervals produces the FPS number most counters show, while the distribution shows how consistent the delivery is. Two devices can both report 60 FPS, yet one delivers every frame in a steady 16.7 ms and the other alternates 8 ms and 25 ms — the second one visibly stutters even though the average is identical.

This is a different question from how often the display redraws. To measure your panel's Hz, use the dedicated refresh rate tool; that value is a hardware and link property, while the number here is what the current browser tab managed to draw. Effective smoothness is capped by whichever of the two is lower.

Why is 1% low more useful than average FPS?

The slowest 1% of frames are where hitches live: a garbage-collection pause, a texture upload, a background tab waking up. A single 50 ms frame barely moves a 60-second average, but you notice it as a jerk. Reporting the average frame rate of that slowest slice, together with a dropped-frame count, makes those spikes visible. On this page a dropped frame is any frame whose time exceeds 1.5 × the median frame time in the sample — that threshold is this tool’s own rule for highlighting outliers, not a standardized benchmark definition.

Read the histogram with the same idea. Bars under roughly 20 ms are drawn in green; slower frames turn red. A tall stack of green bars is a steady render loop. A scattering of red bars clustered at regular intervals usually means background work competing for the main thread rather than a weak GPU.

How do the three render loads change the result?

Light, medium and heavy load differ only in how many moving shapes the canvas draws each frame. Switching between them does not reset the sample, so you can watch the numbers respond as the workload rises. Light load mostly reflects the browser’s own overhead. Heavy load pushes enough draw calls that weaker integrated GPUs and throttled laptops begin to miss the frame budget; that is the point where average FPS drops and the 1% low usually falls faster than the average.

Test in a single visible tab with other GPU-heavy tabs closed, and let each load run for at least ten seconds. Laptops on battery, browser power-saving modes and display scaling all change the outcome, so compare results on the same device under the same conditions rather than against a number from someone else’s machine.

Can a browser FPS test tell me my monitor refresh rate?

Not reliably. Because rendering is synchronized to the display, the measured rate often lands near the panel’s cadence, but it is an observed ceiling rather than a hardware identifier. A 144 Hz display running in a 60 Hz mode, a browser with vsync disabled, or a tab on a secondary monitor can all produce misleading numbers. Treat the Hz figure in the panel-side tool as the authoritative one, and treat the number here as a description of this tab’s rendering performance.

Frame budget by display refresh rate

Refresh rateFrame budgetWhat a steady render loop looks like
60 Hz16.7 msNearly all bars green, average close to 60 FPS
120 Hz8.3 msTight cluster near 8 ms; red bars appear under load
144 Hz6.9 msSmall headroom; background work causes visible spikes
165 Hz6.1 msRequires a light page and an unthrottled GPU

How to measure rendered frame rate in three steps

  1. Open a clean tab — Close GPU-heavy tabs, keep this page visible, and let the sampler fill its 300-frame window.
  2. Record the light-load baseline — Note current and average FPS, 1% low, and how many red bars appear in the frame-time histogram.
  3. Raise the load — Switch to medium and then heavy, wait ten seconds each, and compare how fast 1% low falls relative to average FPS.

Часто задаваемые вопросы

What is an FPS tester used for?+

It measures how many frames a browser tab renders per second and how consistent the frame times are. It is useful for spotting stutter, comparing render loads on one device, and checking whether a page meets its frame budget — not for reading a monitor specification.

What is 1% low FPS?+

It is the average frame rate of the slowest 1% of frames in the sample. It exposes brief hitches that a long-run average hides, which is why it often predicts perceived smoothness better than average FPS.

Why is my measured FPS lower than my display Hz?+

The page may be too heavy for the current GPU, the browser may be throttling a background tab, or the device may be in a power-saving mode. Rendering is also synchronized to the display, so the panel cadence acts as an upper bound rather than a guaranteed result.

Does this measure game performance?+

No. It measures this browser tab’s canvas render loop. Game engines, drivers and full-screen exclusive rendering are outside what a web page can observe.

Are the results uploaded or saved?+

No. Frame times are collected in memory, displayed in the page, and discarded when you leave. There is no account, no network request and no stored history.