every navigator accessor and method is native, not just the well-known ones
Check id navigator-prototype-fully-native
What an ordinary browser yields
Every accessor and method on Navigator.prototype reporting native code, and no prototype accessor shadowed by an own property on the navigator instance (severity: warn).
What a detector infers
navigator-descriptors asks whether seven named properties resolve through native prototype getters. This asks the same question of EVERY property on Navigator.prototype, by enumerating it. The difference matters because a list is a guess about which properties a spoofer will reach for: patch oscpu, vendorSub, pdfViewerEnabled or any of the thirty-odd accessors outside that list and every other row on this page stays green. The check reads each descriptor and asserts only on what should be native code - accessors and methods - so constructor and Symbol.toStringTag, which are ordinary data properties on a stock browser, are not flagged. It also catches the classic instance shadow (an own property on navigator hiding a prototype accessor) across the whole surface rather than for seven names. Enumeration is what keeps it from rotting: there is no list to maintain, whatever the browser puts on Navigator.prototype is what gets checked, so a property introduced in a future Chrome is covered the day it ships, and "[native code]" is the browser's own claim about its own function rather than a value compared against a corpus. PROVENANCE: this row exists because a commercial fingerprinting service was measured posting its own enumeration of Navigator.prototype - every property paired with its getter's toString, around 5.6KB of it - while this page sampled seven. It was asking a strictly harder question of the same object, and the gap was not a technique we lacked but a loop we had not written.
How to resolve it
Change navigator values at the engine level rather than from page script. Any userland override - Object.defineProperty on the prototype, or an own property on the instance - leaves a function whose toString is JavaScript, and enumeration finds it wherever it is rather than only where a hardcoded list happened to look. Note that a privacy extension patching a navigator getter produces the same shape, which is why this is a warn and why the row names the properties instead of asserting a cause.
Nearby checks in Native function integrity
- Function.toString not proxied (native code)
tostring-nativeThe check stringifies two functions and requires both to match /\{\s*\[native code\]\s*\}/: Function.prototype.toString itself (read as… - navigator props resolve via native prototype getters
navigator-descriptorsFor deviceMemory, hardwareConcurrency, language, languages and platform, the check reads the property descriptor twice. - key native functions are untampered (toString + no prototype)
native-integrityThis runs a battery over roughly forty engine-owned callables — canvas, WebGL, navigator, iframe, shadow-DOM and fetch natives, plus the JS… - a fresh iframe (contentWindow) matches the main realm
iframe-coherenceThe check appends a hidden same-origin iframe to documentElement and reads its contentWindow — a brand-new JavaScript realm with its own… - Worker navigator matches the main thread
worker-navigator-coherenceA Blob-URL Worker is spawned and reports its own navigator.platform, navigator.hardwareConcurrency, navigator.webdriver and… - page-world natives that extensions commonly wrap
page-world-wrappersThis probe stringifies window.fetch and window.Request and asks whether each still renders as native code, then checks whether document… - nonexistent navigator properties return undefined
navigator-proxy-honeypotThis reads five navigator property names that exist on no browser — rml, ln, rnd, webdriverPatched and __clearcoteProbe — and additionally… - native methods enforce their C++ receiver check
native-brand-checksTwo native methods are invoked with their own bare prototype as the receiver…
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 Native function integrity 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 Native function integrity — the family navigator-prototype-fully-native belongs to.