Skip to content

How each of these works

The 36 techniques running on this site: what each one exposes, the mechanism behind it, and where browser defenses currently stand. Every one is implemented — nothing here is hypothetical.

Written to be read alongside the data page: each entry links to the table it produces.

Techniques
36
Need no permission
28
Ask first
8
Left unbuilt
5
No.TechniqueWhere defenses standAsks first
Passive — sent before any code runs5
1Request headersNo mitigation possible—
2Client hintsExpanding in Chromium—
3Header orderingNo mitigation—
4Connection and socket factsInherent to networking—
5CSS-only fingerprintingSurvives script blocking—
Fingerprinting — identity without storage9
6Canvas renderingRandomized in Firefox and Safari—
7WebGL and WebGPURestricted in Firefox only—
8Audio processingRandomized in Firefox—
9Font enumeration by measurementLimited in Firefox and Safari—
10Composite scoring (FingerprintJS)A commercial industry—
11Engine and maths tellsNot mitigable—
12Worker cross-checkingDetection, not collection—
13Behavioral biometricsIn production use, ungated—
14Performance and thermal profilingTimers coarsened—
Persistence — identifiers that come back4
15Respawning across storageCleared together, if you clear all—
16ETag cache identifiersCache now partitioned—
17Service workersCleared with site data—
18Cross-tab channelsWorking as designed—
Cross-site — how tracking becomes a profile3
19Third-party embeddingBlocked or partitioned—
20Analytics and advertising payloadsUbiquitous—
21Referrer passingTrimmed by default—
Environment — the machine and its settings7
22Timezone and localeNo permission gate—
23Screen, theme and accessibility preferencesDisclosed by design—
24Hardware reportingRounded; battery removed—
25Storage quotaDeliberately coarsened—
26Codec and DRM supportRequired for playback—
27Device countingCount is ungated—
28Permission state readingIntentional—
Permission-gated — what a prompt unlocks8
29Precise locationProperly gatedyes
30Clipboard readingGated, but silent afteryes
31Full local font listChromium onlyyes
32Multi-screen detailsProperly gatedyes
33Idle and lock stateChromium only, opposedyes
34Camera and microphone identityGated; IDs persistyes
35Motion sensorsGated on mobileyes
36Installed application detection (scheme flooding)Repeatedly tightenedyes

Passive — sent before any code runs

Nothing on this list requires JavaScript, consent, or any action by the visitor. The browser volunteers it as part of asking for the page.

1Request headers

No mitigation possible
Exposes
Browser and platform, preferred languages in ranked order, compression support, and the page you came from.
Mechanism
Every HTTP request carries a header block. The server reads it directly; the page never has to ask for anything.
Defenses
Unchanged and unchangeable — headers are how the web works. The user-agent string itself has been frozen and reduced in Chrome and Safari to limit what it leaks.

2Client hints

Expanding in Chromium
Exposes
Processor architecture and bitness, exact browser build to the patch number, operating system version, device model, color-scheme preference, viewport size.
Mechanism
The server replies with an Accept-CH header listing what it wants. The browser then attaches those values to every subsequent request. Critical-CH makes it retry the very first request so nothing is missed.
Defenses
Actively expanding in Chromium. Presented as a privacy improvement over the user-agent string, because the values are requested rather than broadcast — but a site that asks receives more precise data than the old string ever carried.

3Header ordering

No mitigation
Exposes
Which browser engine you really are, regardless of what your user-agent string claims.
Mechanism
Each engine emits its headers in its own fixed sequence. Reading the raw order requires access below the framework layer, which is why this page runs a custom HTTP server.
Defenses
No mitigation exists or is planned. The same principle applies further down the stack in TLS handshake fingerprinting, which this page does not perform.

4Connection and socket facts

Inherent to networking
Exposes
Protocol version, source address and port, whether the connection was reused.
Mechanism
Read straight from the TCP socket carrying the request.
Defenses
Inherent to networking. A VPN or proxy changes the address; it does not remove it.

5CSS-only fingerprinting

Survives script blocking
Exposes
Color scheme, pixel density, window size, input device, accessibility settings, color gamut, and which rendering engine you use — plus whether JavaScript is disabled.
Mechanism
A stylesheet declares one rule per condition, each loading a different background image. The browser only fetches an image when its rule matches, so the pattern of requests tells the server which conditions were true. A @media (scripting: none) rule fires precisely when scripts are off.
Defenses
No mitigation. Blocking or disabling JavaScript does not affect it, which makes it the standard counter-example to script blocking as a privacy measure.

