Fingerprint

How your browser can be recognized -- the way it renders graphics and sound, plus your fonts, user agent, and TLS handshake signature.

IP …
Location …
ISP …
ASN …

Canvas Fingerprint

Color key Green — healthy / above target Blue — normal / neutral info Amber — below target, worth a look Red — leak or serious problem Grey — not run yet

How you render pixels can uniquely identify you.

Hash of rendered glyph pixel buffer.

Fix this

WebGL Renderer

Color key Green — healthy / above target Blue — normal / neutral info Amber — below target, worth a look Red — leak or serious problem Grey — not run yet

Your graphics card leaks a unique signature.

UNMASKED_VENDOR + UNMASKED_RENDERER + params hash.

Fix this

Audio Fingerprint

Color key Green — healthy / above target Blue — normal / neutral info Amber — below target, worth a look Red — leak or serious problem Grey — not run yet

Even your sound stack is unique.

OfflineAudioContext oscillator + DynamicsCompressor hash.

Fix this

Installed Fonts

Color key Green — healthy / above target Blue — normal / neutral info Amber — below target, worth a look Red — leak or serious problem Grey — not run yet

The exact fonts on your system reveal your identity.

Text-width probing across a known font list.

Fix this

User Agent

Color key Green — healthy / above target Blue — normal / neutral info Amber — below target, worth a look Red — leak or serious problem Grey — not run yet

What every website sees when you visit.

navigator.userAgent + UA-CH client hints + Accept-Language.

Fix this

TLS JA3/JARM Fingerprint

Color key Green — healthy / above target Blue — normal / neutral info Amber — below target, worth a look Red — leak or serious problem Grey — not run yet

A signature from your very first connection packet.

Cloudflare-provided ja3_hash from TLS ClientHello.

Fix this

Your threat model

How much do you care? Slide to re-weight what counts as a concern -- from "just no obvious leaks" to "zero trackable surface." Same results, your risk tolerance.

How identifiable is your browser?

Every signal below adds identifying information. Toggle the fixable ones -- or simulate a hardened browser -- to see how much more you would blend in.

1 in ~…

An estimate from how much identifying information each signal typically leaks (based on published fingerprinting research such as EFF Cover Your Tracks) -- a rough guide to how trackable your browser is, not a lookup against a real database. "Blocking" a signal here is a simulation to show its effect; to actually block them, use a privacy browser like Brave or Tor.

Canvas Fingerprint

What is this?

The canvas fingerprint is generated by asking your browser to draw a specific string of text and shapes onto an invisible HTML5 canvas, then reading back the raw pixel data and hashing it. The result depends on your GPU, graphics driver, OS font renderer, anti-aliasing settings, and browser build -- each layer contributes tiny sub-pixel differences. Two visually identical images from two different machines produce different hashes. This technique is called "canvas fingerprinting" and has been widely deployed by ad networks and fraud-detection vendors since roughly 2014.

So what?

Canvas fingerprints are one of the most powerful non-cookie tracking signals on the web. They survive incognito mode, cookie clearing, IP changes, and VPN switches, because they measure your hardware and software stack rather than any stored state. Combined with two or three other signals (fonts, WebGL, audio) they routinely identify a specific browser installation with better than 99% accuracy. Even worse, the hash is stable across sites, so any network that collects it can link your activity across everywhere it is embedded.

Now what?

If your canvas hash is stable, switch to Brave (Shields up) or Firefox with privacy.resistFingerprinting=true. For anonymous sessions use Tor Browser.

Deep dive tutorial Canvas fingerprinting: the tracker you can't delete Back to top

WebGL Renderer

What is this?

WebGL is the browser API that lets pages render 3D graphics using your real GPU. As a side-effect it exposes two extension strings -- UNMASKED_VENDOR_WEBGL and UNMASKED_RENDERER_WEBGL -- that reveal the underlying hardware ("NVIDIA GeForce RTX 2060", "Apple M2", "Intel Iris Xe Graphics"). On Windows the renderer string is usually wrapped in "ANGLE(...)" because Chrome and Firefox use ANGLE, Google's translation layer that converts WebGL calls into DirectX so games and 3D sites work without native OpenGL. We strip the ANGLE wrapper and show you the actual GPU underneath.

So what?

Your GPU model is one of the highest-entropy fingerprint signals available: there are hundreds of distinct GPU strings in the wild, and yours narrows you down dramatically. Combined with your screen resolution it often uniquely identifies your machine within your household. Ad networks pair the renderer string with the canvas fingerprint (which also depends on the GPU) to build a stable hardware ID that survives every form of cookie or IP reset.

Now what?

To hide your GPU model, switch to Brave with Shields up, or enable privacy.resistFingerprinting in Firefox.

