OBSERVATION REPORTSubject: this browserCompiled live, in your browser. Retained only as stated below.

Fingerprint self-check

What your browser reveals, in plain sight

Fingerprinting cross-references dozens of small details — your GPU, your fonts, your timezone — to recognize you without a cookie. This page shows you plainly what we already see, and what your browser exposes if JavaScript is on. No spoofed values, no third-party library, no external call.

Test your fingerprint

In one click, see everything a website can learn about you — and decide whether it can recognize you across browsers.

One click: the tests run in your browser and the correlation compares a handful of coarse signals, kept 72h then deleted.

Details: what is computed locally and what is sent

Computed in your browser (never leaves it)

  • The 29 fingerprint tests (canvas, WebGL, audio, fonts, emoji…) and their composite hash.
  • The supercookie/cache markers, set and read back locally (resettable).

Sent to the correlation

  • Salted SHA-256 hashes (never raw values) of a few hardware signals + the salted composite fingerprint.
  • A coarse network prefix (IPv4 /24 or IPv6 /64) — never your full IP — your timezone, languages and JA4/TLS.

Kept 72h in an isolated memory-only demo store, never the shop DB, deletable immediately after the result.

JavaScript: DISABLED

No active test runs: canvas, WebGL, audio, font enumeration and high-resolution timing are not collected. That is itself more private — only what your HTTP headers reveal remains, shown in the server section above.

Section A · With no JavaScript at all

What your connection already reveals