Fingerprinting — identity without storage

These techniques recognize a returning visitor with nothing saved on their machine. They survive clearing cookies, private windows, and in some cases a change of browser.

6Canvas rendering

Randomized in Firefox and Safari
Exposes
A stable hash unique to your combination of graphics driver, fonts and rasterizer.
Mechanism
The page draws identical text and shapes off-screen and reads the pixels back. Anti-aliasing and font rasterization differ minutely between machines, and the difference is consistent for any one of them.
Defenses
Firefox and Tor Browser randomize or prompt; Safari returns a value that changes per session. Chrome does not mitigate by default.

7WebGL and WebGPU

Restricted in Firefox only
Exposes
The exact GPU model and driver build — effectively the model of computer and its rough price.
Mechanism
WEBGL_debug_renderer_info returns the unmasked vendor and renderer strings. A rendered scene is also hashed, capturing driver-level differences.
Defenses
Firefox restricts the unmasked strings. Chrome still returns them to any page with no prompt.

8Audio processing

Randomized in Firefox
Exposes
A hash reflecting the floating-point behavior of your audio stack.
Mechanism
An oscillator is rendered through a compressor in an offline audio context — never audible — and the resulting samples are summed.
Defenses
Randomized in Firefox's resist-fingerprinting mode and in Tor Browser. Otherwise unmitigated.

9Font enumeration by measurement

Limited in Firefox and Safari
Exposes
Which typefaces are installed, and therefore which software you own.
Mechanism
Text is measured in each candidate font against the three generic families. A different width means the font resolved, so it exists.
Defenses
Safari and Firefox limit the visible set to system fonts. No permission is involved anywhere.

10Composite scoring (FingerprintJS)

A commercial industry
Exposes
One identifier stable across sessions, combining dozens of individually weak signals.
Mechanism
Each signal splits the population; combined, they usually isolate one browser on one machine. The open-source library used here reports its own confidence.
Defenses
A commercial industry. The open version is deliberately public so its accuracy can be audited.

11Engine and maths tells

Not mitigable
Exposes
The true JavaScript engine, independent of any claimed identity.
Mechanism
Error wording, stack formats and floating-point edge cases differ between V8, SpiderMonkey and JavaScriptCore.
Defenses
Not mitigable without breaking the language. Used mainly to catch browsers lying about what they are.

12Worker cross-checking

Detection, not collection
Exposes
Whether values on the main page have been altered by an extension or anti-detect tool.
Mechanism
The same properties are read again inside a Web Worker and compared. Spoofing tools frequently patch one context and forget the other.
Defenses
A detection technique rather than a collection one — and a demonstration that hiding can make you more conspicuous.

13Behavioral biometrics

In production use, ungated
Exposes
How you type and move a pointer — usable to tell whether the same human is present.
Mechanism
Key hold times, gaps between keystrokes, pointer speed, acceleration and path curvature are collected from ordinary events and compared against a stored profile.
Defenses
In production use for fraud scoring and continuous authentication. No permission prompt exists for it.

14Performance and thermal profiling

Timers coarsened
Exposes
Device class, and whether the machine is throttling, on battery saver or already busy.
Mechanism
A fixed benchmark is run several times; absolute speed and the way it degrades are both characteristic.
Defenses
Timer precision has been coarsened across browsers to blunt timing attacks, which limits precision but not device classification.

Persistence — identifiers that come back

Storage is not one thing. It is a dozen compartments cleared by different controls, and an identifier only has to survive in one of them to be restored into all the others.

15Respawning across storage

Cleared together, if you clear all
Exposes
That deleting cookies alone does not make you a new person.
Mechanism
The same identifier is written to cookies, localStorage, sessionStorage, IndexedDB, Cache Storage, a service worker cache and window.name. On the next visit whichever copy survived repopulates the rest.
Defenses
Browsers have unified 'clear site data' controls, which does clear these together. The technique survives partial clears, which is what most people actually perform.

16ETag cache identifiers

Cache now partitioned
Exposes
A returning visitor even after cookies and site data are cleared.
Mechanism
The server labels a response with a unique ETag. The browser caches it and returns it in If-None-Match on every revalidation, handing the identifier back without ever storing site data.
Defenses
Mitigated only by clearing or partitioning the HTTP cache. Browsers now partition the cache per site, which stops cross-site use but not recognition by the same site.

