Skip to content
All fingerprint checksScreen & display

screen.colorDepth decomposes into the CSS color media feature

Check id color-depth-vs-media-color

What an ordinary browser yields

colorDepth is exactly three times the CSS color feature, or exactly four times it when alpha is packed alongside — 24 and 8, 32 and 8, and 30 and 10 all reconcile.

What a detector infers

screen.colorDepth and the CSS color media feature describe one display in two different units: total bits per pixel, and bits per colour COMPONENT. On an RGB display the first is exactly three times the second, and both answers come from the same compositor, so the relationship holds whatever the hardware actually is. Stock Chromium reports a depth of 24 with a color feature of 8, and 24 divided by 3 is 8. A genuine 10-bit HDR panel reports 30 with a color feature of 10, and the ratio still holds. That is what makes this the self-referential form of a colour-depth check and why it needs no table of permitted depths: it does not ask whether the depth is a normal value, it asks whether the two numbers describing one screen agree. The failure it catches is specific and common. Raising colorDepth to 32 is a long-standing habit in spoofing tools, inherited from an era when Windows reported 32-bit colour, but Blink has reported 24 on every platform for years. A tool that changes the JavaScript property and leaves the CSS engine alone lands on 32 divided by 3, which is 10.67 — not an integer, and not the 8 the media feature still reports. Measured exactly that way on a shipping stealth browser. Monochrome displays are excluded, because they report a color feature of 0 and their depth does not decompose into RGB components at all.

How to resolve it

colorDepth counts bits per pixel while the CSS color feature counts bits per component, and both are answered by the same compositor, so they cannot be set independently. Raising colorDepth on its own leaves the CSS engine still reporting the real component depth, and then it divides evenly by neither channel count. Change the display, not the number.

Anatomy of a browser fingerprint: every signal, and why they must agree

Nearby checks in Screen & display

See all 15 checks in Screen & display
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 Screen & display 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 Screen & display — the family color-depth-vs-media-color belongs to.