Skip to content
All fingerprint checksRender & GPU

the same audio render reproduces itself

Check id audio-render-reproducibility

What an ordinary browser yields

Repeated renders of an identical graph agreeing to within 1e-6 relative; on Chromium, agreeing exactly. N/A when OfflineAudioContext is absent (severity: warn).

What a detector infers

An OfflineAudioContext render involves no output device and no clock. It is arithmetic on fixed inputs, performed on the CPU, so its output is a pure function of the operations the browser carries out - render the same graph twice and the result is not merely close, it is bit-identical. That makes 'does it reproduce itself' a question with no reference value anywhere in it: nothing is compared against a table of expected sums, so nothing goes stale when Chromium changes its compressor or its wavetable. MEASURED on Chrome 150: six consecutive renders of the same graph (5000 frames, triangle at 1000Hz through a DynamicsCompressor at threshold -50, knee 40, ratio 12, attack 0, release 0.25) produced ONE distinct sum, a relative spread of exactly 0, and identical raw samples. The audio fingerprint is a well known signal and the usual countermeasure is to perturb the samples; perturbation drawn fresh on each call destroys the one property the render is guaranteed to have. Measured with per-call multiplicative noise of the magnitude an anti-detect tool was reported to use, between 1e-4 and 3.5e-3: five renders gave five distinct sums at a relative spread of 1.3e-3, a thousand times the threshold. WHAT IT CANNOT SEE, stated because the row would otherwise imply more than it measured: perturbation drawn ONCE PER SESSION reproduces itself perfectly inside a single page and is invisible here - measured with a session-constant factor, five renders gave one distinct sum and spread 0. Brave's farbling works that way. Averaging across many sessions recovers the underlying value, but one page load cannot, and the passing detail says so rather than claiming a clean bill of health. THE THRESHOLD IS RELATIVE, AT 1e-6, RATHER THAN EXACT EQUALITY, and that choice comes from this file's own history: the analyser row shipped once in a form that fired on honest Firefox because Gecko re-analyses per call. Reproducibility was measured on Chromium only, so the threshold absorbs any ULP-scale jitter an unmeasured engine might have - for scale, the cross-architecture variation this technique exploits is about 4e-7 relative - while still sitting three orders of magnitude below the noise it looks for. Widening it to exact equality should wait for Gecko and WebKit measurements.

How to resolve it

Per-call randomisation of the audio buffer is self-defeating: it is the one thing a device-free render cannot do, so it converts a common fingerprint into a rare anomaly - the noise is far larger than the hardware variation it means to hide, and it announces itself by moving. If the audio fingerprint must be changed, change it to a different STABLE value that the same browser reproduces on every render, rather than to a moving one.

Anatomy of a browser fingerprint: every signal, and why they must agree

Read in the wild by

Scrapfly

Derives the audio fingerprint from OfflineAudioContext arithmetic and argues that randomised perturbation is a category error, being orders of magnitude larger than the hardware variation it hides.

OfflineAudioContext(1, 5000, 44100), triangle @1000Hz -> DynamicsCompressor(-50, 40, 12, 0, 0.2); x86 258.09814036649186 vs Apple Silicon 258.09813991968986

The math behind audio fingerprinting

Every attribution traces to a published artifact. See the sources and their limits.

Nearby checks in Render & GPU

See all 34 checks in Render & GPU
Who builds this test

Clearcote is a browser built for fingerprint coherence

It is a Chromium fork, maintained by the same people who wrote this reference. It ships as a compiled browser rather than as a stealth script injected into someone else's — which is a description of how it is built, and is not an argument about how it behaves on this check.

This audit takes no position on how Clearcote scores on Render & GPU checks, on this one, or anywhere else. It has no baseline corpus of other people's fingerprints to rank you against and no vendor scoreboard — nearly every check is self-referential, asking one browser the same question through two independent APIs and reporting whether both answers can be true at once. It runs identically on any browser, including ours. Run it on yours and read the result yourself.

See the other checks in Render & GPU — the family audio-render-reproducibility belongs to.