Graphics Layer
WebGL Fingerprinting: The GPU Identifier Trackers Love
WebGL reveals your GPU vendor/renderer, supported extensions, and capability limits. Combined with canvas and headers, it becomes a stable hardware signature that bot detection and fraud systems lean on.
Vendor & rendererExtensions entropyShader precision
How WebGL exposes you
- Unmasked renderer via
WEBGL_debug_renderer_infoleaks the exact GPU model (e.g., NVIDIA RTX 3080 Laptop). - Extensions list (ANTIALIAS, WEBGL_lose_context, etc.) forms a high-entropy vector tied to drivers.
- Capabilities like max texture size, varying vectors, and shader precision differ per GPU/driver stack.
- Performance profiling (DrawnApart research) can distinguish GPUs in <200ms using timing side channels.
Signals fraud systems watch
- Software renderers (SwiftShader/LLVMpipe) → headless/VM risk.
- Mismatched GPU vs User-Agent/Client Hints (e.g., mobile UA + desktop GPU).
- Inconsistent canvas hash vs WebGL renderer (spoofing but not aligned).
Legit uses
- Detecting incompatible devices for WebGL-heavy apps.
- Graphics capability gating for games/editors.
- Anti-cheat / anti-bot telemetry.
Defense Playbook
- Standardize: Tor RFP and Firefox privacy.resistFingerprinting clamp WebGL to generic values and require permission prompts for readbacks.
- Spoof consistently: If you claim Intel UHD 620, return UHD 620-consistent limits, extensions, and canvas hash.
- Avoid software renderers: Headless/SwiftShader is a loud signal. Prefer GPU passthrough or real devices.
- Align with headers & fonts: GPU model should match OS reported in UA/Client Hints and available fonts.
Run the WebGL Fingerprint Test then compare with your Canvas and Headers results. Consistency beats randomness for production anti-detect setups.
GPU Consistency Checklist
- Renderer string matches OS/UA (no RTX 4090 on iPhone UA).
- Canvas hash aligns with WebGL vendor (same GPU family).
- Client Hints (Sec-CH-UA-Platform, model) not contradicting GPU.
- No missing critical extensions (OES_texture_float) for claimed GPU class.
- Stability across reloads; avoid per-request randomization unless all vectors randomize.
Check your WebGL fingerprint now
Get vendor/renderer, extensions, shader precision, and hash instantly.