17Service workers

Cleared with site data
Exposes
A store that survives ordinary cookie clearing and runs after the tab is closed.
Mechanism
A registered worker keeps its own cache and intercepts network requests for the site.
Defenses
Cleared with site data; otherwise long-lived by design.

18Cross-tab channels

Working as designed
Exposes
How many tabs of a site you have open, and lets state propagate instantly between them.
Mechanism
BroadcastChannel, SharedWorker, Web Locks and storage events all provide same-origin communication between tabs.
Defenses
Working as designed; no mitigation applicable.

Cross-site — how tracking becomes a profile

A single site learning about you is one thing. The commercial system depends on the same party appearing on thousands of sites and joining what it sees on each.

19Third-party embedding

Blocked or partitioned
Exposes
Whether an embedded party can recognize you from elsewhere, and whether your browser stops it.
Mechanism
This page embeds a frame from a genuinely different origin — the same server reached by its other hostname — which then sets and reads its own identifier from inside your visit, exactly as an advertising tag does. No outside company is involved.
Defenses
Third-party cookies are blocked by default in Safari and Firefox and being phased down in Chrome; remaining storage is partitioned per embedding site. This is the most substantial privacy change of the last decade.

20Analytics and advertising payloads

Ubiquitous
Exposes
Exactly which fields real tags transmit about a visitor.
Mechanism
The page constructs the genuine request shapes used by Google Analytics 4, the Meta Pixel and an OpenRTB bid request, filled with the values collected from you — and displays them without sending anything.
Defenses
Ubiquitous. A real-time bidding request is broadcast to hundreds of bidders per ad slot, all of whom receive it whether or not they win.

21Referrer passing

Trimmed by default
Exposes
Which page you were on immediately before this one.
Mechanism
Sent automatically to each site, and to embedded third parties within it.
Defenses
Default referrer policies now trim the value to an origin in most browsers, and this site sets a strict policy of its own.

Environment — the machine and its settings

Individually mundane, collectively identifying. Each of these splits the population into groups, and it is the combination that isolates a person.

22Timezone and locale

No permission gate
Exposes
Your approximate region without any location permission, plus your language priorities.
Mechanism
Intl reports the resolved timezone, calendar, numbering system and locale directly.
Defenses
No permission gate exists. Tor Browser reports UTC to everyone.

23Screen, theme and accessibility preferences

Disclosed by design
Exposes
Display geometry, density, refresh rate, OS accent color, and whether you use reduced motion, increased contrast or forced colors.
Mechanism
Media queries and resolved CSS system colors, all readable synchronously.
Defenses
Disclosed by design so pages can adapt. Accessibility settings are effectively health-adjacent data shared with every site, with no way to receive the accommodation while withholding the signal.

24Hardware reporting

Rounded; battery removed
Exposes
Processor core count, memory size, touch capability, battery level.
Mechanism
Plain properties on navigator.
Defenses
Memory is rounded and capped; battery was removed from Firefox and Safari after it was found being used to correlate visitors across sites.

25Storage quota

Deliberately coarsened
Exposes
An estimate of your free disk space.
Mechanism
navigator.storage.estimate() derives its quota from available disk.
Defenses
Deliberately coarsened, but still a personal and slowly-drifting number.

26Codec and DRM support

Required for playback
Exposes
Which media formats decode in hardware, which is close to a chipset signature, and which content-protection systems the device carries.
Mechanism
canPlayType, MediaSource.isTypeSupported, mediaCapabilities.decodingInfo and Encrypted Media Extensions queries.
Defenses
Required for media playback to work at all; no mitigation proposed.

27Device counting

Count is ungated
Exposes
How many cameras, microphones and speakers are attached.
Mechanism
enumerateDevices() returns entries with blank labels before permission is granted — but the count is visible immediately.
Defenses
Labels and stable IDs are correctly gated behind permission. The count is not.

28Permission state reading

Intentional
Exposes
Which capabilities you have already allowed or denied elsewhere on the site.
Mechanism
The Permissions API reports current state without prompting.
Defenses
Intentional, and useful — it also means a site can tell how cautious a user is before asking for anything.

Permission-gated — what a prompt unlocks

These require an explicit approval. They are included to show the size of the step between 'no prompt' and 'one prompt' — and how little the prompt usually explains.

