the CPU architecture matches the architecture the browser claims
Check id cpu-arch-nan-vs-uach
What an ordinary browser yields
The architecture read from the quiet-NaN sign bit matches navigator.userAgentData's architecture hint — both x86, or both arm.
What a detector infers
IEEE-754 fixes the exponent and the quiet bit of a NaN but leaves the sign bit to the hardware, and the hardware disagrees: an x86 FPU produces 0xFFF8000000000000 for 0/0 with the sign bit SET, while an ARM one produces 0x7FF8000000000000 with the sign CLEAR. Reading that single bit reveals the physical CPU family, and it is produced by the silicon — no JavaScript override, no user-agent edit, nothing in the page can reach the floating-point unit. Against it stands navigator.userAgentData's architecture hint, which is merely a string the browser reports and a spoof can rewrite freely. Two independent sources for one fact, so a disagreement means the claimed architecture is not the one the processor actually is: an x86 server wearing an Apple-Silicon Mac's user agent, or the reverse. The check hangs on one detail that only measuring reveals. The dividend MUST be a runtime zero, not the literal 0/0: V8 folds a literal 0/0 to the canonical quiet NaN (sign clear) at compile time regardless of the host CPU, so on a real x86 Windows machine the literal reads as ARM — the exact false positive the technique warns about, confirmed live before this shipped. Math.random() times zero is still zero but opaque to the constant folder, so the division happens at runtime on the real FPU. Two honest limits keep it fair: the architecture hint exists only on Chromium, so elsewhere the reading is reported rather than asserted; and x86 emulation such as Rosetta runs x86 floating-point semantics and reports x86 on both sides, so it agrees rather than tripping.
How to resolve it
The NaN sign bit is set by the FPU, below anything a page or a CDP override can reach, so it cannot be brought into line by editing a value. If it disagrees with the architecture hint, the hint claims a processor the hardware is not — run the browser on the CPU it presents.
Other checks in Engine & OS oracles
- The measured JS engine matches the engine the User-Agent claims
js-engine-identifier-vs-uaTwo values are read straight out of the JavaScript engine itself: the character length of the RangeError message thrown by (-1).toFixed(-1)… - Math.tanh rounds the way the claimed OS's libm rounds
math-tanh-os-vs-uaIEEE 754 fixes how a double is stored but does not require transcendental functions to be correctly rounded, so every operating system's C… - which OS hyphenation engine the browser hyphenates through
hyphenation-engine-osWhen CSS asks a browser to hyphenate a long word, the break points come from a dictionary supplied by the operating system — and the… - the three heap numbers describe a possible heap
jsheap-triplet-orderingThis check replaces a retired one, and the swap is the lesson. - the platform's system font belongs to the operating system claimed
system-font-vs-claimed-osThe CSS2 system-font keywords — caption, icon, menu, message-box, small-caption and status-bar — are resolved by the HOST platform's font… - typefaces the claimed OS ships as separate faces measure as separate faces
claimed-os-typefaces-are-distinctA font request is answered by the host's font stack, not by the browser and not by anything the user agent sets, so changing…
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 Engine & OS oracles 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 Engine & OS oracles — the family cpu-arch-nan-vs-uach belongs to.