These values come straight from your HTTP request. They are visible to any server you contact, JavaScript on or off.

  • Source IP addresslive value

    216.73.216.108

    A near-unique per-session network identifier; for many households IPv4 stays stable for days/weeks and links all your requests together and to other sites' logs. On IPv6 the /64 prefix often identifies the subscriber line even when temporary addresses (RFC 8981) rotate.

  • ASN / org / IP geolocationlive value

    The ASN and network owner classify the IP (residential vs Hetzner/OVH/AWS, or a known VPN/Tor exit). Country/region are not an identifier alone but shrink the anonymity set and chiefly power inconsistency checks (timezone/language vs country). Resolved locally against a self-hosted CC0 database — no third-party call.

  • User-Agent headerlive value

    Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)

    High-entropy string: browser family+version and OS family+version. An exact version within an IP range is strongly narrowing, and a non-standard UA (curl, library, old browser) stands out immediately. Entropy is falling due to Chrome UA Reduction but it is still a baseline.

  • Accept-Language headerlive value

    The language+region+order+q-values tuple is fairly distinctive, and it is the key input to the language↔IP-country mismatch check — which works without JavaScript since language is in HTTP headers. A missing or generic (en-US only) Accept-Language from a non-English IP is typical of automation/VPN.

  • Accept / Accept-Encoding headerslive value

    Accept: */* · Accept-Encoding: gzip, br, zstd, deflate

    The exact Accept value (ordering, q-values, image/avif, image/webp) and the Accept-Encoding list/order (gzip, br, zstd) vary by engine and version. Low entropy alone but a strong consistency oracle: a 'modern Chrome' without br, or an Accept that doesn't match the claimed UA, betrays a spoofed UA.

  • UA Client Hints (Sec-CH-UA*)live value

    Chromium sends low-entropy hints by default (Sec-CH-UA brand, -Mobile, -Platform). High-entropy hints (-Platform-Version, -Arch, -Model…) arrive only after server opt-in via Accept-CH — as a privacy-respecting operator we deliberately do NOT request them. Their absence on Firefox/Safari is itself an engine signal; a Sec-CH-UA-Platform vs UA mismatch betrays a spoof.

  • DNT / Sec-GPC headerslive value

    Paradox: sending a privacy header (DNT: 1, now deprecated, or Sec-GPC: 1 / Global Privacy Control) is rare and thus adds a distinguishing bit while flagging a privacy-conscious profile. Treat it as a legal signal you may want to honor regardless.

What the network can see (not measured here)

These vectors exist and are real, but are not observable at this origin: Traefik terminates TLS and Next.js normalizes headers. They would require a ClientHello-capturing proxy, packet capture, or a dedicated edge terminator. Shown for education.

  • TLS fingerprint (JA3 / JA4)not measured here

    A browser's TLS stack yields a characteristic ClientHello (version, cipher suites, extensions, curves, ALPN). JA3 (2023) was defeated by Chrome's extension-order randomization; JA4 sorts ciphers/extensions and resists it. It is the decisive counter to UA spoofing: a curl disguised as Chrome has a non-Chrome JA4. Not measurable here: Traefik terminates TLS, the app sees only the negotiated cipher, not the offered ClientHello.

  • HTTP/2 fingerprint (Akamai)not measured here

    HTTP/2 setup exposes implementation choices: SETTINGS frame values/order, WINDOW_UPDATE increment, PRIORITY frames, and pseudo-header order (:method :authority :scheme :path). A second layer beyond JA4. Not measurable here: Traefik normalizes frames to the backend.

  • HTTP header ordernot measured here

    Each engine (Chrome, Firefox, Safari, curl, httpx) emits headers in a fixed order the user cannot change. An order that doesn't match the claimed UA is a strong spoof signal. Not measurable here: Next.js's headers() lowercases into a Map and loses order; capturing it would need a custom Node server or capture at Traefik, neither present in this deployment.

  • HTTP/3 / QUIC fingerprintnot measured here

    The QUIC Initial packet carries the TLS 1.3 ClientHello (thus all JA4 features) plus implementation-specific transport parameters (Chrome's initial_max_data ≈ 15 MB, per-stream windows, connection-ID length), visible in the clear before app encryption. Not measurable here: needs a dedicated QUIC terminator.

  • TCP/IP stack fingerprint (TTL, window — p0f)not measured here

    The OS network stack yields a SYN signature (initial TTL, window size, MSS, TCP option order) from which p0f infers the OS with no probe. Residual TTL reveals hop count and can betray NAT/VPN. Not measurable at the app layer: needs packet capture/eBPF on the edge host.

  • DNS resolver / EDNS Client Subnetnot measured here

    If you are authoritative for a name the client resolves, EDNS Client Subnet (RFC 7871) hands a truncated client prefix (often /24) to authoritative servers, plus the resolver identity. A resolver↔IP divergence betrays a proxy/VPN. Not visible in the HTTP request: it lives in DNS logs, not the web request.

  • Reverse DNS (PTR)not measured here

    The IP’s PTR record often reveals the hosting provider or a predictable VPN-exit pattern (e.g. *.clients.your-server.de), confirming datacenter vs residential. Not performed here: an active PTR query per visit adds latency and leakage; the ASN database already approximates this verdict.

  • TLS session resumption / HTTP/2 connection reusenot measured here

    TLS session tickets / PSK (resumption, 0-RTT) and HTTP/2-3 connection coalescing let an origin link multiple requests to the same client, cookieless and even across the no-JS path, sometimes across an IP change. Not visible here: Traefik terminates TLS so the app cannot see resumption — but the edge terminator can.

Section D · What to do

Recommendations

One principle governs everything else: blend into a large crowd instead of trying to hide. Spoofing values incoherently makes you more recognizable, not less.

The one principle: blend into a crowd, don't hide

Anti-fingerprinting is not about hiding your attributes — it is about being identical to a large crowd of users. The Tor Project's goal is to 'reduce the number of distinguishable buckets per metric.' Anything that makes you different from the default install of the same browser — a resized window, an added extension, a flipped setting, a spoofed value — removes you from the crowd and makes you MORE unique. This is the most-misunderstood point, and it governs every recommendation below. Corollary: a spoofed-but-inconsistent profile (Windows UA + curl TLS stack, or Tokyo timezone + New York IP) is more memorable than the truth, because detectors cross-check signals to spot exactly those contradictions.

Tor Browser — the gold standard, and its exact settings

Tor Browser is engineered so every user presents the same fingerprint: UA and OS forced into a few buckets, canvas extraction blocked/prompted, WebGL hardened, fonts limited to a bundled set, timers coarsened, timezone forced to UTC. Settings: (1) Security Level to Safer or Safest — Safest disables JavaScript everywhere, neutralizing all active fingerprinting (canvas, WebGL, AudioContext, font enumeration, timing). (2) Do NOT maximize or resize the window — letterboxing (grey bars, rounding to a multiple of 200×100 px) is the protection working. (3) Never install extensions — the bundled NoScript is part of the standard fingerprint; do not add uBlock. (4) Never touch about:config or preferences: the defaults ARE the anonymity set. (5) Keep Tor Browser updated — the crowd is defined per browser version.

Mullvad Browser — Tor-grade anti-fingerprinting without the Tor network

Mullvad Browser (co-developed by Mullvad VPN and the Tor Project) ships the same hardening as Tor Browser (letterboxing, 'all users look alike', masked fonts/canvas/hardware APIs, no telemetry) but does NOT route over Tor — it is meant to run behind a trustworthy VPN. Use it when Tor's latency is impractical but you still want a uniform fingerprint. Same discipline as Tor: default window size, no extensions, no settings changes. Honest limitation: it gives Tor-grade anti-fingerprinting but NOT Tor's network anonymity (your VPN sees one hop, not three) — a speed trade against a weaker network guarantee.

Buy the VPN anonymously: Monero over Tor

Mullvad issues a random 16-digit account number with no email, username, password or name, an explicit no-KYC policy, and accepts Monero. Generate the account number and settle the XMR invoice from within Tor Browser. Tor breaks the network link at purchase, Monero breaks the financial link; Monero's on-chain privacy (hidden amounts, sender and recipient) is far stronger than Bitcoin's transparent ledger for this purpose. Ordering matters: buying non-anonymously (card, home IP) links the account to you regardless of how cleanly you use it afterward.

Device-level entropy reduction (onsecret hardware)

GrapheneOS (Pixel) reduces device-side entropy vs stock Android: strips system Google services, per-app Sensors permission (cut accelerometer/gyroscope/barometer — motion-based fingerprinting vectors), per-app Network and Storage scopes. Pixels are required because GrapheneOS depends on their hardware roots of trust (verified boot, attestation). Combine with the crowd-blending browsers: the OS reduces device entropy, the browser web entropy. Tails (amnesic) on a hardened ThinkPad boots from USB, routes everything over Tor and leaves no trace — each session restarts identical to every other Tails user's. Qubes + Whonix adds compartmentalization: isolating personas in distinct qubes prevents linking one activity to another, and a compromise stays contained.

Mudi + blue-merle: network-identifier entropy

On cellular, the IMEI (device), IMSI (SIM) and the router's MAC are persistent hardware identifiers that fingerprint you at the carrier/Wi-Fi layer, independent of the browser. The blue-merle package randomizes the IMEI and does vendor-OUI-aware MAC mimicry rather than a fully random MAC. Why OUI matters — it is the same principle as the browser advice: a MAC with a random/invalid vendor prefix is itself anomalous and stands out; mimicking a plausible OUI keeps you in the crowd of legitimate devices instead of flagging you as 'a device trying to hide.' Pair IMEI randomization with a SIM swap: do not rotate the IMEI while keeping the same IMSI on the same cell, because that pairing is itself trackable.

Mistakes that make you MORE identifiable

(1) Spoofing that creates internal inconsistencies: a 'Windows' UA on a 'Linux' platform, a WebGL renderer that doesn't match the OS, fonts inconsistent with the platform are dead giveaways. A coherent profile blends in; an incoherent one screams 'spoofer.' (2) Stable lies = stable tracking: always spoofing the same way turns that combination into a durable fingerprint; per-load randomization is the mirror problem (a detectable red flag). (3) Language/timezone/IP mismatches: exiting via a German node while advertising en-US and a New York timezone is a classic tell; Tor deliberately standardizes locale and timezone (UTC) — leave them alone. (4) Unique window sizes: maximizing or fitting an ultrawide pushes you out of the letterboxing buckets. (5) Mixing identities on one session links the accounts — use 'New Identity' or separate personas. (6) Adding 'privacy' extensions (uBlock/Canvas-blocker) to Tor/Mullvad Browser makes you unique vs the stock crowd. (7) Buying the anonymity tool non-anonymously links the account to you.

Support