Free Frame Rate Test for Browser FPS, Frame Time, Jank, and 1% Low
This frame rate test measures requestAnimationFrame performance while animating a configurable workload, separating browser rendering FPS from the monitor refresh-rate estimate.
Run the live browser test
12 practical features in this frame rate test
5/10/20-second test durations
Built into this page as an interactive or diagnostic capability, not just a static explanation.
Light/medium/heavy workloads
Built into this page as an interactive or diagnostic capability, not just a static explanation.
Animated canvas sprites
Built into this page as an interactive or diagnostic capability, not just a static explanation.
Average FPS
Built into this page as an interactive or diagnostic capability, not just a static explanation.
Median FPS
Built into this page as an interactive or diagnostic capability, not just a static explanation.
1% low FPS estimate
Built into this page as an interactive or diagnostic capability, not just a static explanation.
P95 frame time
Built into this page as an interactive or diagnostic capability, not just a static explanation.
P99 frame time
Built into this page as an interactive or diagnostic capability, not just a static explanation.
Jank count over 50 ms
Built into this page as an interactive or diagnostic capability, not just a static explanation.
Frame-time jitter
Built into this page as an interactive or diagnostic capability, not just a static explanation.
Live frame-time chart
Built into this page as an interactive or diagnostic capability, not just a static explanation.
Local benchmark history and export
Built into this page as an interactive or diagnostic capability, not just a static explanation.
How to read the diagnostic signal
| Signal | Useful interpretation | Important limitation |
|---|---|---|
| Stable repeat result | More useful for comparison than a single isolated sample | Still depends on the current browser, OS, and device state |
| Large change after one controlled adjustment | Good clue that the changed variable matters | Correlation is not always proof of root cause |
| Missing or inconsistent browser event | Useful troubleshooting evidence | Does not electrically inspect hardware components |
| Exported session summary | Helps compare before/after changes | Only as good as the test conditions you record |
Worked example: run the same test twice, change one relevant setting, then repeat it. A consistent change across repeated runs is more informative than a single isolated number.
Six short lessons for better testing
Control one variable
Keep device settings, browser zoom, and test mode constant before comparing results.
Repeat the measurement
One run can be noisy. Repeat the same test and look for a stable pattern.
Separate browser from hardware
Browser events are useful diagnostics, but they do not expose every firmware or electrical detail.
Use the right metric
Choose timing, accuracy, count, support, or geometry metrics that match the problem you are investigating.
Record context
Save the device, connection type, relevant settings, and test condition with any result you compare later.
Interpret, do not overclaim
Treat the page as a practical diagnostic aid rather than a laboratory certification instrument.
Complete the diagnostic workflow
Three-question diagnostic quiz
Recent saved milestones on this device
Continue without a dead end
Free Frame Rate Test for Browser FPS, Frame Time, Jank, and 1% Low: FAQ
How is this different from a refresh rate test?+
Refresh rate estimation asks how often animation frames are scheduled. This frame rate test adds rendering work and measures how smoothly the browser sustains frames under that workload.
What is 1% low FPS?+
It summarizes the slowest one percent of frame times as an FPS-style number. It is a useful stutter indicator, not a universal benchmark standard.
Why does backgrounding the tab change results?+
Browsers throttle requestAnimationFrame in background or hidden tabs to save resources.
Can this benchmark my GPU?+
Only indirectly. Browser rendering uses multiple subsystems, and the workload here is intentionally lightweight and not a standardized GPU benchmark.
Why can FPS exceed or match refresh rate?+
requestAnimationFrame is usually synchronized to display presentation, so sustained values generally cluster around the browser-visible refresh cadence rather than running freely like an uncapped game loop.
Use the result responsibly
This tool reports what a browser can observe or calculate in the current environment. Firmware, drivers, operating-system processing, permissions, transport, display timing, audio hardware, device design, and browser implementation can add behavior that this page cannot isolate.
External technical reference: MDN: requestAnimationFrame ↗.