An offline audio fingerprint is the result of a calculation. The browser builds an audio-processing graph, renders samples into memory and measures those samples. It does not need to turn on a microphone or play a sound through your speakers. Understanding that distinction makes the result much easier to interpret.
The useful investigation is whether the same graph produces the same sample bytes under controlled conditions. A stable result describes repeatability. A different result tells you to examine the processing environment or the readout. Neither outcome provides a percentage chance that a website can recognise you.
Follow the graph from oscillator to samples
The offline audio tool uses OfflineAudioContext to render a generated signal. Its oscillator feeds a dynamics compressor before the output reaches the offline destination. The graph works on generated waveforms, without requesting a media stream from an input device.
The configured output is one channel with 44,100 samples at a sample rate of 44,100 Hz. That represents one second of audio data, although offline rendering does not have to take one second of wall-clock time. The browser can calculate it faster or slower depending on implementation and available resources.
The tool hashes the sample buffer with SHA-256. It also sums the absolute sample values over a specified portion of the output, from sample index 4,500 up to but excluding 5,000. These are two different summaries. The digest is useful for exact byte equality; the sum is a numerical observation about a smaller portion of the waveform.
The test renders the graph twice. Its repeatability result compares the two digests. A rounded sum can look identical while the complete buffers differ. Conversely, a sum alone discards information about sample order and sign, so matching sums are not proof that the underlying arrays match.
Create a comparison record before changing settings
Run the tool in the browser profile you normally use and export the report. Record browser version, operating system, profile type and relevant privacy settings. Keep the graph and tool version fixed. Comparing the result with another site's audio test is not meaningful unless both tests use the same graph, parameters and byte representation.
Repeat once in the same page, once after reload and once after restarting the browser. Each step crosses a different boundary. A protection may randomise values per document or session, while ordinary processing may remain stable within the same page. Label the boundary rather than collecting a pile of anonymous hashes.
If the result changes unexpectedly, return to the simplest case: two runs with no deliberate changes. A browser update, extension update or changed profile can otherwise become a hidden variable. Record unsuccessful renders too, because an unavailable operation is different from a completed render with changing samples.
| Field | What it describes | What it does not establish |
|---|---|---|
| Sample rate | The offline graph's configured rate | Your microphone's recording rate |
| Sample count | The length of generated output | How long the computation took |
| SHA-256 | A digest of sample bytes | A person or device identity |
| Absolute sum | A summary of the selected sample window | Equality of the whole waveform |
| Matching result | Equality in the two measured runs | Uniqueness among other browsers |
Work through a changed result
Imagine the first run reports matching samples, the second run also matches internally, but its digest differs from the first run. That pattern is compatible with a value that changes between operations while remaining stable for the pair inside each operation. It also warrants checking whether both reports came from the same tool build and profile.
Reload and repeat several times, keeping a short table of run number and equality relationships. You do not need to publish the full hashes to describe the pattern. A label such as A, B or C can represent each distinct value in a private experiment, with the original reports retained only where needed.
Next change one relevant setting in a disposable profile, then restore it. If the pattern consistently follows the setting, you have evidence of an effect under those conditions. Avoid naming a particular defence solely from its output pattern; different implementations can produce similar observations, and the tool does not inspect extension internals.
Understand why tiny numerical changes matter
Audio processing produces floating-point sample values. Browser engines and processing libraries can differ in implementation details. A very small numerical difference can change the buffer bytes and therefore the entire digest, even when the waveform would sound indistinguishable if someone played it.
Cryptographic hashes deliberately do not preserve similarity. A hash with many different characters is not evidence of a large acoustic change. To investigate numerical differences, compare sample arrays with a defined tolerance and record maximum or average error. That is a separate analysis from exact hashing and must be labelled accordingly.
Do not manufacture a stability score by counting matching digest characters. The meaningful equality test is whether the complete digests match for the same algorithm and input definition. If you need to compare approximate waveforms, work with the samples rather than treating the digest as a distance measurement.
Diagnose an unavailable render
The browser may not expose the required interface, or the operation may fail or be restricted. This tool also applies a timeout to avoid waiting indefinitely. A timeout is an observation about completion within that limit; it does not reveal whether the graph would eventually finish.
Capture the exact error and repeat in a fresh tab. Check whether a browser privacy setting deliberately limits offline audio operations. If a supported application needs audio processing, test that application's actual workflow before changing global settings. Its graph and permission requirements may differ from this silent diagnostic.
A missing result should remain missing in your comparison record. Do not replace it with a constant digest, zero samples or a claim that tracking was blocked. Those substitutions make a failed measurement look like successful data and can mislead later comparisons.
Keep microphone permissions out of this diagnosis
Microphone capture generally involves requesting an input stream through a different API and permission flow. OfflineAudioContext generates and processes data already available to the page. A denied microphone permission therefore does not necessarily prevent this calculation, and a successful calculation does not imply microphone access.
If you see a microphone indicator while using a page, inspect which page and operation requested it. Do not attribute it to offline rendering simply because the diagnostic contains the word audio. The browser's site permission panel and the permissions audit can help distinguish a permission state from a particular operation.
Check the sample arithmetic
At 44,100 samples per second, 44,100 samples represent one second of signal. The selected 500-sample summary window spans about 11.34 milliseconds. Its start index, 4,500, is about 102 milliseconds into the generated signal. These positions describe the offline buffer and do not identify a moment of recorded room audio.
If you adapt the experiment to another sample rate, decide whether the window should preserve its index positions or its duration in seconds. Those choices produce different inputs. For example, keeping 500 samples at 48,000 Hz shortens the window to about 10.42 milliseconds.
Write the selected rate and index range into any comparison report. Without them, two absolute sums may appear inconsistent simply because they summarise different parts of the signal. Keep exact buffer hashing and window statistics as separate fields.
Frequently asked questions
Will muting my speakers change the fingerprint?
This test does not route the generated signal to the speakers. Muting physical output should not be treated as an input to the offline graph. If a result changes around the same time, repeat with controlled conditions before assigning a cause. The configured sample rate is also separate from a claim about the current physical output device.
Does a stable audio result mean privacy settings failed?
No. Some protections reduce available detail, some standardise values and some change results across selected boundaries. Stability within one test does not reveal the complete policy. Evaluate the browser's documented behaviour and your actual browsing requirements, then use repeatability measurements to check a specific claim about a setting.
Can this identify my voice?
There is no voice input in this test. The oscillator generates a waveform, and the compressor processes that waveform. Voice recognition requires recorded or supplied speech and a different analysis. The resulting digest describes generated samples, not vocal characteristics, microphone quality or what is happening in the room.
Why does another test show a different audio number?
It may use different oscillator settings, compressor parameters, sample windows or rounding rules. Even the same browser can produce many different numbers for different graphs. Find the input definition before comparing outputs. A bare decimal value without its computation method is a poor diagnostic reference.
Should I send the complete report to support?
Send the fields needed to reproduce the audio issue: browser build, graph version, error or repeatability pattern, and relevant settings. Remove unrelated identifiers from a combined browser report. If support needs exact sample equality, share the digest through the normal support channel and explain which two runs it compares.
Can I use this as a login identifier?
It is unsuitable as a reliable account identifier or authentication secret. Results can be shared by multiple systems, changed by updates or modified by privacy controls. Use an explicit account and a suitable authentication mechanism. A repeatable browser calculation does not prove possession of a secret or authority to access an account.