screen.width/height backed by the display (matchMedia)
matchMedia(device-width/device-height) matches the reported screen.width × screen.height exactly — or N/A on Brave, whose per-origin screen farbling legitimately disagrees with the media-query engine.
What a detector infers
This check reads window.screen.width/height, then asks the CSS media-query engine the same question via matchMedia("(device-width: Npx) and (device-height: Npx)"). The two values come from different layers: screen.* is a navigator-adjacent JS property that is trivial to override, while the device-width/device-height media features are resolved by the layout engine against the actual render surface it was handed.
A detector that reads both and finds them disagreeing learns that the JS-visible screen size was rewritten after the fact while the compositor kept rendering at the real size. The inference is reliable because there is almost no ordinary configuration — no zoom level, no multi-monitor setup, no DPI scaling — in which a real browser's screen dimensions and its own device-width media feature diverge; they are derived from the same display metrics.
The one ordinary exception is carved out: Brave farbles screen.* per-origin as a stock privacy defence while the media-query engine keeps resolving the real surface, so every genuine Brave disagrees here (the corpus showed 100% failing). The check declines (N/A) on Brave rather than scoring a privacy feature — the same exemption pattern as canvas-tamper.
How to resolve it
Do not override screen dimensions in JS. If a specific screen size is required, give the browser a real render surface of that size — run headful on a display with those dimensions, or use a virtual display (Xvfb and similar) sized accordingly — so the JS property and the layout engine derive from the same source.
Read in the wild by
Commercial detector A
Reads the screen geometry in both realms, and the device-width media feature separately.
window_screen_width / iframe_screen_width, window_screen_avail_height, device_width, device_height
Commercial detector D
Lists screen width/height/availWidth/availHeight/colorDepth/pixelDepth as browser-fingerprint signals.
[internal reference] - 1. Browser Fingerprint - Screen properties
Every attribution traces to a published artifact. See the sources and their limits.
Nearby checks in Screen & display
- An element that went fullscreen gets the screen and the fullscreen display mode
fullscreen-is-real-fullscreenWhen a page calls requestFullscreen() during a click, Chrome normally makes the whole window fullscreen: document.fullscreenElement is set… - A frameless window covering its screen is in fullscreen display mode
frameless-covering-is-fullscreenA desktop browser window has a frame — tab strip, toolbar, borders — so its outer size is larger than its viewport. - devicePixelRatio is the scale layout actually rasterises at
dpr-vs-device-pixelsdevicePixelRatio is meant to be the scale at which layout is rasterised, and several parts of the browser act on the real scale rather than… - Pointer coordinates agree with the window's own position
event-coords-vs-window-geometryA pointer event carries viewport coordinates (clientX/Y) and screen coordinates (screenX/Y), and the browser derives the second from the… - devicePixelRatio matches matchMedia resolution
dpr-matchmediaThe check compares window.devicePixelRatio against the layout engine's own answer, querying matchMedia with a min-resolution/max-resolution… - The screen times devicePixelRatio is a panel a monitor actually has
dpr-screen-vs-panelOn Windows, screen.width and screen.height are reported in scaled pixels — the physical panel divided by the display scale — and at 100%… - Screen dimensions are a plausible physical size
screen-plausibleA pure sanity range on screen.width and screen.height: both must be at least 200px and no more than 16384px. - The available screen area fits inside the screen
screen-avail-within-boundsThe available screen area is a subset of the screen by definition: availWidth and availHeight describe what is left of width and height…
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 Screen & display 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 Screen & display — the family screen-matchmedia belongs to.
