Engineering Reference · Browser Graphics & Audio APIs

How Canvas 2D, WebGL & AudioContext Fingerprinting Work

Hardware Browser Fingerprinting characterizes a client environment by measuring deterministic subpixel differences in GPU shader precision, OS font hinting, and floating-point audio DSP buffers — operating completely independently of HTTP cookies.

While HTTP cookies store arbitrary state labels inside a local profile folder, graphics and localization APIs query the underlying host platform directly. You can inspect your live hardware digest using our Odcisk Przeglądarki.

1. Canvas 2D Subpixel Anti-Aliasing

When a browser executes ctx.fillText() across serif fonts, mathematical glyphs, and alpha-blended arcs, rasterization passes through DirectWrite (Windows), CoreText (macOS), or FreeType (Linux) and hardware GPU shaders. Edge pixels differ by 1–2 RGB levels across GPU families, producing a deterministic FNV-1a or SHA digest.

2. WebGL Renderer & Shader Precision

Through WEBGL_debug_renderer_info, web applications inspect the graphics driver string (such as Apple Metal, NVIDIA Direct3D11, or Mesa Vulkan), maximum texture dimensions, and extension capabilities — essential for diagnosing cross-platform rendering issues.

3. OfflineAudioContext DSP Profiling

Rendering a silent 44.1 kHz triangle oscillator through a dynamics compressor reveals subtle floating-point rounding differences across CPU architectures (x86_64 vs ARM64) and browser engines.

Często Zadawane Pytania (FAQ)

Why do two identical browsers on different laptops produce different Canvas hashes?
Browsers delegate Bezier curve anti-aliasing and font hinting to the host OS graphics subsystem and GPU hardware shaders. Even a single-bit difference on an edge pixel changes the resulting FNV-1a / SHA digest.
Why check alignment between Intl TimeZone and navigator.languages?
In cross-regional QA and remote desktop workflows, mismatched system timezones and language headers frequently cause subtle date, number, and regional formatting bugs in web applications.
When is navigator.webdriver set to true?
Per the W3C WebDriver specification, browsers expose navigator.webdriver = true when controlled by automated testing frameworks such as Playwright, Selenium, or Cypress.