On this page
Stress My GPU
Push your GPU with a real WebGL2 ray-marching load and watch FPS, frame time and stability hold up — or drop off.
- Available — Live on this site right now.
- Browser Tool — Runs in the browser you are reading this in.
- No Install — Nothing to download, no extension, no account.
- Client-Side — Runs entirely on your device. No test data is uploaded.
This page explains the tool. The tool itself is one click away and needs no sign-in.
Open Stress My GPUWhat is this tool?
Stress My GPU runs a genuine, heavy WebGL2 workload and reports how your graphics card copes. It ray-marches signed-distance scenes — a sphere-and-torus, a twisted gyroid lattice or a quaternion Julia fractal — through GLSL 3.00 ES shaders, then adds a multi-pass post stage (chromatic aberration and multi-tap bloom) so the pixel cost is real, not faked.
Every number on screen comes from timing real rendered frames with performance.now(). The engine explicitly never fabricates temperature, power, clock speed or utilisation — those sensors are not reachable from a browser, so the tool measures frame pacing instead and is honest about it.
You pick how hard to push: a preset (light, medium, heavy, extreme, or custom), a render scale from 0.5x to 1.5x, a shader-complexity slider, a scene, the number of post passes and how long to run. Heavier settings raise the per-pixel and per-step cost, which is what makes the frame rate fall on a weaker card.
How to use it
- Choose a preset or go customLight (0.75x, 30s), Medium (1.0x, 60s), Heavy (1.25x, 120s) and Extreme (1.5x, 300s) set render scale and duration together. Custom unlocks the individual controls below.
- Tune the loadRender Scale super-samples the canvas; Shader Complexity (1-5) drives the noise detail and ray-march step cap; Scene picks torus, gyroid lattice or Julia fractal; Render Passes (1-3) adds the aberration and bloom stages. Higher is heavier.
- Run it and leave the tab focusedStart the test and keep the tab in the foreground. There is no background-tab pause here, so switching away can distort the frame times. A duration of 0 runs continuously until you stop.
- Read the live metrics and the sustained-load summaryWatch current and average FPS, 1% low, frame time, jitter and stability while it runs. When it finishes, the sustained-load analysis compares the start, middle and end of the run to show whether performance held.
What the results mean
FPS, frame time and 1% low
Current FPS comes from the last 60 frame times; average FPS from the whole run; the 1% low is the mean of the slowest 1% of frames expressed as an FPS, which exposes stutter that the average hides.
Jitter and stability
Jitter is the mean absolute difference between consecutive frame times; stability is clamped(100 − jitter × 6.5) as a percentage. High stability means smooth pacing; a low figure means the frame rate is uneven even if the average looks fine.
Frame drops
A frame is counted as dropped when its interval exceeds 25 ms. A rising drop count under load is the clearest sign the card is at its limit for the chosen settings.
Sustained-load analysis
Average FPS and frame time are compared across three windows — initial (0-20%), mid (40-60%) and final (80-100%) — and a performance-change percent is computed as (finalFps − initialFps) / initialFps. A drop over about 8% is flagged.
What it can detect
- Whether your GPU sustains a heavy shading load or falls off over time
- How much frame rate you lose as render scale, shader complexity and post passes climb
- Stutter and uneven pacing, through the 1% low and jitter figures rather than the average alone
- A performance drop across a long run, which on real hardware often points to thermal or power limits
Limits worth knowing
A browser can only report what the platform gives it. These are the honest boundaries of this page, so a result is never read as more than it is.
- It cannot read GPU temperature, power draw, core or memory clocks, utilisation or VRAM. Those sensors are not exposed to a web page, so the tool shows them as unavailable rather than inventing them.
- A drop in the sustained-load analysis is a symptom, not a diagnosis. The page states plainly that an in-browser WebGL test cannot directly read thermal or clock-throttling sensors, so it reports the frame-rate change and leaves the cause to you.
- There is no warm-up exclusion here — measurement starts on the first frame, so the very beginning of a run includes shader-compilation cost.
- There is no background-tab pause. Only a per-frame 500 ms guard mitigates a backgrounded tab, so leaving the tab mid-run can distort the numbers.
- Frame rate is capped by your display's refresh rate, because rendering is driven by requestAnimationFrame.
Tips
- Compare only runs with identical settings. Render scale, shader complexity and pass count all change the workload, so a score is meaningful only against the same configuration.
- If you are chasing a suspected thermal problem, use a long Extreme run and watch the sustained-load change percent rather than the instantaneous FPS.
- Keep the tab focused for the whole run; there is no visibility pause, so alt-tabbing away will pollute the frame times.
Troubleshooting
Why does it not show my GPU temperature or power?
A browser cannot read those sensors — they are simply not exposed to web pages. The tool measures frame pacing instead and marks temperature, power, clocks, utilisation and VRAM as unavailable rather than faking them.
My FPS is stuck at 60 (or 120/144).
Rendering is synced to your display via requestAnimationFrame, so the frame rate cannot exceed the refresh rate. Use a higher-refresh display to see higher numbers.
Performance dropped partway through a long run.
That is exactly what the sustained-load analysis is for. A falling final-window FPS often indicates thermal or power throttling on real hardware, but the browser cannot confirm the cause directly — treat it as a strong hint, not a sensor reading.
Ready to run it?
Push your GPU with a real WebGL2 ray-marching load and watch FPS, frame time and stability hold up — or drop off. Nothing to install, and it opens in this browser.