Free tool

WebGL fingerprint test

See what WebGL tells websites about your graphics card, the hash of a 3D image your browser draws, and whether those values agree with the system your browser claims to run on.

Updated

Your resultsChecking…

Runs in your browser. We read your IP and its location from the request and store nothing.

WebGL is the part of the browser that draws 3D graphics with your graphics card. Websites can read which graphics chip and driver you have, how large a texture the chip supports and which extensions it offers, and they can draw a small 3D scene and hash the pixels that come back. Together these values are a WebGL fingerprint: they say a lot about the hardware under the browser, and they rarely change on their own. This WebGL fingerprint test shows those values for your browser and checks whether they make sense together.

How the test works

Everything runs in your browser. The page:

  1. Creates a WebGL context, the same way a game or a map would.
  2. Reads the graphics vendor and renderer names. Most browsers report the real chip through the WEBGL_debug_renderer_info extension, which has been available across browsers since 2017.
  3. Draws a colored 3D shape, reads the pixels back and turns them into a SHA-256 hash.
  4. Draws the same shape a second time and compares the two hashes.
  5. Reads hardware limits, such as the largest texture size and the list of supported extensions, and hashes them together with the renderer name.

Nothing is sent to our server. The only request this page makes is the normal page load.

Reading your results

Each row gets a colored dot. Green means the value is normal, yellow means it's worth a look, and red means a clear contradiction.

WebGL support

Whether your browser offers WebGL 1 and WebGL 2. Almost every desktop browser has both. A browser with WebGL switched off stands out too, because it's rare.

Graphics vendor and renderer

The name of the graphics chip and the way the browser talks to it. On Windows, Chromium-based browsers usually report a name that contains ANGLE and Direct3D. On Apple Silicon Macs they usually report an Apple chip and Metal. Some browsers shorten or hide this name on purpose.

The test turns this row red when the renderer and the operating system in your user agent can't both be true, for example Direct3D on a browser that says it runs on macOS, or an Apple chip on a browser that says it runs on Windows. It turns yellow for software renderers such as SwiftShader or llvmpipe, which draw graphics without a graphics chip. They're common in virtual machines, servers and headless browsers, and rare on normal computers.

WebGL image hash

A short form of the SHA-256 hash of the 3D test image. Different graphics chips, drivers and browser versions produce slightly different pixels for the same scene, so the hash differs between many computers.

Same image twice

The same scene drawn twice in a row should give exactly the same pixels. If the two hashes differ, something changes the output on every read. Real hardware doesn't do that, so tests treat it as a sign of noise.

Limits and parameters hash

The largest texture size, the largest viewport, the number of extensions and a hash of all of them with the renderer name. These come from the graphics chip and its driver, and they should fit the chip that the renderer row names.

Noise, masking and what testers look for

There are two ways to change a WebGL fingerprint. Masking changes what the browser says, for example reporting a different renderer name. Noise changes what the browser draws, by adding tiny, invisible changes to the pixels a page reads back.

Both can work, and both can backfire:

  • A masked name has to stay believable. A renderer that can't exist on the claimed operating system, or limits that don't fit the claimed chip, is a stronger signal than the real values would have been.
  • Noise has to be stable. If the same drawing gives a different hash on every read, a script only needs to draw twice to notice. Good noise is fixed per profile, so the image hash stays the same for that profile and differs from other profiles.
  • Privacy browsers add noise on purpose. Brave changes canvas, WebGL and Web Audio results with a value that is fixed per site and per session, and Apple announced advanced fingerprinting protection for Safari Private Browsing in 2023. A different hash in those browsers is expected.

What to do about problems

  • Red renderer row. Make sure the operating system your browser reports matches the computer it runs on, or that the graphics name it reports belongs to that system. In an antidetect browser, pick the profile's operating system to match your real one, or mask the graphics card name with a value from the same platform.
  • Software renderer. Turn on hardware acceleration in the browser's settings and update your graphics driver. In a virtual machine, enable 3D acceleration if your virtualization software supports it.
  • Different image twice. Check for extensions that randomize fingerprints on every read, and switch them off for the sites you need.
  • WebGL not available. Hardware acceleration may be off, or a privacy setting may block WebGL. Many websites, maps and editors need it.

Limits of this test

This test shows what WebGL reports and draws in your browser right now. It can't tell you how a particular website weighs these values, and it doesn't keep a database of other visitors, so it can't say how rare your hash is. It also checks only one scene; real fingerprinting scripts may draw several.

WebGL in Multime

Each Multime profile has a seed. With WebGL image noise on, the seed fixes the noise, so a profile draws the same WebGL image every time it opens (unless you choose a new fingerprint on every start), and different profiles draw different images. The graphics card name can be masked or shown as it really is, per profile. You can open this page inside a Multime profile to check what that profile reports, and compare it with the canvas fingerprint test and the full browser fingerprint test.

Frequently asked questions

What is a WebGL fingerprint?

A WebGL fingerprint is the set of values a website can read through WebGL: the graphics vendor and renderer names, hardware limits, supported extensions, and a hash of a 3D image the browser draws. Together they describe the graphics hardware and driver.

Is my WebGL fingerprint unique?

Usually not on its own. Many computers share the same graphics chip and driver, so the same renderer name and image hash appear often. Combined with other details, such as fonts, screen and time zone, it narrows a browser down further.

Why does my WebGL hash change?

Updating your browser or graphics driver can change the pixels a scene produces. Privacy browsers such as Brave also change the result on purpose, per site and per session. If it changes between two draws on the same page, something adds noise on every read.

Can websites see my graphics card?

In most browsers, yes. The WEBGL_debug_renderer_info extension gives the vendor and renderer names of the graphics driver. Some browsers shorten the name or hide it in privacy modes.

What does a software renderer mean?

It means graphics are drawn by the processor instead of a graphics chip. Names like SwiftShader and llvmpipe are typical of virtual machines, servers and headless browsers. On a normal computer it often means hardware acceleration is switched off.

Does this test send my results anywhere?

No. Everything runs in your browser and the results stay on your screen.

Start with 5 free profiles

No card needed. Mac (Apple Silicon) and Windows. Upgrade when you need more profiles or your VAs.

Download freePricing