What Is a GPU Tester?
A GPU tester examines the graphics interfaces that your browser can use and runs an optional graphics workload. This page reports browser-exposed WebGL capabilities and display properties, checks whether WebGPU is exposed, and measures actual browser animation frame intervals while drawing with WebGL. Results are useful for local troubleshooting and controlled comparisons, but they do not identify every physical GPU or replace a native benchmark.
How to Use the GPU Tester
- Open the page and review WebGL 2/WebGL 1 support, the reported renderer, texture limits, and screen information. If WebGL is disabled, the benchmark will stay unavailable.
- Optionally select Show Available Renderer Details to request any extra device string exposed by your browser. Privacy-focused browsers may hide it.
- Optionally click Check WebGPU Adapter. An exposed WebGPU API does not guarantee an adapter; this check requests an adapter only, not a device.
- Keep this tab visible. Choose a render target, shader load, and a 3- or 5-second measurement. Use 640 × 360 / Standard / 3 seconds as the repeatable baseline.
- Press Start WebGL Benchmark, allow the short warm-up and test to finish, then review measured FPS and median/p95 frame intervals. GPU draw time appears only if a valid timer extension is available.
- Repeat with identical settings to compare changes. Stop cancels partial runs rather than inventing a score. Copy or download the JSON report for your records.
How It Works
The page obtains a WebGL 2 context where possible (falling back to WebGL 1), reads supported GPU-facing limits, and runs a fixed full-screen fragment-shader workload at a known canvas resolution. Browser requestAnimationFrame timestamps give observed frame intervals; their median and 95th percentile summarize pacing. Optional WebGL 2 disjoint timer queries, when supported and valid, can estimate the GPU time spent on draw commands without blocking for a synchronous readback.
WebGPU support is inspected separately using navigator.gpu and—only when requested—requestAdapter(). No WebGPU compute or rendering benchmark is performed here. Renderer strings can be generic or privacy-masked. The browser-reported screen.width and screen.height are CSS pixels, and can differ from the monitor's physical panel resolution. The old Canvas 2D “fillrate” approximation has been removed because it was not a valid GPU fillrate measurement.
Understanding Your Results
- WebGL 2 / WebGL 1: “Available” means the browser successfully created the corresponding WebGL context, not that a dedicated GPU was confirmed.
- Renderer: May show a browser abstraction such as ANGLE or a privacy-reduced label. Software rendering is possible even when WebGL works.
- Animation FPS: Observed browser-scheduled frames for this WebGL shader, usually limited by display refresh, CPU scheduling, throttling and power settings. Higher is not a standardized GPU rating.
- Median / P95: Lower frame intervals tend to indicate smoother pacing for the same workload. P95 describes the slower end of observed frames.
- GPU draw time: Shown only for valid optional GPU timer samples. N/A means no trustworthy measurement, not zero time.
- WebGPU adapter: Available means the browser returned an adapter, not that this tool exercised WebGPU or established discrete hardware.
Benefits
- Check WebGL 2/WebGL 1 availability and browser-exposed graphics limits without installing an application.
- Use a consistent, genuine WebGL shader scene to compare browser or power-mode changes on the same system.
- Export repeatable test settings and observed frame pacing in a local JSON report for troubleshooting.
Common Mistakes to Avoid
- Calling frame FPS a GPU fillrate or official score: Browser animation is refresh-rate and scheduling limited. Canvas 2D fills are not graphics card pixel throughput.
- Comparing unmatched settings: Different resolutions, loads, tabs, background tasks or power settings invalidate straightforward comparisons.
- Assuming that a renderer string proves the dedicated GPU: Browsers may mask the GPU model, use a translation layer or fall back to software rendering.
- Running in the background or on an overheated device: Hidden tabs are deliberately cancelled. Take breaks between heavy tests and watch system temperature.
Frequently Asked Questions
Why does it show "Intel" instead of my dedicated GPU?
The operating system may assign your browser to integrated graphics, or the browser might expose only a generic renderer. You can try the OS graphics settings to choose a different GPU for your browser, but the reported label alone cannot confirm which physical GPU performed the rendering.
Is the fillrate number an official benchmark score?
No. This page no longer displays the old Canvas 2D fillrate estimate: it was not a measure of hardware GPU fillrate. The benchmark reports observed WebGL animation FPS and frame intervals for a defined workload; these are not an official or cross-platform GPU rating.
Why is my exact GPU model hidden?
Browsers may restrict detailed WebGL renderer strings as a privacy/fingerprinting protection. The optional renderer-details button only exposes information the browser already allows. Neither WebGL nor WebGPU guarantees that an exact model is available.
Why GPU Identification Can Be Confusing in Browsers
A computer can have integrated and dedicated GPUs, while the browser exposes a renderer interface rather than an authoritative hardware inventory. ANGLE, software rasterizers, virtual machines and privacy features further complicate labels. For exact driver and hardware details, cross-check your operating system's graphics panel or device manager. Browser benchmarks are best used for controlled comparisons on the same machine, browser, workload and display conditions.
Conclusion
Use this GPU Tester to check browser graphics capabilities and run an actual WebGL rendering workload with transparent limitations. For a broader diagnosis, combine the results with the Refresh Rate Test and CPU Benchmark. If WebGL is unsupported, that does not necessarily mean your graphics hardware is faulty.