Privacy education

See How Browser Signals Form a Fingerprint

This browser fingerprint demo combines a few ordinary browser capabilities to show how a more distinctive signal can emerge. It displays the hardware hints your browser makes available, renders an offline audio graph, and reads pixels from a deterministic WebGL shader. Sampled audio and GPU data then produce a 256-bit locality-sensitive hash. Everything runs on the page. The result does not prove identity, uniqueness, or real-world tracking accuracy.

What it does

  • Display browser-exposed logical-core, device-memory, and WebGL renderer hints when the browser makes them available.
  • Render a fixed offline audio graph and sample its numeric output without using the microphone.
  • Draw a deterministic WebGL shader and read the resulting pixel buffer.
  • Combine sampled audio and GPU values into a 256-bit locality-sensitive hash for the current demonstration.
  • Walk through hardware, audio, GPU, aggregation, and hashing concepts with visual panels and code-shaped examples.

How to use Browser Fingerprint Signals Demo

  1. Let the local checks finish

    The page runs the hardware, offline-audio, and WebGL checks after load, pausing between stages so it does not block the interface.

  2. Inspect the hardware hints

    Review the logical-core count, approximate device-memory hint, and renderer string that your browser exposes or withholds.

  3. Follow the audio and GPU phases

    Continue through the locally rendered audio trace and WebGL sample to see how numeric output can differ between environments.

  4. Examine aggregation

    See how many small values can be treated as one feature vector instead of as isolated facts.

  5. Interpret the hash cautiously

    Treat the final hexadecimal value as an educational similarity signal for this implementation, not as evidence that a person or device has been identified.

Formats, compatibility, and limits

Inputs

  • Browser-exposed logical processor count and optional approximate device-memory hint.
  • A WebGL renderer string when the relevant extension is available.
  • Samples from a locally rendered OfflineAudioContext graph.
  • Pixels from a deterministic WebGL shader drawn into an off-screen canvas.

Outputs

  • An on-page walkthrough of the browser signals and aggregation stages.
  • A 64-character hexadecimal value representing a 256-bit locality-sensitive hash of sampled audio and GPU values.
  • No server comparison, persistent identifier, downloadable report, or verified uniqueness score.

Compatibility

  • The page degrades when WebGL, offline audio, renderer details, or hardware hints are unavailable.
  • Privacy-focused browsers and anti-fingerprinting settings may mask, standardize, randomize, or block some values.
  • The walkthrough works without microphone, camera, location, or notification permission.

Known limits

  • The demo does not establish that its hash is unique, stable across sessions, or capable of identifying a person.
  • The displayed hardware values are shown separately; the implemented hash is derived from sampled offline-audio and WebGL output.
  • The similarity threshold shown in the interface is an illustrative teaching rule and is not backed by a population study in this project.
  • Fallback zero-filled audio or GPU data can make blocked or unsupported environments look similar.
  • There is no historical dataset, cross-site collection, server-side matching, confidence calibration, or production anti-fraud model.

Privacy and processing

  • The hardware hints, audio samples, GPU pixels, and derived hash remain in page memory and are not uploaded by this demonstration.
  • No microphone audio is recorded: the audio signal comes from an OfflineAudioContext rendered locally.
  • The tool does not save the hash or sampled signals in cookies, local storage, or IndexedDB; refreshing clears them.
  • The page itself can read these browser-exposed values, which is precisely the privacy surface the demonstration is designed to make visible.

What the 256-bit demonstration hash represents

The demo takes 512 values from an offline audio render and 512 normalized bytes from a fixed WebGL pixel buffer. Those samples form a 1,024-value vector. The implementation projects it against 256 deterministically generated hyperplanes and records the sign of each dot product as one bit. This is a small locality-sensitive hashing experiment, so nearby vectors may produce nearby bit patterns. It is not a cryptographic identity. The project has not validated its stability or false-match rate across a real browser population.

Questions about Browser Fingerprint Signals Demo

Does this fingerprint identify me?

No. The output is one local similarity hash built from a small set of browser signals. There is no identity database behind it, and the result does not prove uniqueness, persistence, or a match to a person.

Does the audio check use my microphone?

No. It creates an OfflineAudioContext, renders a synthetic oscillator through a compressor, and samples the generated buffer without requesting microphone access.

Is the fingerprint sent or saved anywhere?

The implementation keeps the sampled data and hash in React state for the current page session. It does not upload or persist them.

Why might the demo show unknown or uniform values?

A browser may not expose memory or renderer details, may lack WebGL or offline audio, or may deliberately reduce fingerprinting surface. The code uses zero-filled fallback data when an audio or GPU check fails.