What Is a Canvas Performance Test?
This tool genuinely renders an increasing number of moving shapes to an HTML5 Canvas element, measuring your browser's real frame rate as rendering load increases, and calculating actual draw operations completed per second - shapes drawn times frames rendered, both real numbers from real rendering work. This reflects your device's actual 2D rendering throughput, relevant to canvas-based games, data visualizations, and any interactive graphics that rely on this same rendering path.
How to Use the Canvas Performance Test
- Click "Start Benchmark."
- Watch as more shapes are genuinely added to the canvas roughly every 400 milliseconds, over 15 seconds.
- Watch "Real FPS" and "Draw Ops/Second" update as the workload increases.
- Check "Peak Before Slowdown" to see the highest shape count your browser sustained at 50+ fps.
How It Works
This tool maintains a real, growing list of shape objects, each with genuine position and velocity
values that update every frame. On every requestAnimationFrame callback, it actually redraws
every shape at its current position using real Canvas 2D drawing calls (arc() and
fill()), then measures the real time elapsed to calculate genuine frames per second. Draw
operations per second is calculated directly as measured FPS multiplied by the actual current shape count -
real rendering throughput, not a theoretical estimate.
Understanding Your Results
- High peak shape count with FPS staying near 60 - your device handles substantial 2D canvas rendering load smoothly, which bodes well for canvas-heavy games or visualizations.
- FPS drops noticeably as shape count grows - expected at some point for every device; the specific shape count where this happens indicates your practical rendering capacity for this kind of workload.
- Draw Ops/Second plateaus even as shape count keeps growing - a sign you've reached your device's genuine rendering throughput ceiling for this type of operation.
- Lower results than expected for a capable device - check for other demanding applications or browser tabs running simultaneously, since they compete for the same rendering resources.
Browser Limitations
This test measures 2D Canvas API performance specifically, which is typically handled somewhat differently from WebGL-based 3D rendering - a device can perform very differently across the two rendering paths. Results reflect performance within this specific browser tab and are affected by browser rendering optimizations, hardware acceleration settings, and general system load at the time of testing.
Common Mistakes to Avoid
- Running the test with other GPU-intensive tabs or applications open - for a clean baseline, close other demanding applications first, since they compete for the same rendering resources.
- Comparing results across very different screen sizes without noting it - a larger canvas area genuinely requires more rendering work per shape, which can affect comparisons between devices with different display sizes.
- Expecting canvas performance to predict WebGL or 3D game performance directly - 2D canvas and 3D WebGL rendering use different underlying pipelines and can perform quite differently on the same hardware.
Frequently Asked Questions
What does "Draw Ops/Second" actually represent?
It's your measured frame rate multiplied by the current number of shapes being drawn each frame - a genuine measure of total rendering work completed per second, not a theoretical maximum.
Why does the shape count keep increasing during the test?
The test intentionally ramps up workload over time to find the point where your device's rendering performance starts to genuinely decline, revealing your practical capacity rather than just a fixed light load.
Does this test my GPU or my CPU?
Both play a role - Canvas 2D rendering can be hardware-accelerated by your GPU in most modern browsers, but the JavaScript managing shape positions and draw calls runs on the CPU, so overall results reflect both working together.
Is any performance data collected or sent anywhere?
No, all rendering and timing measurement happens locally in your browser for the current test only and is never transmitted or stored.
Why might my results differ between browsers on the same device?
Different browsers can implement Canvas rendering optimizations differently, leading to genuinely different performance even on identical hardware.
Conclusion
This gives you a real, practical sense of your device's 2D rendering capacity under genuinely increasing load, relevant for canvas-based games and visualizations. For a broader look at animation smoothness specifically, pair this with the Animation FPS Test.