Signal · signalsVersion 14

reduced_transparency

Whether the user asked the system to reduce transparency, from the prefers-reduced-transparency media query: reduce or none. Reported, not in either id.

reduced_transparency at a glance (from the library code, signalsVersion 14)
Component namereduced_transparency
In the visitorIdno (reported, kept out of both ids)
structuredId groupnone
Hashingplain value; a digest only when longer than 128 characters or not printable ASCII
Excluded underno browser class
Inner timeout1000 ms
Added insignalsVersion 14
Collector revision1 (reported as revision with every result)
In plain words

macOS, iOS and Windows have an accessibility setting that makes see-through panels solid. Some browsers tell web pages whether it is on. WhiskerJS records reduce or none.

What it reads

The CSS prefers-reduced-transparency media feature through window.matchMedia().

How the technique works

Order Query Value reported
1 (prefers-reduced-transparency: reduce) reduce
2 (prefers-reduced-transparency: no-preference) none

The first match is reported. When neither matches, the browser does not answer the query: unavailable with no_match.

Why it helps

Few people change this setting, so reduce is rare. Whether a browser answers at all also tells engines apart: Chromium answers, while Firefox (without its pref) and WebKit do not.

Stability

A setting the user can change at any time, so it is reported outside both ids. Added in library PR #36 (2026-10-27) at signalsVersion 14: it is outside both ids, so adding it changed no id and needed no version bump.

Browser support and what blocks it

  • Chromium browsers answer it (Chrome 118 and later). In the self-hosted CI browser matrix of PR #36 (23 browsers and channels on Linux, no value varied between collections) every Chromium browser reported none.
  • Firefox answers it only with the layout.css.prefers-reduced-transparency.enabled pref; Safari and WebKit do not answer it. Both were unavailable / no_match in the CI matrix.
  • No browser class excludes it.

Privacy

An accessibility setting is a setting of the user. Leave it out with collect({ exclude: ['reduced_transparency'] }) if you do not need it; no id changes.

How WhiskerJS handles noise and failures

Status ruleId When
ok reduce or none
unavailable no_api no matchMedia
unavailable no_match neither query matched: the browser does not answer it
blocked threw, security_error matchMedia throws
excluded caller_excluded you excluded it
timed_out timeout, aborted budget or abort

Example value

"reduced_transparency": { "status": "ok", "value": "none", "hashed": false, "durationMs": 0.1, "revision": 1 }

Questions and answers

Which browsers answer prefers-reduced-transparency?

Chromium browsers (Chrome 118 and later, Edge, Brave, Opera, Samsung Internet 25 and later). Firefox only with a pref, Safari not at all; there the component is unavailable with no_match.

Why is it not in the visitorId?

It is a setting the user can change at any time, so an id built on it could change without the device changing.