| Component name | screen_frame |
|---|---|
| In the visitorId | no (reported, kept out of both ids) |
| structuredId group | none |
| 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 2 |
Your operating system keeps part of the screen for itself: the Windows taskbar, the macOS menu bar and Dock, a Linux panel. Browsers tell pages how much of the screen is available, so the difference shows how big that frame is and on which edge. WhiskerJS reports it as four numbers but keeps it out of the identifiers, because people move and hide their taskbars.
What it reads
From window.screen: width, height, availWidth, availHeight, and, where the browser has them, availTop and availLeft.
How the technique works
- All four of
width,height,availWidth,availHeightmust be finite numbers, otherwiseunavailable. topisavailTop(0 when missing),leftisavailLeft(0 when missing).rightiswidth - availWidth - left,bottomisheight - availHeight - top.- The four values are rounded and written as
top,right,bottom,left.
Why it helps
The frame follows the operating system and the user’s layout: a 48 px taskbar at the bottom (0,0,48,0) is typical of Windows, a menu bar at the top is typical of macOS, and many setups are custom. It is useful context for your server and a consistency check against the platform.
Read it together with screen_resolution and platform: a frame that fits the platform (a bottom taskbar on Windows, a top menu bar on macOS) is ordinary, while a desktop user agent with no frame at all is common in virtual machines, kiosks and headless setups.
Stability
Medium to low. It changes when the taskbar or dock is moved, resized or set to hide, and with multiple monitors (on some systems availTop and availLeft are positions within a larger desktop, which then shows up here). That is why it is outside both ids.
Browser support and what blocks it
- Available in all current browsers. Phones and tablets often report
0,0,0,0or a small top frame for the status bar, depending on the browser. - Firefox resistFingerprinting and Tor Browser:
excluded/firefox_rfp: there the available area is reported equal to the screen. “No taskbar space” is also one of the traits WhiskerJS needs before it classes a Firefox asfirefox_rfp.
Privacy
It reveals the user’s screen layout preference (taskbar position and size), nothing more. It is not in an id.
How WhiskerJS handles noise and failures
| Status | ruleId | When |
|---|---|---|
ok |
top,right,bottom,left |
|
unavailable |
no_api |
no screen, or a size is not a finite number |
excluded |
firefox_rfp |
browser class firefox_rfp |
excluded |
caller_excluded |
you excluded it |
timed_out |
timeout, aborted |
budget or abort |
Example value
All three headless test browsers in the container reported 0,0,0,0 (no taskbar on a virtual display). A Windows laptop with a bottom taskbar typically reports something like 0,0,48,0.
Questions and answers
Why is screen_frame not in the id?
It changes when the user moves or resizes the taskbar or dock, hides it, or the window is on another monitor. That is too common for an identifier.
What does 0,0,0,0 mean?
The browser reports no space kept by the system: for example a phone, a full-screen setup, a headless browser, or a browser that normalises the available area.