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
- Accent Color Demo — resolved values and form controls
- Fingerprinting Context — privacy model explanation
- Feature index
implementation reference
Need the exact API surface, compatibility boundaries, errors, lifecycle, and source links? Read the matching gendn reference ↗