| Component name | screen_resolution |
|---|---|
| In the visitorId | yes |
| structuredId group | device (screen, memory, CPU) |
| Hashing | plain value; a digest only when longer than 128 characters or not printable ASCII |
| Excluded under | Firefox resistFingerprinting and Tor Browser (firefox_rfp) |
| Inner timeout | 1000 ms |
| Added in | signalsVersion 1 |
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
okin 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
1280x720in 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.