29Precise location

Properly gated
Exposes
Position to within a few meters: a building, not a city.
Mechanism
The operating system combines satellite, nearby wi-fi networks and cell towers.
Defenses
Properly gated. Once granted, a site may keep asking on every return visit.

30Clipboard reading

Gated, but silent after
Exposes
Whatever you last copied — frequently a password, address or private message.
Mechanism
navigator.clipboard.readText() after approval.
Defenses
Gated, but nothing indicates afterwards that a read occurred.

31Full local font list

Chromium only
Exposes
Every installed typeface, straight from the operating system — usually unique to a person.
Mechanism
queryLocalFonts() after approval.
Defenses
Gated in Chromium; not implemented in Firefox or Safari, which regard it as too revealing.

32Multi-screen details

Properly gated
Exposes
Every attached display: resolution, arrangement on the desk, manufacturer labels.
Mechanism
getScreenDetails() after the window-management permission.
Defenses
Gated, and a fair description of a person's workspace.

33Idle and lock state

Chromium only, opposed
Exposes
Whether you are at the keyboard and whether the screen is locked — continuously, in the background.
Mechanism
IdleDetector after approval.
Defenses
Gated in Chromium; opposed by Mozilla and Apple as surveillance-shaped.

34Camera and microphone identity

Gated; IDs persist
Exposes
Hardware model names and stable identifiers for every recording device.
Mechanism
Granting access once reveals labels and persistent device IDs, along with full track capabilities.
Defenses
Gated. The identifiers persist across visits for the same origin.

35Motion sensors

Gated on mobile
Exposes
Accelerometer and gyroscope readings whose calibration noise is unique to the individual handset.
Mechanism
Device orientation and motion events, requiring explicit permission on iOS.
Defenses
Gated on mobile. The physical-device fingerprint it carries survives every browser reset.

36Installed application detection (scheme flooding)

Repeatedly tightened
Exposes
Which desktop applications you have installed.
Mechanism
The browser is asked to open each application's private URL scheme; a hit is inferred from the window losing focus. Kept behind an explicit warning here, because a hit can genuinely launch the application.
Defenses
Repeatedly tightened after public disclosure. Results are heuristic and vary by browser.

Deliberately not built

A demonstration of surveillance should not itself be surveillance. These techniques are real, documented, and would have worked here. Each was left out for a stated reason.

Hidden autofill harvesting

Invisible form fields that browsers fill with a name, address or card number are a working exploit for extracting personal data, not a demonstration of one. Nothing is learned by building it that this page does not already show.

History sniffing side channels

Timing and paint-based attacks that recover which sites you have visited are attacks on the browser itself, and current techniques are live vulnerabilities rather than settled behavior.

Live commercial trackers

Embedding a real analytics or advertising tag would transmit each visitor's data to those companies. This page builds the exact payloads and displays them instead, which teaches the same lesson without the collection.

Silent cross-site login detection

Probing third-party endpoints to determine which services you are signed in to sends requests carrying your cookies to companies you did not choose to contact during this visit.

IP geolocation lookup

Turning an address into a city means handing it to a third-party database. Your address is never sent anywhere, by this page or by the server behind it — the one rule here with no exception.

What this site keeps

Most of the data page is measured in your browser and never sent anywhere. Two demonstrations are the exception, because neither can be shown without a server that remembers — and being vague about that would make this page the thing it is arguing against.

The ETag identifier, and how often you return it

in memory, up to 24 hours

The server tags one response and your browser hands the tag back on every revalidation. Counting those is the demonstration: it is how a site recognizes a returning visitor with no cookie and no script. The record is three values — first seen, last seen, a count — against a random identifier that means nothing anywhere else.

Which CSS conditions your browser matched

in memory, up to 24 hours

The CSS-only fingerprint works by loading a different image for each condition that is true. The server has to remember which images were requested in order to show you the result afterwards — otherwise the technique could be described but not demonstrated. Tied to this visit, and to nothing else.

Both live in a bounded map in the server’s memory, capped at five thousand entries and pruned after a day. Nothing is written to disk, there is no database, and a restart forgets everyone. No analytics, no third party, and no IP-geolocation lookup — an address is never sent anywhere to be turned into a place.

Built with

FingerprintJS, ua-parser-js and detectIncognito alongside direct platform probes. No part of this site contacts another company, and the only things the server remembers are the two named above.