Linux reports an empty platformVersion, as Chromium leaves it
Under platform 'Linux', platformVersion is the empty string. N/A for every other platform and for engines without client hints (severity: warn).
What a detector infers
The platformVersion client hint is the operating system's version on Windows and macOS, but Chromium deliberately leaves it empty on Linux: GetPlatformVersion in components/embedder_support returns an empty string for Linux builds, headed or headless, and chrome-headless-shell calls the same function. So a client claiming platform 'Linux' with a platformVersion such as '6.8.0' — a kernel version — is filling in a value Chromium never sends.
Measured empty on genuine Linux Chrome headed, headless and under Playwright, and on all 40 genuine-looking Linux captures in the audit's corpus. The failures are the expected ones: a DevTools-protocol user-agent override whose metadata claims Linux with '6.8.0', and eight corpus captures reporting '6.14.0' or '7.0.0'. The rule is Linux-only. ChromeOS is a separate platform in Chromium and reports a real version, and so does Android.
How to resolve it
Leave the client hints to the browser, which already sends an empty value on Linux. A metadata override that fills platformVersion with a kernel version describes a Linux Chrome that does not exist.
Nearby checks in Navigator identity
- Every account of the full browser version names the same build
ua-ch-full-version-agreesChrome reports its full build number three ways through User-Agent Client Hints: the legacy uaFullVersion value, and the Google Chrome and… - getLayoutMap behaves like a browser IPC, not a script
keyboard-layout-map-semanticsnavigator.keyboard.getLayoutMap() is not computed in the page: it asks the browser process for the current layout over IPC and resolves when… - navigator.platform ↔ UA ↔ UA-CH platform agree
platform-coherenceThree independent surfaces each name an operating system, and this check normalises all three to one family (win / ios / mac / lin) and… - UA-CH brand version matches the UA Chrome version
uach-ua-versionThe check extracts the major from Chrome/(\d+) in the UA string, finds the Chrome or Chromium entry in navigator.userAgentData.brands, and… - UA-CH high-entropy hints cohere with the UA
uach-highentropyThis awaits navigator.userAgentData.getHighEntropyValues and compares the richer hints against the UA string on three axes, collecting every… - Every brand in a UA-CH list uses the same version format
uach-brand-version-arityUA-CH publishes the same brand set twice at two precisions. navigator.userAgentData.brands carries bare majors like "148", and the… - navigator.language === languages[0]
languages-coherenceIn a real browser navigator.language is defined as the first element of navigator.languages — one preference list, two views onto it. - The host voice roster represents the language the browser claims
locale-vs-voice-coherenceThe voice roster is installed at the operating-system level and the language preference is set in the browser, so the two are genuinely…
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 Navigator identity 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 Navigator identity — the family linux-platform-version-empty belongs to.
