Skip to content
WebGL fingerprint

WebGL fingerprint test — your GPU is a tracking signal

The WebGL surface in any browser fingerprint test is the most direct hardware signal a website can read. Through the WEBGL_debug_renderer_info extension, browsers expose a string like "ANGLE (Apple, Apple M1 Pro, OpenGL 4.1)" — your exact GPU model, OS graphics backend, and driver vintage in one line.

Live test

This card runs only the webgl fingerprint probe. To run all six fingerprint surfaces at once, use the full browser fingerprint test.

WebGL / GPU fingerprint
measuring…

WEBGL_debug_renderer_info exposes your exact GPU vendor + renderer string. ANGLE backends, Apple M-series, NVIDIA generations are all distinguishable.

Block this surface in your browser

Browser Leaks Fingerprint Shield is a free Chrome extension that spoofs canvas, WebGL, plugins, and WebRTC out of the box. Install it, refresh this page, and watch the hash above change.

Add to Chrome — Free
What is a WebGL fingerprint?

What is a WebGL fingerprint?

A WebGL fingerprint is a composite of GPU-related strings exposed by the WebGL JavaScript API: the vendor (e.g. Google Inc. (Apple)), the renderer (e.g. ANGLE (Apple, Apple M3 Max, Metal)), the GLSL shading language version, the maximum texture size, and the supported extensions list. Together these encode roughly 6–10 bits of entropy on a typical desktop, but combined with canvas and audio they push a fingerprint past 25 bits — uniquely identifiable.

How the WebGL test works

How the WebGL test works

The test creates a tiny WebGL context, requests the WEBGL_debug_renderer_info extension, and reads UNMASKED_VENDOR_WEBGL + UNMASKED_RENDERER_WEBGL via gl.getParameter(). It also gathers the texture-size limits and the full supported extensions list — the combination of all of these is hashed.

Different browsers ship different ANGLE backends: Chrome on macOS uses Metal, Chrome on Windows uses Direct3D 11, Chrome on Linux uses OpenGL or Vulkan. Even on identical hardware these produce different renderer strings, which is one reason the WebGL fingerprint is so reliable.

How to block WebGL fingerprinting

How to block WebGL fingerprinting

Disabling WebGL breaks any site that uses 3D, maps, or video filters. The right defense is to return plausible-but-fake vendor + renderer strings via a content script that overrides WebGLRenderingContext.prototype.getParameter(). The replacement strings must match a real Chrome-on-Windows or Chrome-on-macOS configuration, otherwise anti-bot stacks flag the mismatch.

Browser Leaks Fingerprint Shield ships three platform presets — Windows / macOS / Linux — each with a coherent GPU string that matches the rest of the spoofed identity (User-Agent, Sec-CH-UA-Platform, Sec-CH-UA-Arch). Refresh this page after installing to see the strings change.

FAQ

WebGL fingerprint questions

Why does my WebGL test show a different GPU than I expect?
Chrome uses ANGLE — a translation layer between WebGL and the OS native graphics API. So even on Apple Silicon, you might see "ANGLE (Apple, Apple M3 Max, Metal Renderer)" rather than just "Apple M3 Max". This is normal.
Can a website read my GPU without WebGL?
They can read partial GPU information via WebGPU (the new API) and via CSS rendering timing, but WEBGL_debug_renderer_info is by far the most direct path — and the only one that returns plain-text vendor and renderer strings.
What is "ANGLE" in the WebGL renderer string?
ANGLE (Almost Native Graphics Layer Engine) is Google's WebGL implementation. On Windows it translates WebGL calls to Direct3D 11. On macOS, to Metal. On Linux, to OpenGL or Vulkan. The ANGLE prefix in the renderer string identifies which backend Chrome is using.
Does private browsing change my WebGL fingerprint?
No. Incognito and private windows produce the same WebGL strings as a normal browser session. WebGL fingerprinting works in incognito.

Run the full browser fingerprint test.

See your composite hash across all six surfaces — canvas, WebGL, audio, WebRTC, Client Hints, and User-Agent — in one click.

Open the browser fingerprint test →