What Is Screen Fingerprinting? How Resolution and Pixel Ratio Identify Your Device
Browser & Device

What Is Screen Fingerprinting? How Resolution and Pixel Ratio Identify Your Device

Screen fingerprinting reads your display resolution, devicePixelRatio, and color depth to build a persistent identifier β€” no cookies required, and it survives incognito mode.

7 min readΒ·

Screen fingerprinting reads your display's resolution, pixel density, and color depth through built-in browser APIs to build a stable identifier that persists across sessions, private windows, and VPN connections. You can see exactly what your screen exposes right now on whatsmy.fyi.

TL;DR

Screen fingerprinting combines values from window.screen and window.devicePixelRatio β€” your display resolution, available viewport, color depth, and pixel density ratio β€” to create a persistent device identifier. On its own it contributes 3–5 bits of entropy; combined with other fingerprinting signals it becomes a reliable cross-session tracker that no amount of cookie clearing or private browsing can defeat.

What Is Screen Fingerprinting?

Screen fingerprinting is a passive browser tracking technique that harvests display characteristics exposed by the Screen API and the window.devicePixelRatio property. These APIs were designed to help web developers build responsive layouts and correctly size images for high-density displays β€” but they simultaneously hand fingerprinting scripts a detailed description of your physical monitor and hardware configuration.

Unlike canvas or WebGL fingerprinting, screen fingerprinting requires no rendering β€” the values are available synchronously, without any computation, the instant a page loads. A single line of JavaScript is enough to read a device's full screen profile. This makes it one of the lowest-cost, highest-availability fingerprinting vectors available to trackers.

Screen fingerprinting is a key signal in the broader family of browser fingerprinting techniques. It is routinely combined with GPU data from WebGL fingerprinting, audio stack data from audio fingerprinting, and rendering differences captured by canvas fingerprinting to form a composite identifier.

How Does Screen Fingerprinting Work?

Every browser exposes a set of read-only properties describing the physical display and the relationship between CSS pixels and physical pixels. Fingerprinting scripts collect all of them in a single pass.

The Core Properties

screen.width / screen.height β€” The total pixel dimensions of the physical display, reported in CSS pixels. A 1920Γ—1080 monitor at 100% scaling reports 1920 Γ— 1080. The same monitor at 125% Windows scaling reports 1536 Γ— 864, immediately revealing the OS scaling setting.

screen.availWidth / screen.availHeight β€” The portion of the screen available to browser windows, after subtracting taskbars, docks, and system UI. On a 1920Γ—1080 Windows machine with a 40px taskbar at the bottom,availHeight is 1040. This reveals which OS you are running and whether your taskbar is visible, pinned, or set to auto-hide.

window.devicePixelRatio β€” The ratio of physical display pixels to CSS pixels. A standard 1080p monitor has a ratio of 1. A MacBook Pro Retina display has 2. A 27-inch 5K iMac has 2as well. A modern Android flagship at 3Γ— scaling has 3. This single value reliably distinguishes HiDPI devices from standard displays, Retina Macs from Windows machines, and budget phones from flagship models.

screen.colorDepth / screen.pixelDepth β€” The number of bits used to represent each pixel's color. In practice this is 24 on virtually every modern device, but legacy systems and some remote desktop configurations return 16 or 8, making it a useful signal for detecting virtualized or embedded environments.

screen.orientation.type β€” Reports whether the display is in portrait or landscape orientation, and whether it is the primary orientation for the hardware. On desktop this is always landscape-primary; on mobile it changes, and a phone that is nearly always held in portrait reveals a behavioral pattern.

window.innerWidth / window.innerHeight β€” The dimensions of the browser's current viewport, including scrollbar width but excluding browser chrome. These change with window resizing, but at page load they reflect the user's typical window size β€” another behavioral data point.

The Code

// Screen fingerprinting β€” all values are synchronous, no rendering needed
function getScreenFingerprint() {
  const dpr = window.devicePixelRatio;

  return {
    // Physical display dimensions (CSS pixels)
    screenWidth:      window.screen.width,
    screenHeight:     window.screen.height,

    // Available area after system UI (taskbar, dock)
    availWidth:       window.screen.availWidth,
    availHeight:      window.screen.availHeight,

    // HiDPI / Retina ratio β€” key differentiator
    devicePixelRatio: dpr,

    // Physical pixels (what the GPU actually renders)
    physicalWidth:    Math.round(window.screen.width * dpr),
    physicalHeight:   Math.round(window.screen.height * dpr),

    // Color depth β€” usually 24; lower values flag VMs or legacy systems
    colorDepth:       window.screen.colorDepth,
    pixelDepth:       window.screen.pixelDepth,

    // Viewport β€” reflects browser window state at load time
    innerWidth:       window.innerWidth,
    innerHeight:      window.innerHeight,

    // Orientation
    orientation:      screen.orientation?.type ?? 'unknown',
  };
}

