FPS Test
Measure completed browser canvas frames under light, high-load, and paced reference workloads. Compare average FPS, frame-time tails, stalls, and local runs—not a game or GPU benchmark.
- Browser-observed
- No device permission
- Optional history in this browser
- No account or upload
Important
- Not equivalent to a local game benchmark. Long frames are browser presentation stalls, not proven GPU drops.
Average FPS (current run)
—
FPS measurement result
- Session
- Ready
- Completion
- —
- Workload
- —
- Run target
- —
- Motion setting
- —
- Source
- —
- Average FPS
- —
- Total drawn frames
- 0
- Measurement frames
- 0
- Measurement duration
- —
- Filtered median interval
- —
- Raw P95 frame time
- —
- Raw P99 frame time
- —
- P99-equivalent FPS
- —
- Long frames (raw)
- 0
- Severe stalls
- 0
- Raw / filtered samples
- 0 / 0
- Excluded estimate samples
- 0
- Stats truncated
- No
- Recorded frame source
- —
- Interrupt
- —
measurement window only (not warm-up)
includes warm-up
completed draws after warm-up
first to last formal frame
typical interval for robust FPS
full post-warmup window
sorted full post-warmup window
1000 / full-window raw P99; not standardized gaming 1% low
slow intervals in the raw window
larger presentation interruptions
full retained window / robust estimate
still retained in raw statistics
full-stat safety cap reached
recorded after each completed draw
Reset and repeat interrupted runs
Frames are recorded only after the canvas workload finishes a draw. Average FPS uses the completed formal post-warmup draw window; the recent-interval chart shows only a short ring. P99-equivalent FPS is 1000 / sorted raw P99 over the full retained window, not a standardized gaming 1% low. Reference 30/60/120 modes pace page draws; they do not prove display support.
Local comparison history
Only runs that finish their selected measurement window are stored in this browser as aggregate summaries. Manual Stop and interrupted runs are not saved. Older entries without full-window identity are labeled legacy. For a useful comparison, keep the same device, browser, display mode, power state, workload, and duration. Raw intervals, frame timestamps, device identifiers, and uploads are not stored.
No completed local runs yet.
How to use
- Choose Light, High-load, or a paced 30, 60, or 120 FPS reference workload, then choose a 3, 5, 10, or 30 second duration.
- Keep this tab visible and the browser window focused. Click Start, then allow the warm-up and formal measurement window to complete.
- Use Light to observe a lightweight canvas animation in the current browser presentation chain. It does not represent game performance.
- Use High-load to add page drawing and calculation work, then compare it with Light in the same browser and conditions. It is not a standardized GPU stress test or benchmark.
- The 30, 60, and 120 FPS reference modes pace requested canvas draws on a target timeline. They cannot force the browser or display to reach the target; a 120 FPS reference can still measure near 60 FPS on a roughly 60 Hz presentation chain.
- Let the selected duration finish for a clean comparison. Click Stop only when intentionally ending early; a partial result freezes but is not saved to comparison history. Start can begin a new clean run, while Reset clears the current result.
- Repeat a surprising result once with the same workload, duration, focus, power, and display conditions before comparing runs. Completed aggregate summaries appear in local history.
What the result means
- Average FPS is the rate of completed canvas draws in the formal post-warm-up measurement window. It is not game-engine FPS or a general GPU performance score.
- The primary FPS shown above and in the result card is the same formal average of completed canvas draws after warm-up; it is not a separate short-window live estimate.
- Total drawn frames counts completed canvas draws including warm-up. It is not the number of physical monitor refreshes.
- Measurement frames counts completed draws after warm-up. Reference pacing requestAnimationFrame ticks that do not draw are not counted.
- Measurement duration is the actual time between the first and last formal measurement frames, so it can differ slightly from the selected nominal duration.
- Filtered median interval is the typical frame interval used for the robust rate estimate: about 33.3 ms is 30 FPS, 16.7 ms is 60 FPS, and 8.3 ms is 120 FPS. It does not certify display refresh support.
- Raw P95 and P99 frame times describe the slower tail of the complete post-warm-up interval window. Higher values mean occasional browser frames were slower, not that a GPU or monitor is faulty.
- P99-equivalent FPS is 1000 divided by the raw P99 frame time from the full post-warm-up window. Some game benchmarks use a different 1% low aggregation, so the numbers are not directly interchangeable.
- Long frames are browser intervals substantially slower than the stable pace. Scheduling, background work, system load, power saving, focus, and the current display pipeline can contribute.
- Severe stalls are larger browser presentation interruptions. Keep the page foregrounded and repeat a single stall before drawing conclusions; it is not proof of hardware failure.
- Raw samples contain the complete retained post-warm-up interval data. Filtered samples are used only for the robust rate estimate; excluded estimate samples remain in raw P95, P99, long-frame, and stall statistics.
- Stats truncated means a long run reached the existing full-stat sample safety cap. Average FPS still uses completed measurement-frame totals, while retained interval statistics cover the capped sample window.
- Workload / source identifies the selected canvas workload and external-frame source. External-frame means the engine records a frame only after the canvas draw completes; reference ticks that do not draw are not counted.
- Interrupt reports a hidden tab, focus loss, or another engine interruption. Reset and repeat an interrupted run before comparing it with a completed result.
- Session and Completion distinguish a full selected window from an early Stop or interruption. Only eligible full-window aggregate results enter local comparison history.
- Workload, run target, and motion setting are captured at Start. If Reduced Motion changes during an active run, the mixed run ends early and must be repeated under the current setting.
- FPS Test measures this page’s canvas workload. Refresh Rate Test estimates browser presentation timing without the same workload; Frame Skipping Test focuses on irregular gaps; Screen Tearing Test is a visual tear-line aid.
- A game benchmark includes a game engine, assets, GPU, CPU, drivers, and settings. This page loads none of those workloads and cannot predict a specific game’s frame rate.
- With prefers-reduced-motion, particles stay visually still and high-load keeps its calculation loop without unnecessary movement or recoloring. Reference modes still measure requested completed draws.
- Fullscreen is a setup option before Start and is locked during warm-up or measurement. A native fullscreen exit or material resize interrupts the run so samples from different surfaces are not mixed.
- Local history keeps aggregate workload, duration, timing, frame-count, stall, truncation, and reduced-motion fields in this browser only. It does not store raw intervals, frame timestamps, device identifiers, or uploads.
Limitations
- Not equivalent to a local game benchmark. Long frames are browser presentation stalls, not proven GPU drops.
Troubleshooting
- Result stays near 60 FPS
- The current browser presentation chain may be near 60 Hz. Check operating-system display settings, external-monitor mode, power saving, and browser compositor conditions; a result near 60 does not by itself mean the tool is wrong.
- 120 FPS reference still shows about 60 FPS
- Reference mode only paces requested page draws. The browser cannot present more completed draws than current scheduling and the display chain allow, and this is not a 120 Hz monitor certification.
- High-load is similar to Light
- The device may complete both workloads within the same presentation limit, which can hide an Average FPS difference. Compare P95, P99, P99-equivalent FPS, long frames, and stalls as well.
- The first run has low FPS or many stalls
- Keep the tab focused, close heavy background tasks, let browser startup activity settle, and repeat once with the same workload and duration.
- Results change after switching tabs
- Browsers throttle hidden or background tabs. Reset and repeat the interrupted run in the foreground instead of comparing foreground and background results.
- Mobile results differ from desktop
- The page adjusts workload for mobile-like devices, and thermal, power, and browser scheduling also differ. Do not treat results as a cross-device performance leaderboard.
- Reduced-motion changes the animation
- The page respects prefers-reduced-motion: particles remain visually still, while High-load retains its calculation work and reference modes retain their draw cadence. This is an accessibility behavior, not a test failure.
- Fullscreen or Wake Lock is unavailable
- The basic FPS test still works. These are browser capability limits and do not change the metric definitions.
- Results look worse on battery
- Power saving, display mode, and system scheduling may change on battery. Compare runs under the same power and display settings.
Related tools
FAQ
What does this browser FPS test measure?
It measures how quickly this browser completes this page’s canvas draws under a selected workload after warm-up. It also reports frame-time distribution, slower-tail estimates, long frames, and stalls.
Is FPS the same as monitor refresh rate?
No. FPS here is the rate of completed page draws. Refresh Rate Test estimates the browser presentation cadence, while a monitor’s advertised maximum is a separate hardware specification.
Is this a GPU or game benchmark?
No. High-load adds page-level drawing and calculation work, but this is not a standardized GPU test and does not load a game engine, assets, drivers, or game settings.
Why does the result stay near 60 FPS?
The current operating-system, browser compositor, display mode, power state, and presentation chain may schedule near 60 Hz. That ceiling can affect every workload.
Why does 120 FPS reference not reach 120 FPS?
The reference workload only paces when the page requests completed canvas draws. It cannot force the browser or display chain to present 120 frames per second or prove 120 Hz support.
What is P99-equivalent FPS in this test?
DeviceMetrik calculates it as 1000 divided by the raw P99 frame time over the complete retained post-warm-up window. Some game benchmarks call related metrics 1% low but use a different aggregation.
What do P95 and P99 frame times mean?
They are slower-tail browser frame intervals from the raw post-warm-up window. P99 represents a more extreme slow tail than P95; neither value alone diagnoses a GPU or display fault.
What are long frames and severe stalls?
They are slower browser intervals and larger presentation interruptions detected in the raw window. Scheduling, load, power state, focus, and the display pipeline can all contribute.
Why is High-load similar to Light?
Both may fit below the same browser or display presentation ceiling. Compare tail frame times, P99-equivalent FPS, long frames, and stalls instead of relying only on Average FPS.
Can this test predict FPS in a specific game?
No. A game’s engine, scenes, assets, CPU and GPU work, drivers, resolution, and settings are not reproduced by this page.
Why do results change when the tab is in the background?
Browsers commonly throttle background animation and the engine interrupts on visibility or focus loss. Reset and run the page in the foreground for a comparable result.
Does DeviceMetrik upload FPS or device data?
No. Frame timing, workload results, and session metrics are processed locally in this browser page and are not automatically uploaded.