Deep dive tutorial WebGL fingerprinting: what your GPU reveals Back to top

Audio Fingerprint

What is this?

The audio fingerprint is generated by running a short waveform through the browser's Web Audio API and measuring the exact numeric output of the audio processing pipeline. Small floating-point differences between CPU architectures, OS audio stacks, and browser builds produce a stable hash that identifies your machine -- similar in spirit to the canvas fingerprint but using DSP instead of graphics. No sound is played and no microphone is used.

So what?

Audio fingerprints are quieter than canvas or WebGL fingerprints but just as durable. They are hardware-and-software-dependent, so they survive VPNs, incognito mode, and cookie clearing. Trackers that got burned by canvas-blocking extensions started adopting audio fingerprints around 2016 as a backup signal, and they are now standard in commercial fingerprinting SDKs. Because most users have never heard of the technique, most privacy tools do not block it by default.

Now what?

To block audio fingerprinting, use Brave with Shields up, Firefox with RFP enabled, or Tor Browser.

Deep dive tutorial Audio fingerprinting: tracking you with silent sound Back to top

Installed Fonts

What is this?

This test measures which fonts from a probe list of ~40 common desktop fonts your system has installed. It works by rendering each font name in a hidden element and measuring the resulting text width -- if the font is missing, the browser falls back to a default and produces a different width. The set of fonts on your machine reflects which OS you run, which office suite you have installed, which design tools, which language packs, and any custom fonts you have added. That combination is highly personal.

So what?

Installed font lists are one of the top three fingerprinting signals in the EFF Panopticlick study and every commercial fingerprint SDK. A user with Adobe Creative Suite has a very different font list from a user with only Microsoft Office, and both differ from a fresh Windows install. Cross-referencing the font list with the OS and locale usually narrows a visitor to a few hundred people worldwide -- combined with any other signal, it identifies you specifically. The technique works even when JavaScript font enumeration APIs are disabled, because the width-measurement trick uses only basic DOM APIs.

Now what?

To hide your font list, use Tor Browser, Brave with Shields on Aggressive, or Firefox with privacy.resistFingerprinting=true.

Deep dive tutorial Font fingerprinting: how your installed fonts ID you Back to top

User Agent

What is this?

The User-Agent (UA) header is a string every browser sends on every HTTP request. It declares the browser name and version, the rendering engine, the operating system, and often the CPU architecture. Alongside it modern browsers also send User-Agent Client Hints (Sec-CH-UA-*) which repeat some of this information in structured form, and an Accept-Language header that reveals your preferred languages in priority order. Together these headers describe your software stack in enough detail that servers can decide how to render pages for you -- and how to track you.

So what?

The UA on its own is not unique -- millions of people run "Chrome 138 on Windows 10." But combined with Accept-Language, screen resolution, timezone, and any hardware signal it collapses your anonymity fast. UA strings also leak more than you think: they reveal the exact browser build number (which can identify unpatched machines to attackers), the OS version (which narrows corporate vs personal machines), and in some cases the device model. Accept-Language often reveals more about you than your IP: someone whose UA says "en-US" but whose Accept-Language is "ar,en-US;q=0.9" has just declared their first language.

Now what?

To standardize your UA, use Tor Browser or Brave with Shields up. Trim Accept-Language to a single locale in your browser settings.

Deep dive tutorial User Agent and Client Hints, explained Back to top

TLS JA3/JARM Fingerprint

What is this?

JA3 is a fingerprint of the TLS Client Hello message your browser sends when it opens an HTTPS connection. It hashes the exact list of TLS versions, cipher suites, extensions, and elliptic curves your browser advertises, in the exact order they appear. Different browsers and different browser versions produce different JA3 hashes -- Chrome 138 has one JA3, Firefox 128 has another, Tor Browser has a very specific one. JARM is the server-side counterpart that fingerprints the server rather than the client, but the two are often discussed together. Both operate below the HTTP layer, so no JavaScript is involved and the fingerprint travels with every TLS connection.

So what?

JA3 fingerprints see through most consumer privacy tools. VPNs do not change your JA3 (it is the same TLS library either way). Tor does not change your JA3 unless you use the Tor Browser specifically. Ad-blocking and script-blocking extensions do not touch it. The result is that even sophisticated users who think they are anonymous often have a distinctive JA3 that identifies them across sites. Anti-fraud vendors, bot-detection services (Cloudflare, DataDome, PerimeterX), and state-level censorship systems all use JA3 to distinguish real browsers from scripts, and to correlate the same browser across separate sessions.

Now what?

To make your JA3 blend in, use Tor Browser (identical JA3 across all users), Brave, or Firefox. Extensions and VPNs do not change your JA3.

Deep dive tutorial TLS JA3/JARM: the fingerprint your VPN can't hide Back to top