<- Back to Index

WebGL Fingerprinting

Extracting 3D rendering hardware specifications to identify users.

Profiling the GPU

WebGL is a JavaScript API for rendering high-performance interactive 3D and 2D graphics. While great for web games, it's a goldmine for fingerprinting because it directly interfaces with the user's graphics hardware.

The Data Leaked

A WebGL fingerprint script queries two main things:

  1. WebGL Parameters: Querying constants like maximum texture size, maximum viewport dimensions, and supported extensions.
  2. Renderer String: Asking the browser to reveal the specific GPU model (e.g., ANGLE (Apple, Apple M1 Max, OpenGL 4.1)).

Example Leaked String

GL_VENDOR: WebKit
GL_RENDERER: WebKit WebGL
UNMASKED_VENDOR_WEBGL: Apple
UNMASKED_RENDERER_WEBGL: Apple M1 Max

Why it Matters

Combined with Canvas fingerprinting, WebGL data drastically narrows down the pool of users. While thousands of people might have an M1 Mac, the specific combination of an M1 Max, a specific monitor resolution, and a specific set of installed fonts is highly unique.