


liarjs.dev reads your browser in JavaScript, then asks the network layer what it actually saw. A browser controls its own JavaScript but not the connection it arrives on, so every disagreement between the two is a finding. Detection runs on three separate axes that fail independently. Fingerprint: Canvas, WebGL, WebGPU, audio, fonts, timezone and the plugin face. Network: TLS version, HTTP protocol, ASN, header shape and exit-IP geography, read at the Cloudflare edge. Automation: navigator.webdriver, framework residue, headless tells and a pointer-movement challenge. The score measures internal coherence, not a ban prediction, and stays provisional until the challenge is passed. The passive checks ship as an MIT-licensed npm package: run npx liarjs against a patched Chromium, a stealth automation stack or an antidetect profile and get the same score with an exit code in CI.