Skip to content
All fingerprint checksCapability surfaces

device-level media features are identical in a fresh realm

Check id media-surface-vs-realm

What an ordinary browser yields

All twenty-five device-level features identical in both realms. Viewport-scoped features (orientation, colour scheme, display mode) are shown but deliberately not asserted, because they legitimately differ.

What a detector infers

Media features are answered by the layout engine rather than by the JavaScript properties that describe the same machine, which is what makes them worth asking twice. This check takes twenty-five DEVICE-level features — the pointer and hover capabilities of the attached input hardware, colour gamut, dynamic range, monochrome and colour-index depth, forced-colours and inverted-colours accessibility state, update cadence — and evaluates them in both the page and a fresh iframe. Device capability belongs to the machine, not to a document, so every realm of one browser must answer identically. The split matters as much as the check. Media features answer questions about three different things, and only device capability is realm-invariant: `orientation` follows the viewport's aspect ratio, so a 1x1 probe iframe is legitimately a different orientation than a landscape window, and `prefers-color-scheme` follows the document's own color-scheme declaration, which about:blank does not inherit from the page. Both were measured differing on a completely stock Chrome. Asserting on them would have failed every real browser, so they are collected for the read-out and never compared — the check asserts only the twenty-five that were verified to agree.

How to resolve it

Nothing to fix if the answers agree. If they disagree, something is answering media queries for the page world while the layout engine keeps answering honestly one realm away — the durable fix is to give the browser the real capability rather than to rewrite its answer.

Coherence over camouflage: why a plausible identity beats a hidden one

Read in the wild by

Kasada

Around 29 probes read media features — input capability, colour, accessibility state — resolved by the layout engine rather than by JS properties.

prefers_color_scheme, prefers_reduced_motion, prefers_contrast, any_hover, any_pointer, forced_colors, inverted_colors, color_gamut, dynamic_range, …

Kasada ips.js teardown — the full 427-probe list

Every attribution traces to a published artifact. See the sources and their limits.

Other checks in Capability surfaces

Who builds this test

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 Capability surfaces 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 Capability surfaces — the family media-surface-vs-realm belongs to.