Stress / 02

WebGL benchmark.

A rotating mesh of solid-colour triangles. We start at 10 000 triangles and double until your GPU drops below 60 fps — then report the maximum count it sustains. A modern dGPU passes 5 million; integrated graphics sits around 500 000; phones around 100 000.

Notes

Triangles use a single draw call with `gl.drawArrays(TRIANGLES, ...)` and a trivial vertex / fragment program — no textures, no overdraw. So we measure raw vertex pipeline + rasterizer throughput, not shader complexity. The WEBGL_debug_renderer_info extension exposes vendor / renderer when permitted, otherwise we fall back to UNMASKED extensions.

— triangles
— fps · — ms/frame
Max sustained @ 60 fps
—
triangles
Effective tier
—
Vendor
—
Renderer
—
Frequently asked

How does the WebGL GPU benchmark measure throughput?

We render a rotating mesh of solid-colour triangles and double the count every few seconds. Each frame we measure GPU time via requestAnimationFrame deltas. When the frame time exceeds 16.6 ms (the 60 fps threshold), we stop ramping and report the last sustained triangle count. The number reflects vertex transform throughput, draw-call overhead, and fragment fill rate combined — a holistic GPU score rather than one isolated metric.

What is a good triangle count for my device?

Desktop discrete GPUs (RTX, Radeon) routinely sustain 5-10 million triangles. Integrated Intel Iris or AMD Vega laptop graphics land around 300k-800k. Modern flagship phones (A17, Snapdragon 8 Gen 3) hit 150k-300k. Anything under 50k on a 2023+ device suggests software rendering, a driver fallback, or a browser running on the CPU rather than the GPU.

Why does the vendor or renderer say SwiftShader or ANGLE?

Browsers wrap WebGL through ANGLE (which translates GL to DirectX or Metal) for compatibility, so seeing ANGLE is normal on Windows and macOS. SwiftShader is different — it is a software rasterizer used when the real GPU is blocklisted or unavailable. If you see SwiftShader, enable hardware acceleration in browser settings or update your graphics driver to unlock 10-100x more performance.

Does WebGL benchmarking damage my GPU?

No. The test runs well within the operating envelope of any GPU and stops automatically when frame time degrades. You may hear fans spin up because the GPU is at full load for 10-30 seconds — that is expected. Phones may feel warm but will throttle gracefully long before any thermal limit is reached. The benchmark is safer than playing a graphical game for the same duration.

Why are mobile results so much lower than desktop?

Phone GPUs are tile-based renderers optimized for power efficiency, not raw triangle throughput. They also share memory bandwidth with the CPU and run at one-tenth the wattage of a desktop card. A flagship phone GPU delivering 200k sustained triangles is performing at roughly the same efficiency-per-watt as a desktop GPU hitting 8 million.

Where else can I push my hardware in the browser?

Combine this with the CPU benchmark to see combined SoC load, and the Battery discharge tool to translate that load into projected runtime. For input-side testing, the Multi-touch tool checks whether your display panel can keep up with the GPU output frame rate.