v149 · CSS · PWA · Privacy

Scope Detection

Chrome 149 restricts what AccentColor resolves to depending on context. This page probes the current values of AccentColor and AccentColorText in your browser and explains what the result means — and why Chrome 149 changed the rules.

Detecting context…
AccentColor
detecting…
AccentColorText
detecting…

fingerprinting risk by context

Context Chrome <149 AccentColor Chrome 149+ AccentColor FP risk (149+)
Regular browser tab OS accent (user-specific) Fixed fallback (non-identifying) none
Installed PWA (standalone) OS accent (user-specific) manifest theme_color (app-controlled) low — app-defined
Embedded iframe (third-party) OS accent (leaks to embed) Fixed fallback (protected) none
Pre-149 anywhere OS accent (user-specific, leaks) high — uniquely identifying

the fingerprinting attack (pre-149)

// Pre-Chrome 149: read the OS accent color from any web page
const el = document.createElement('div');
el.style.background = 'AccentColor';
el.style.display = 'none';
document.body.appendChild(el);
const color = getComputedStyle(el).backgroundColor;
// → "rgb(X, Y, Z)" — the user's actual OS accent color
// → potentially uniquely identifying; stable across sites/sessions

// Chrome 149+: in a regular tab, always returns the fixed fallback
// → not the user's real color → cannot fingerprint

see also

implementation reference

Need the exact API surface, compatibility boundaries, errors, lifecycle, and source links? Read the matching gendn reference ↗