Audio Fingerprint Test

Render a fixed waveform through a compressor twice, read the value your machine produces and see whether it holds still between two identical renders. Free, no signup.

  • Runs entirely in your browser
  • Nothing is played aloud
  • No signup

See the audio value this machine produces

The test renders a fixed oscillator and compressor offline, reads the slice fingerprinting scripts read, then renders the same graph again — because the repeat render is what shows whether anything is adding noise to the result. Nothing is played and your microphone is never touched.

Runs entirely in this browser. Nothing is uploaded, nothing is stored, no signup.

Now give every account its own device.

A clean browser is still one browser. Sendwin runs each profile in isolation with its own fingerprint, cookies and proxy, so the accounts you work on never look like they came from the same machine.

  • Isolated profiles, each with its own fingerprint and cookies
  • A proxy per profile, with the timezone bound to the proxy country
  • Windows, macOS and Linux — plus cloud sessions when you need them

The free plan includes 10 minutes of cloud browsing a day.

How silent audio becomes an identifier

Audio fingerprinting never plays a sound. It builds a small signal-processing graph — an oscillator into a dynamics compressor — and renders it offline, faster than real time, into a buffer the page then reads back. Because the render happens in software, the numbers that come out depend on the browser's audio implementation, the platform's DSP maths and how the CPU rounds floating-point arithmetic. Identical instructions, slightly different results per machine, and no permission prompt anywhere in the process: your microphone is never touched and nothing reaches your speakers.

The value is usually stored as a single scalar, the summed magnitude over a slice of the rendered buffer, which is compact enough to compare across visits without keeping the audio. This test computes that scalar and a hash of the same slice, then renders the whole graph a second time and compares — because the repeat render answers the question the first cannot: whether anything on this machine is adding noise between the render and the read.

Where the differences come from

The graph is deliberately boring: a triangle oscillator at a fixed frequency into a compressor with fixed threshold, knee, ratio, attack and release. What varies is everything underneath. Browsers implement the compressor's curve with their own code, so Chromium, Firefox and WebKit diverge on identical hardware. The platform's maths library resolves the transcendental functions inside it slightly differently. And floating-point results depend on the instruction set the browser was compiled for and how aggressively the operations were vectorised. None of these differences are audible, which is exactly why they survive — nobody has any reason to fix them.

It groups machines rather than picking one out

An audio value is coarser than a canvas hash. Two identical laptops running the same browser build usually produce the same number, so on its own it narrows you to a class of machine rather than to a device. That also makes it durable: it does not move when you install a font, change your screen resolution or update a graphics driver, and it stays put across private windows because nothing about it is stored. Its real weight comes from combination — a bucket that stays stable for months, sitting next to values that move, is a useful axis for a tracker even when it identifies nobody by itself.

Why an unstable value is worse than an ordinary one

The usual defence is to perturb the output so each read returns something different. Two identical renders in the same page load is all it takes to see that, and a real audio stack answers both identically — deterministic arithmetic is the entire point. So a browser returning two different values for the same graph has not hidden the fingerprint; it has replaced an ordinary value with a signal no genuine device produces. The same goes for refusing the API entirely: OfflineAudioContext ships in every mainstream browser, so its absence is rarer than any value it would have returned. What holds up is a stable value that fits the platform around it.

How the value is produced

  1. 1

    Render the graph offline

    A triangle oscillator at 10 kHz is fed through a dynamics compressor with fixed settings and rendered offline at 44.1 kHz. Nothing is played, and no microphone or speaker permission is involved.

  2. 2

    Read the slice everyone reads

    The check sums the magnitudes over the window past the compressor's attack and before the tail — the same slice fingerprinting scripts use — and hashes the samples in it.

  3. 3

    Render it again and compare

    The whole graph runs a second time. Identical output is how a real audio stack behaves; two different answers to identical instructions mean noise is being injected between the render and the read.

Audio fingerprinting FAQ

What gets measured, why no microphone is involved, and why an unstable value is louder than an ordinary one.

It is a value derived from how your browser renders a fixed audio graph in software. A page builds an oscillator and a compressor, renders the result offline, and reads the numbers back. Small differences in the browser's audio implementation, the platform's maths and the CPU's floating-point behaviour make the output stable per machine and different across machines, which is enough to use it as one signal among several.

Neither. The render happens in an offline context, which computes the buffer as fast as it can and hands it back as numbers — there is no output device involved and no permission prompt. Your microphone is never accessed. If your browser asks for anything during this check, it is not this page.

You can, with an extension or a browser setting that adds noise to the output or refuses the API. Both are visible: a real audio stack returns byte-identical results for two identical renders, so a value that changes between them says a tool is present, and OfflineAudioContext missing entirely is rarer still because every mainstream browser ships it. Blocking removes one identifier and hands over a more distinctive one in its place.

Because the audio fingerprint groups machines rather than isolating them. The same browser build on the same platform and a similar CPU generally produces the same number, so the value describes a class of device. That is normal, and it is why the signal matters mainly in combination with everything else a page reads rather than on its own.

A browser update is the usual reason — the audio implementation is part of the browser, so a new version can shift the arithmetic slightly. Moving to a different browser or a machine with a different CPU changes it too. What should never change is the answer between two renders in the same second, which is the check this page is really built around.

We cannot tell you, and nobody should claim to without the database to back it. We hold no record of other visitors' values and will not invent a percentile. What this page can honestly tell you is the value your machine produces, whether it is stable under repeat measurement, and whether the offline context honoured the sample rate it was asked for.

Still have questions? Talk to us →

How to read your value

This page measures the value this browser produces right now and whether it produces the same one twice. It is not a rarity ranking — we hold no database of other visitors' audio values and will not estimate one. Read a stable value as “this audio stack behaves like software doing deterministic arithmetic” and an unstable one as “something is rewriting the buffer between the render and the read”.

One audio stack per profile, not one per read.

Sendwin builds each profile's rendering and audio behaviour at the engine level, so the value holds still under repeat measurement and fits the platform around it. Free for 30 days on Windows, macOS and Linux.

30-day free trial · $0 today · cancel anytime — your profiles stay on your machine

Try in the cloud →Start free trial