PowerScan

Browser Fingerprinting: What Sites Actually Read

Browser Fingerprints · 10 min read · by PowerOps

Photo: Unsplash

A field-by-field tour of the values a website collects, from canvas and WebGL to audio, fonts, screen and timezone, and why a coherent identity beats a randomised one.

Browser fingerprinting is the practice of identifying a browser by the values it reports rather than by anything it stores. No cookie is needed. The browser simply answers the questions any web page is allowed to ask, and the answers together are distinctive enough to recognise again.

The values that get collected

Most fingerprinting scripts read from the same handful of surfaces.

The obvious ones

The rendering ones

These are the values people mean when they say fingerprinting, because they are indirect. A page asks the browser to draw something and then reads back exactly what was drawn.

The network ones

Why randomising every field is the wrong instinct

The intuitive defence is to change everything on every visit. It backfires, for two reasons.

The first is contradiction. Randomised fields do not know about each other. A user agent claiming Windows next to a WebGL renderer string that only ships on Apple hardware is a stronger signal than either value alone would ever have been. Real machines are internally consistent; only synthetic ones disagree with themselves.

The second is instability. An account that reports a different device on every visit is describing something no real person owns. Consistency over time is what an ordinary user looks like.

What a profile's identity covers

SurfaceHandled by
User agent and platformGenerated together, so the claimed platform matches the values around it
Screen and pixel ratioFixed per profile, drawn from sizes real displays actually report
Timezone and localeSet per profile, and matched against the network route it uses
Canvas, WebGL and audioGiven a stable per-profile treatment, identical on every open
FontsA per-profile set consistent with the platform the profile claims
WebRTCConstrained so it does not contradict the profile's network route

Checking your own work

Open a profile and visit a fingerprinting test page. Several publish the values they read, free of charge. The two things worth checking are not what you might expect:

  1. Do the values agree with each other? Platform, fonts, graphics strings and timezone should describe one plausible machine.
  2. Are they the same as last time? Close the profile, open it again, reload the test. A profile whose values move between opens is not stable, and stability is the property that matters.

A rarity score on a test page is the least useful number there. It measures you against that page's visitors, who are overwhelmingly people testing antidetect browsers.

All articles · Run the scan