Android Mobile UA with devicePixelRatio 1 — a phone is never 1x
br.android_mobile_dpr1 · convicts
What it catches
The Android-phone analog of br.ios_dpr_incoherent (and the Android gap it fills — there was an iOS DPR bound + a macOS one, but none for Android). A modern Android PHONE (a 'Mobile' token on a current Chrome UA) is high-density: window.devicePixelRatio is 1.5 / 2 / 2.625 / 2.75 / 3 / 3.5 / 4 — NEVER exactly 1, which is the desktop default. An Android 'Mobile' UA reporting devicePixelRatio === 1 is a desktop wearing a phone UA that set the screen/touch surfaces but not the backing scale (or set nothing) — the partial/UA-only mobile spoof. FP-SAFE: every modern phone is >= 1.5x and the check is gated on the 'Mobile' token (a phone, NOT a low-density tablet / Android-TV / Android-Auto, which omit 'Mobile'); a full device emulation (KS_DEVICE=Pixel, DPR 2.75) sets the real backing scale and stays SILENT. EXPERIMENTAL (w0.5, corroborating): a pre-2014 mdpi phone would be a rare FP, but such a device does not send a current Chrome UA. Complements the pointer (br.mobile_pointer_hover_desktop) and screen (br.android_phone_screen_oversized) mobile surfaces — a distinct backing-scale entry point. GROUNDED LIVE: SPOOF_UA=<a Pixel 5 mobile UA> with NO device emulation (DPR 1) FIRES android_mobile_dpr1; KS_DEVICE='Pixel 5' (DPR 2.75) is SILENT.
Signals it reads
browser.android_mobile_dpr1
How it fires
present
Bypassed by 10
Frontier evaders that reach the detector uncaught (scored only suspicious, defeating every convicting tell) — this check is not one that stops them. The red-team frontier this detection still has to convict.