// Example output β€” MacBook Pro 14-inch (2023), Chrome, fullscreen
// {
//   screenWidth: 1512, screenHeight: 982,
//   availWidth: 1512,  availHeight: 932,   ← 50px macOS menubar
//   devicePixelRatio: 2,
//   physicalWidth: 3024, physicalHeight: 1964,
//   colorDepth: 24, pixelDepth: 24,
//   innerWidth: 1512, innerHeight: 879,
//   orientation: 'landscape-primary'
// }

The combination of screenWidth, screenHeight, devicePixelRatio, and availHeight alone is sufficient to distinguish among dozens of common device classes. When the taskbar offset is included, many configurations become unique without any further signals.

How Unique Is a Screen Fingerprint?

Screen data on its own provides moderate entropy β€” enough to narrow down your device class significantly, but rarely enough to uniquely identify you in isolation. Its power comes from the way it combines with other signals.

Signal / FindingValueSource
Entropy from screen resolution alone~3.3 bitsEFF Cover Your Tracks
Entropy with devicePixelRatio added~4.8 bitsBrowserLeaks
Most common screen resolution globally (1920Γ—1080)~24% of usersStatcounter GlobalStats, 2025
Users with unique screen profile (resolution + DPR + OS scaling)~18%Fingerprint.com research
Distinct devicePixelRatio values seen in the wild1, 1.25, 1.5, 1.75, 2, 2.5, 3, 3.5BrowserLeaks dataset
Combined fingerprint accuracy (screen + canvas + WebGL)>95%Fingerprint.com Pro

The 24% of users sharing a 1920Γ—1080 resolution sounds like protective cover β€” but within that group, differences in devicePixelRatio, taskbar height, OS scaling settings, and viewport size rapidly subdivide the population. A 1920Γ—1080 display at 125% Windows scaling produces screenWidth: 1536, immediately separating it from users at 100% scaling. A MacBook Pro with its 16:10 aspect ratio stands out from every 16:9 Windows monitor at a comparable CSS resolution.

Who Uses Screen Fingerprinting in the Real World?

Advertising and Cross-Site Tracking

Screen data is a standard input in every commercial fingerprinting platform. Because it requires no rendering and is available instantly on page load, it is one of the first signals collected. Ad-tech networks combine it with IP address, timezone, language, and platform data to form a stable cross-site identifier that functions as a cookie replacement across browsers and devices.

Fraud Detection and Account Security

Security platforms use screen fingerprinting to detect when a new device is logging into an existing account. A sudden change in devicePixelRatio or screen dimensions β€” for example, switching from a Retina Mac (dpr: 2) to a standard 1080p desktop (dpr: 1) β€” is a strong risk signal for account takeover attempts, credential stuffing, or session hijacking.

Device Type Inference

devicePixelRatio is one of the most reliable signals for distinguishing device categories without reading the User-Agent string. A ratio of 2or higher reliably indicates a HiDPI display β€” nearly universal on modern smartphones and Apple hardware. Combined with screen dimensions, it lets fingerprinting scripts accurately infer device class (flagship phone, mid-range phone, budget phone, laptop, desktop) and adjust tracking strategies accordingly.

Paywall and Metered Access Bypass Detection

Publishers that enforce article limits use screen fingerprinting alongside canvas and cookie data to identify users who clear cookies or switch to incognito mode. Because screen dimensions and pixel ratios are hardware properties, they are unaffected by session clearing.

Screen Fingerprinting and Privacy Law

The W3C Fingerprinting Guidance explicitly lists screen.width, screen.height, and devicePixelRatio as fingerprinting vectors that specification authors must consider. Under GDPR, fingerprinting data that can reasonably be linked to an individual constitutes personal data processing, requiring either informed consent or a legitimate interest justification. The French CNIL and the UK ICO have both stated that fingerprinting for advertising purposes requires explicit opt-in consent β€” but enforcement remains inconsistent across jurisdictions.

How to Protect Yourself from Screen Fingerprinting

