Two things your browser says can’t both be true
An unusual value costs you a little. A pair of values that cannot belong to one machine costs you a lot, because it means something rewrote one of them. Ordinary people end up here through extensions, not through their hardware.
Your browser reports many facts about the machine it runs on: the system in its user agent, the graphics chip WebGL names, the screen size, whether there is a touch screen, which fonts are installed. On a real machine these facts come from the same hardware and the same system, so they fit together.
Change one without the others and they stop fitting. A user agent that says Windows next to a graphics renderer only Apple makes. A user agent that says iPhone with no touch points. A screen smaller than the window drawn on it. No machine produces these pairs, so a check reads them as rewritten values.
What usually causes it
- User-agent switchers, which change the system name but leave the graphics chip, fonts and touch support as they are.
- Fingerprint-randomising extensions, which change values on every load, so the browser contradicts itself between two requests a second apart.
- Developer tools device emulation left on, which shrinks the window and claims a phone while the rest of the browser stays a desktop.
- Remote desktops and virtual machines, which can report a screen or a graphics chip that does not match the system in the user agent.
How to fix it
- Turn off any extension that changes the user agent, the canvas or the screen size, then restart the browser.
- Close developer tools, or turn off device emulation in them.
- Take a reading. The contradiction row names the pair that disagrees, so you can see which value is the rewritten one.
Signals that disagree
Two things your browser reports about itself cannot both be true.
- Turn off any user-agent switcher, spoofing extension or 'privacy' extension that rewrites what your browser reports.
- Restart the browser and read again. A contradiction that survives a restart is coming from something that starts with the browser.
This row's prior is chosen from the reading itself rather than from a single fixed number, so the arithmetic is printed on your own row instead of here. How the ranking works →
Questions about the “Signals that disagree” row
- Why does changing my user agent cause captchas?
- Because the rest of your browser still describes the real machine. A user agent claiming one system next to a graphics chip, fonts or touch support from another is a pair no real machine produces, and checks treat it as a rewritten value.
- Do anti-fingerprinting extensions help against bot checks?
- Usually the opposite. Values that change on every load, or that contradict each other, stand out far more than a stable ordinary browser. They can protect you from tracking across sites and still cost you challenges on each one.
- Can my hardware cause a contradiction?
- Rarely. Two monitors and a laptop on a dock can produce mild screen oddities, which this row ignores. Strong contradictions come from software that rewrites values.
READ AT PRIOR TABLE ED. 1.0.0 · 2026-10-13 · ASSUMED, NOT MEASURED
The rank is taken against 15 written assumptions about how common each value is and 16 written weights about how much each one matters. 9 of them we think are probably wrong. Real counts from the browsers these sites have read appear beside a row, never inside its rank. Read the assumptions →
The rows you cannot fix from a settings page
A VPN you need for work, an address your ISP shares with a thousand other subscribers, a laptop with no graphics chip, a hardened profile that breaks the sites it was meant to protect — none of these have a checkbox. What is left is to present a reading that is internally consistent and ordinary on purpose, instead of one that is accidentally strange.
Donut Browser does that at the engine level: its Wayfern Chromium fork applies the fingerprint through CDP injection rather than patching JavaScript in the page, and it refuses to launch a profile whose proxy exit country, time zone and language contradict the profile's own fingerprint — which is the top row of most readings on this site. It is AGPL-3.0, it has no telemetry of any kind, and it runs on macOS, Windows and Linux.
Stated plainly: this site has no test results showing what any particular anti-bot service does with any particular browser, and neither does Donut Browser's own repository. What can be checked is the source, which is public.
Free · AGPL-3.0 · github.com/zhom/donutbrowser