silence renders as exact zero through the Web Audio graph
Check id audio-render-silence-integrity
What an ordinary browser yields
An unconnected offline context and a gain-0 oscillator both render channel data that is exactly zero at every sample.
What a detector infers
The other audio checks compare two renders of a sound; this one renders silence and asserts it stayed silent, which catches a different kind of tamper. An audio stack that adds a per-sample noise floor to defeat fingerprinting cannot tell a quiet signal from no signal, so it leaks its noise into a buffer that must be bit-exact zero. Two silences are rendered: an OfflineAudioContext with nothing connected to its destination, and an oscillator routed through a gain node pinned to zero. A real Web Audio graph produces exact zero in both. Negative zero is treated as zero, and the gain node is both constructed with a gain of 0 and pinned with setValueAtTime, so no de-zippering ramp exists at the head of the buffer — older Chrome smoothed a gain change to zero over about 20 milliseconds, and without this precaution that onset would read as a false non-zero on a genuine old browser. The signal is strong because silence is the one output a perturbing stack cannot hide inside: there is nothing for the noise to blend into.
How to resolve it
Do not inject per-sample noise into the Web Audio output. A graph that cannot render exact silence reveals its perturbation on every buffer, including the ones carrying no sound. Leave the audio stack native, or perturb nothing.
Read in the wild by
CloakBrowser issues
Multiple tracker reports concern audio-fingerprint noising that leaks into outputs it should not touch — the failure mode this check reads directly.
CloakHQ/CloakBrowser #437, #446, #400 (audio fingerprint noise)
CloakHQ/CloakBrowser#437Every attribution traces to a published artifact. See the sources and their limits.
Nearby checks in Render & GPU
- WebGPU's build constants are identical in every realm
webgpu-sync-surface-vs-realmWebGPU's cheapest fingerprint is not the GPU at all. navigator.gpu.getPreferredCanvasFormat() and navigator.gpu.wgslLanguageFeatures are… - the GL limits the driver reports are limits the driver will actually honour
webgl-limits-vs-driverEvery other WebGL check on this page reads what getParameter SAYS. - ANGLE's translated shader is written in the dialect the renderer string implies
shader-backend-vs-rendererThe UNMASKED_RENDERER_WEBGL string is a label — a piece of text a page can rewrite to name any GPU and any graphics backend. - every extension WebGL advertises can actually be instantiated
webgl-extensions-vs-drivergetSupportedExtensions() returns a list a page can rewrite; getExtension(name) either hands back a real extension object or null, and that… - the clear path and the shader path paint opaque red to the same bytes
webgl-draw-path-invarianceOpaque red can be produced two ways: the fixed-function clear path, and a fragment shader emitting vec4(1,0,0,1). - a mediump claim of fp32 precision is delivered by the arithmetic
shader-mediump-claim-vs-arithmeticgetShaderPrecisionFormat is a claim about float precision; a shader that computes a value only fp32 can represent is the GPU keeping or… - a constant signal renders at exactly the amplitude it was given
audio-render-dc-integrityThe companion to the silence check below, and the input that one structurally cannot see. - a browser that implements EME can satisfy its mandatory ClearKey baseline
eme-clearkey-baselineEncrypted Media Extensions is the DRM entry point, and it has one part that cannot be missing.
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-silence-integrity belongs to.