Skip to content
Web Scraping APIs

What Is Browser Fingerprinting?

Pim

Pim · Scrappey Research

May 31, 2026 4 min read

What Is Browser Fingerprinting? — conceptual illustration
On this page

Browser fingerprinting is a technique that identifies and tracks a visitor by combining dozens of small, observable characteristics of their browser and device into a single distinctive signature. Think of it like recognizing someone by their height, voice, and gait rather than their name tag. Unlike cookies, a fingerprint is built from data the browser exposes by default — User-Agent (the browser's self-description), installed fonts, canvas and WebGL rendering quirks (tiny differences in how your hardware draws graphics), audio context output, screen resolution, TLS handshake order (TLS is the encryption layer behind https) — and persists even when the user clears cookies or switches to incognito mode.

Quick facts

Also known asDevice fingerprinting, passive fingerprinting
Common signalsCanvas, WebGL, AudioContext, fonts, TLS/JA4, HTTP/2 frames
Used byCloudflare, DataDome, PerimeterX, Akamai, fraud-prevention vendors
Cookie-freeYes — fingerprints survive incognito mode and cookie clearing

How browser fingerprinting works

Sites collect fingerprint data through two channels. Active fingerprinting runs JavaScript in the browser to read APIs that report details about your setup: `navigator.userAgent`, `screen.width`, `Intl.DateTimeFormat().resolvedOptions()` (your timezone and locale), a hashed result from drawing a hidden test image (canvas), the name of your graphics chip (WebGL renderer), AudioContext outputs, and the list of installed fonts. Passive fingerprinting reads what the browser sends automatically, without being asked: the order of HTTP/2 frames, the cipher and extension order in the TLS ClientHello — the first message your browser sends to set up encryption — which produces the JA3/JA4 fingerprint, plus the exact casing and order of HTTP headers. Each signal alone is weak — millions of users share the same User-Agent — but combine fifteen of them and you have a 30-bit identifier that's unique among hundreds of millions of visitors. (30 bits means it can tell apart roughly a billion possibilities.)

Why fingerprinting matters for scraping

Fingerprinting is how modern anti-bot systems tell a real Chrome user from Playwright pretending to be one. Even if your scraper rotates IPs, sets a real User-Agent, and uses a headless browser (a browser running with no visible window), mismatches between the layers leak the truth. The giveaway is always an inconsistency. A Linux Chrome User-Agent paired with a Windows TLS fingerprint is a tell. A canvas hash that matches none of the millions seen from real Chrome installs is a tell. A `navigator.plugins` array of length zero in a browser that should have plugins is a tell. Anti-bot scoring engines add up these signals and decide whether to serve the page, challenge with a CAPTCHA, or block outright.

Why fingerprint consistency is hard to achieve

A single signal like the User-Agent tells only part of the story. What fingerprinting systems actually evaluate is whether all the signals agree with each other: whether the TLS fingerprint matches the browser named in the User-Agent, whether the canvas hash matches what a real installation of that browser produces, whether the timezone matches the network's location, and whether the language headers line up. When automation tooling reports values that don't naturally occur together, the inconsistency is what stands out. Keeping every layer internally consistent across a real browser stack is genuinely difficult engineering — which is why fingerprinting-aware browser-automation services exist. For authorized workflows on sites you are permitted to access, they maintain consistent, real-browser configurations so the layers stay coherent rather than ad hoc.

Privacy and ethical context

Fingerprinting was originally developed for fraud prevention — banks use it to detect stolen credentials being replayed from a new device. It's also widely used for ad tracking, which has drawn regulatory pushback under GDPR and the ePrivacy Directive (EU privacy laws). Browsers are pushing back too: Safari's ITP, Firefox's resistFingerprinting mode, and Chrome's Privacy Sandbox all aim to flatten the most identifying signals — making everyone look more alike. For scraping, this is good news — as real users become harder to tell apart, fingerprints become harder for sites to rely on.

Code example

javascript
// A few of the signals a fingerprinting script collects and hashes.
const signals = {
  userAgent: navigator.userAgent,
  platform: navigator.platform,
  languages: navigator.languages,
  hardwareConcurrency: navigator.hardwareConcurrency,
  deviceMemory: navigator.deviceMemory,
  timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
  screen: [screen.width, screen.height, screen.colorDepth],
  // Canvas, WebGL, fonts and audio add many more entropy bits.
};

// These are combined into one stable hash that survives cookie clearing.
const fingerprint = JSON.stringify(signals);

Next in Browser fingerprinting from scratch · 2 of 6

How is uniqueness actually measured? In bits.

What Is Fingerprint Entropy?

Related terms

Concept map

Concept map

How Browser Fingerprinting connects

The terms most directly tied to this one. Hover a node to see its neighbours, click to preview, drag to rearrange.

0 terms · 0 connections
You are here · Web Scraping APIs
Building map…

Frequently asked questions

How unique is a browser fingerprint?

EFF's Cover Your Tracks finds that 80–90% of browsers have a fingerprint that's unique within their visitor set — meaning no one else in that group looks the same. The exact uniqueness depends on how many signals are collected; fifteen well-chosen signals are enough to identify most users.

Does using a VPN change my fingerprint?

A VPN changes your IP address, not your fingerprint. The canvas hash, TLS signature, screen resolution, and fonts stay exactly the same. Sites can link the VPN IP to the unchanged fingerprint, and the mismatch between location and device often gets you flagged.

Why can't a single signal be changed to hide automation?

Any one signal can be set to an arbitrary value, but anti-bot vendors check whether the signals agree with each other. Changing the User-Agent without TLS, canvas, WebGL, and Audio also lining up produces a combination that doesn't exist on any real device — which is itself a strong signal that the request is automated.

What's a TLS fingerprint?

It's the JA3 or JA4 hash derived from the order and contents of the TLS ClientHello — the first packet a client sends to start an encrypted connection. Chrome, Firefox, Safari, curl, and Python's requests each send a recognizably different ClientHello, so sites use it to spot non-browser clients no matter what User-Agent they claim.

Last updated: 2026-05-31