Back to all posts

Detection · Sep 25, 2026 · 5 min read

Browser fingerprinting: what 12 check groups read from a browser

What browser fingerprinting reads, which values have to agree with each other, why a random value stands out, and how to check your own browser.

DG
Pixel art of a wide snowfield in a mountain valley at blue hour with one line of footprints leading toward the treeline

In short

Browser fingerprinting reads the values a page can query, from canvas pixels and the graphics card to fonts, speech voices, screen, timezone and user agent, and compares them against each other. A value shared with many machines is ordinary; a contradiction between two values is not. When one of our persona builds listed 59 font families while the renderer still drew all 187 on the machine, one comparison exposed it. Our public check page counts contradictions across 12 check groups instead of scoring how unique a browser is.

A page that wants to know who is visiting does not need a cookie. It can read the graphics card, the fonts, the screen and the language settings, and in most cases the combination is enough to recognise a browser again. For an AI agent the more urgent question is the reverse one: whether those values describe a machine that could exist. This guide walks through what a fingerprint reads and which values have to agree with each other.

What is browser fingerprinting?

Browser fingerprinting is the practice of reading values a web page can query, without asking and without storing anything, and combining them into a description of the device. Two things carry the name: the activity of reading and comparing, and the set of values that comes out of it. The research project AmIUnique, maintained at Inria by "a team of researchers, who investigates the software monocultures and software diversity on the web", shows visitors their own fingerprint; companies such as Fingerprint sell the same reading as a service for fraud and bot detection.

Which values does a fingerprint read?

A fingerprint reads values from the drawing stack, the operating system and the network, and each of them has to agree with at least one other value. The table lists the eight surfaces a checker compares most directly.

SurfaceWhat a page readsMust agree with
Canvasa hash of pixels read back after drawingthe graphics card and its driver
WebGLvendor and renderer stringsthe pixels the same card draws
Fontsthe list of installed font familiesthe fonts text is actually drawn with
Speech voicesthe list from speechSynthesisthe operating system and the browser brand
Screensize, available area, pixel ratiothe window and the desktop around it
Timezonethe time zone and its offsetthe location of the IP address
User agentChrome version and platformclient hints, the TLS handshake, the engine's features
Languagethe Accept-Language header and navigator.languageseach other and the IP address's country

Why does coherence matter more than uniqueness?

Coherence matters more because a value shared with many machines is ordinary, while a value that contradicts another one exists on no machine at all. We learned this on canvas. We gave each profile its own canvas by adding a small seeded offset to every pixel read back, and five of five profiles on one machine got distinct hashes. A public checker flagged the canvas as manipulated anyway, because no graphics card draws a flat region with that kind of variation. The honest value, shared by every machine with the same card and driver, drew no flag. The guide to canvas fingerprinting shows both readings side by side.

A checker therefore does not need to know what your values should be. It only needs to put two of them side by side, and that is also how a fingerprint feeds bot detection: it is one of four detection layers, and a contradiction on it adds to a score that the connection, the control plane and the input feed as well.

What does a graphics card give away?

A graphics card gives away its name through WebGL and its identity through the pixels it draws, and a checker compares the two. A browser without a graphics card draws in software, and Kernel's own bot detection documentation describes the result: "Software-rendered browsers produce pixel hashes that don't match any real consumer GPU, which is a strong bot signal on sites with rendering-based fingerprinting." A renderer string that names a real card over software-rendered pixels is a contradiction of the same kind.

What do fonts and voices give away?

Fonts give away the machine through two separate readings: the list a page can enumerate and the fonts it can draw with. On 12 September 2026 we compared both on one Windows machine for four browsers.

BrowserFamilies listedDrawable but not listed
real Chrome 153187none
Chrome for Testing 151187none
our 151 engine, no persona187none
our 151 engine with a persona font list59130
Source: Scalebrowser engine axes bench, one Windows host, 4 browsers on the same page, 12 September 2026

The persona list claimed one set of fonts while the renderer drew from another, and a page that measures both sees it in a single comparison. We withdrew the list; the engine now lists the machine's own fonts. Speech voices follow the same logic over time: real Chrome on Windows reports 0 voices when the page loads, then 40, of which 21 come from the operating system and 19 are Google's network voices. A list that is complete at page load, or that lacks the local voices, describes no real Chrome.

What does the user agent give away?

The user agent gives away the browser version, and a version can be wrong in two directions: spoofed away from the engine, or frozen while real Chrome moves on. On 10 September 2026 our newest engine was Chrome 151 while real Chrome on the same machine was already 153.0.8010.37. The version string, the client hints and the TLS handshake all come from the engine, so changing one of them alone creates a contradiction with the others.

Scalebrowser gives each agent its own isolated browser with a persistent identity, on your own machine, so a run stays signed in, handles the captcha and finishes without anyone watching it.

Start the 7-day trial

Where can you test a fingerprint?

Test a fingerprint by comparing it with a browser you trust on the same machine, not by reading a score from one of the fingerprint test sites in isolation. Open our account-free check page once in the browser your agent uses and once in your everyday Chrome: it reads 12 check groups and marks every group in which two values contradict each other. The test your setup page of the documentation lists the other ways to measure, including an audit that runs a profile against real detector sites.

Run it on your own machine

Seven days to try it with your own agents on your own sites. Starting the trial needs a card.

Start the 7-day trial
DG

Davide Grasböck

Founder, Scalebrowser

Builds Scalebrowser, the browser layer for AI agents that runs on your own machine. Measures every change a web page could observe against a real browser before it ships, and writes up the ones that turned out wrong.