Skip to content

Can a browser hide which operating system it runs on?

Partly. Everything a browser says about its operating system is a string it controls: the user agent, navigator.platform, the User-Agent Client Hints. A patched engine can make all of those agree. But some of what a page reads is produced by the operating system underneath, and the browser only passes it along.

Text is the clearest case. Every glyph is sized by the OS's own font scaler: DirectWrite on Windows, FreeType on Linux and Android. Step a font size up by a hundredth of a pixel and measure a line of text: on Windows the width changes on 99% of steps, on Linux on about 66%, and a Linux browser presenting Windows still reads 66%. Fonts behave the same way. On Windows, a font that measures as installed also loads by name through local(); on Linux, look-alike fonts measure right but carry other names. Both measurements are in the font stack under the user agent.

So the reliable way to present an operating system is to run on it. Clearcote's Linux build claims Linux by default for this reason, and the Windows build and hosted browsers run on Windows. The fingerprint test checks both surfaces against whatever your browser claims.

Clearcote puts this into practice

An open-source Chromium with fingerprint control compiled into the engine. A drop-in for Playwright & Puppeteer.

Free for one browser with GitHub. No card.