Glossary

What Is Browser Fingerprinting?

Browser fingerprinting is a technique websites use to identify and track visitors by collecting a set of attributes from the browser (User-Agent, screen size, fonts, plugins, canvas hash, WebGL signatures, etc.) and combining them into a unique signature.

Understand the signals modern fingerprinting collects, why a 'fresh IP' alone isn't enough to look human, and how to keep your scraper's fingerprint clean.

Explained

Browser fingerprinting collects a basket of attributes from your browser and turns them into a stable identifier. Even without cookies, the combination of User-Agent, language, time zone, screen resolution, installed fonts, canvas rendering hash, WebGL renderer string, audio context fingerprint, and dozens of other signals is unique enough to identify a single browser across sessions with surprising accuracy.

The two big categories are passive and active fingerprinting. Passive fingerprinting reads attributes the browser exposes implicitly: User-Agent, Accept-Language, sec-ch-ua client hints. Active fingerprinting runs JavaScript that probes the browser's rendering engine, audio engine, GPU, and timing characteristics, then computes a hash.

For scraping and automation, fingerprinting matters because IP rotation alone isn't enough. If you rotate through 10,000 residential IPs but every request carries the same canvas fingerprint and same Playwright-default User-Agent, the destination can correlate all 10,000 requests to the same scraper instance. Modern anti-bot systems (Cloudflare, Akamai, PerimeterX, Datadome) all use fingerprinting heavily alongside IP analysis.

How It Works

When your browser loads a page with fingerprinting code, the script enumerates browser properties (UA, language, plugins, screen, time zone), draws a hidden canvas with specific text and gradients then reads back the rendered pixels (canvas fingerprint), creates a WebGL context and reads the GPU vendor and renderer strings (WebGL fingerprint), generates a tone with the audio API and reads the spectrum (audio fingerprint), and times specific operations (math.tan, performance.now drift) for hardware signals.

All those values get hashed into a fingerprint ID and sent back to the server. Because the combination of even a dozen of these attributes is highly unique, the resulting ID stably identifies the browser across cleared cookies, new sessions, and different IPs.

Types

Passive Fingerprinting

Reads attributes the browser exposes implicitly via HTTP headers and JavaScript globals: User-Agent, Accept-Language, sec-ch-ua hints, screen size, time zone, language. Cheap, runs everywhere.

Active / Canvas Fingerprinting

Runs JavaScript that draws to a hidden canvas and reads back the pixel hash. Different GPU/driver combinations produce subtly different rendering, making canvas fingerprints highly stable per-device.

WebGL Fingerprinting

Probes the WebGL context for GPU vendor, renderer string, and supported extensions. Headless browsers and virtualized GPUs often produce distinctive signatures.

Audio Fingerprinting

Generates an audio waveform with the AudioContext API and reads back the resulting frequency spectrum. Audio processing differs subtly between OSes and audio drivers, producing a stable per-device hash.

TLS / Network Fingerprinting (JA3, JA4)

Fingerprints the TLS handshake itself — cipher list, extensions, ALPN order, GREASE values. Identifies the underlying HTTP client (curl, Python requests, Playwright, etc.) before the application layer even gets a chance.

Common Use Cases

Bot defense on login, signup, and form pages
Account de-duplication (one fingerprint = one user)
Fraud scoring on financial and ad-buying flows
Tracking returning visitors without cookies
Scraper detection at the application layer
FAQ

Frequently asked FAQ questions

Common questions about browser fingerprinting.

Because anti-bot systems fingerprint the browser, not just the IP. If 10,000 requests come from 10,000 IPs but all carry the same canvas fingerprint, same TLS JA3, and same User-Agent, the system can correlate them as one scraper. You need IP rotation AND fingerprint hygiene to look like many distinct users.