Because screen data reflects real hardware properties, you cannot change it the way you can clear cookies. Defences focus on normalization and noise injection:

  • Tor Browser (strongest protection): Tor Browser normalises all screen values β€” it reports a standardised resolution of 1000Γ—900(or similar) regardless of your actual display, and fixes devicePixelRatio at 1. Every Tor user looks identical to screen fingerprinting scripts. The trade-off is the Tor network's reduced speed.
  • Firefox with privacy.resistFingerprinting (RFP): When RFP is enabled in about:config, Firefox rounds screen dimensions to a standardised value and caps devicePixelRatio at 1. Viewport sizes are padded to the nearest 200Γ—100 pixel bucket. This makes your screen profile identical to other RFP users.
  • Brave Browser (recommended for daily use): Brave applies its Farbling technique to screen data β€” it introduces a small, session-unique, per-origin noise value into screen.width, screen.height, and devicePixelRatio. Your fingerprint changes each session and differs across sites, making cross-site correlation unreliable without breaking site functionality.
  • Avoid non-standard OS scaling: Windows users who set display scaling to 125% or 150% produce unusual screenWidth values (e.g., 1536 from a 1920px monitor) that are rarer and therefore more identifying than a clean 100% or 200% setting. Using standard increments reduces entropy slightly.
  • Browser extensions (limited effect): Extensions like Canvas Blocker can be configured to spoof screen values, but they are detectable and may break responsive web design on some sites.
  • VPN β€” useful but not sufficient: A VPN masks your IP address but has zero effect on your screen properties. Your devicePixelRatio and resolution are identical behind a VPN. Check what your real IP reveals on whatsmy.fyi β€” and note that screen data is displayed there separately from your IP.

Frequently Asked Questions

Does screen fingerprinting work in incognito or private mode?

Yes. Private browsing mode prevents your browser from saving browsing history, cookies, and form data to disk β€” but it does not change your physical display. Your screen.width, screen.height, and devicePixelRatio are identical in incognito and in a normal window. Only browsers with active display normalization β€” Tor Browser or Firefox withprivacy.resistFingerprinting β€” produce different values.

Can changing my browser zoom level affect my screen fingerprint?

Browser zoom affects window.devicePixelRatio in some browsers β€” Chrome, for example, multiplies the base hardware DPR by the zoom factor, so a 125% zoom on a standard 1080p display produces a devicePixelRatio of 1.25instead of 1. This can increase entropy (making you more unique) if your zoom level is non-standard. screen.width and screen.height are unaffected by browser zoom.

How does devicePixelRatio differ between Retina and standard displays?

A standard 1080p monitor has a hardware pixel density that maps one physical pixel to one CSS pixel, so devicePixelRatio is 1. Apple Retina displays pack approximately twice as many physical pixels per inch, so they report 2. On a MacBook Pro Retina, a 1512Γ—982 CSS resolution corresponds to 3024Γ—1964 physical pixels. Modern Android flagships typically report 2.75 or 3. This single value is one of the most reliable signals for distinguishing Apple silicon laptops from standard Windows laptops.

Can a website detect my actual physical screen even if I resize the browser window?

Yes. screen.width and screen.height always reflect the full physical display dimensions β€” they do not change when you resize the browser window. window.innerWidth and window.innerHeight do change with window size, but screen.* values are fixed to the hardware. Only if you switch to a different monitor (e.g., unplugging an external display) do the screen dimensions change.

Is screen fingerprinting more accurate on mobile or desktop?

Mobile devices produce higher combined entropy because screen resolution and DPR fragmentation is much greater in the Android ecosystem. Samsung, Google, OnePlus, and Xiaomi each ship devices with different resolutions and pixel densities. Desktop is more homogeneous β€” 1920Γ—1080 at 100% scaling dominates β€” but Windows users who have set non-standard scaling percentages (125%, 150%, 175%) produce unusual values that increase uniqueness.

What is the relationship between screen fingerprinting and canvas fingerprinting?

Screen fingerprinting reads hardware display properties synchronously β€” no rendering required. Canvas fingerprinting renders a hidden image and reads the pixel output to detect GPU and font rendering differences. They are complementary: screen fingerprinting identifies your display hardware; canvas fingerprinting identifies your graphics rendering stack. The two signals almost never conflict and together significantly narrow down your device configuration. See the canvas fingerprinting guide for a deep-dive into the rendering side.

Does switching to a multi-monitor setup change my screen fingerprint?

The window.screen API reports the properties of the display that the browser window is currently on, not all connected displays. If you move your browser window from a 1920Γ—1080 secondary monitor to a 2560Γ—1440 primary display, the screen dimensions reported by JavaScript will change. This means fingerprinting scripts can detect multi-monitor users who regularly move windows between displays β€” a behavioral signal in addition to the hardware data.

Related Articles

Check your IP address, location, and privacy score β€” instantly.

Zero logs. Zero tracking. Zero external APIs.

Run the check now β†’

Related articles

What Is Screen Fingerprinting? How Resolution and Pixel Ratio Identify Your Device | whatsmy.fyi