Audio fingerprinting
The browser can render a sound no one hears.
A page can build the same synthetic audio graph in every browser, render it entirely in memory, and measure the resulting numbers. Small implementation differences can become a repeatable signal inside a broader browser fingerprint—without using your microphone or speakers.
- Microphone
- Not required
- Audible sound
- None
- Primary surface
- Web Audio API
- Result
- Numeric render
Live browser surface
Render the same graph in this browser.
This demonstration uses your browser’s real OfflineAudioContext. The graph runs locally, never requests microphone permission, never plays through the speakers, and sends no result to 404 Privacy. Run it twice to test repeatability in this session.
- Sample rate
- —
- Frames
- —
- Peak
- —
- RMS
- —
- Runs
- 0
- Session match
- Run twice
A matching result demonstrates repeatability here, not global uniqueness. Other browsers and devices may share the same output.
No listening required
Audio fingerprinting is not microphone fingerprinting.
The word audio makes this technique sound like eavesdropping. The common Web Audio test is different: the page generates a known signal, processes it in memory, and reads the buffer it created. It measures computation, not the room around you.
From graph to identifier
The fingerprint is the measured output, not the tone.
Every browser receives the same instructions. The observable is the long numeric buffer produced after those instructions pass through the browser’s audio implementation.
- 01
Oscillator
triangle · 10 kHzThe page creates a known synthetic input. No recording, media file, or microphone is required.
- 02
Compressor
threshold · knee · ratioA DynamicsCompressorNode applies nonlinear processing that gives the browser more arithmetic to perform.
- 03
Offline renderer
1 channel · 44.1 kHzOfflineAudioContext computes the graph into memory instead of sending it to the speakers.
- 04
AudioBuffer
5,000 float samplesThe resulting samples can be read as numbers, summarized, serialized, and compared.
- 05
Digest
repeatable short IDA hash turns a long sequence of tiny values into a compact label that is easy to store alongside other signals.
const context = new OfflineAudioContext(1, 5000, 44100);
const tone = context.createOscillator();
const compressor = context.createDynamicsCompressor();
tone.type = 'triangle';
tone.frequency.value = 10000;
tone.connect(compressor).connect(context.destination);
tone.start(0);
const buffer = await context.startRendering();
const samples = buffer.getChannelData(0);Small difference, different label
A digest makes tiny numerical changes easy to compare.
Two rendered buffers can look identical as waveforms and still differ in low-order digits. Hashing does not make the signal more unique; it compresses the comparison. One changed byte can produce a completely different-looking digest.
… −0.08988945 · 0.01219763 · 0.10492118 …… −0.08988941 · 0.01219763 · 0.10492118 …What the evidence supports
Repeatable does not automatically mean unique.
Audio output can be stable enough to recognize a browser environment while still being shared by many people. A 2021 study collected Web Audio results from 2,093 users but found only 95 distinct fingerprints. The signal was not highly diverse on its own; it still added information when combined with other browser attributes.
What changes the result?
Storage and network resets do not replace the audio implementation.
The test rebuilds its result from Web Audio processing instead of reading a stored identifier.
Private mode isolates local state but usually keeps the same browser engine and audio implementation.
The network path changes; the offline audio graph still runs inside the browser.
Different engines and releases can implement audio processing or floating-point paths differently.
The surrounding software stack and implementation environment can affect the numeric output.
A privacy mode may return shared results, add controlled variation, or restrict the surface.
Meaningful defenses
The useful goal is a shared answer, not a stranger one.
Blocking Web Audio entirely can break legitimate tools. Privacy-oriented browsers instead have to balance compatibility with making the result less stable or less distinguishing.
Standardize
Return the same effective result across a larger group so one browser is harder to distinguish.
Alter carefully
Controlled variation can reduce repeatability, but inconsistent defenses can become a new fingerprint.
Protect the whole profile
Audio matters most beside canvas, WebGL, fonts, display, headers, and network evidence.