Signal · signalsVersion 5

screen_resolution

The screen size in CSS pixels, larger side first, so that rotating a phone does not change it.

screen_resolution at a glance (from the library code, signalsVersion 5)
Component namescreen_resolution
In the visitorIdyes
structuredId groupdevice (screen, memory, CPU)
Hashingplain value; a digest only when longer than 128 characters or not printable ASCII
Excluded underFirefox resistFingerprinting and Tor Browser (firefox_rfp)
Inner timeout1000 ms
Added insignalsVersion 1
In plain words

This is the size of your screen as the browser reports it, for example 1920x1080 on a common monitor or 932x430 on a large phone. WhiskerJS always writes the longer side first, so turning a phone sideways does not change it. It is a simple value, but it separates many devices.

What it reads

screen.width and screen.height. Both are rounded to whole numbers and written as <larger>x<smaller>.

How the technique works

The screen object describes the display the window is on, in CSS pixels. On phones and tablets the two numbers swap when the device rotates; sorting them removes that difference. If either value is missing or not a finite number, the component is unavailable / no_api.

Why it helps

Screen sizes cluster around common models, but the combination with other device values (colour depth, CPU threads, memory, touch support) separates devices well. On phones the CSS screen size often follows the model closely. It is in the device group.

Stability

It changes when the window moves to a different monitor, when the primary display changes, when the operating system’s display scaling changes (which changes the CSS pixel size), or on a new device. It does not follow the window size in normal browsers. Because the value is in CSS pixels, some browsers also report a different size while the page is zoomed; WhiskerJS does not correct for that. Note that a different monitor or scaling setting changes the device part of the structuredId; see What changes the id.

Browser support and what blocks it

  • ok in all browsers.
  • Firefox resistFingerprinting and Tor Browser: excluded / firefox_rfp, because the screen is reported as the content area.
  • Headless browsers often report a fixed default size; the container test runs used for these pages reported 1280x720 in Chromium, Firefox and WebKit.

The same screen.width and screen.height are compared with a clean iframe by the iframe_mismatch check and checked for patched getters by native_tampering.

Privacy

A screen size is coarse device information, read without permission or prompt, reported as plain text (it is short and ASCII). WhiskerJS sends nothing itself.

How WhiskerJS handles noise and failures

Status ruleId When
ok none for example 1920x1080
unavailable no_api no screen, or width or height not a number
blocked security_error, threw reading threw
excluded firefox_rfp, caller_excluded exclusion table or your list
timed_out timeout, aborted 1000 ms inner timeout, budget, abort

Example value

"screen_resolution": { "status": "ok", "value": "2560x1440", "hashed": false }

Other typical values: 1920x1080, 932x430.

Questions and answers

Does rotating my phone change screen_resolution?

No. WhiskerJS always reports the larger side first, so portrait and landscape give the same value, for example 932x430.

Is this the physical resolution of the display?

No. screen.width and screen.height are in CSS pixels. A high-density display reports a smaller size than its physical pixels; the ratio between them is the separate pixel_ratio component.

Why is it excluded under Firefox resistFingerprinting?

That mode reports the content area of the window as the screen size, so the value describes the window, not the screen.