Fully transparent text

html.zero-opacity

Text that paints nothing at all, because the element or the colour itself is transparent.

How the text is hidden

Three spellings converge here. An opacity declaration at or below the invisibility threshold; a filter: opacity function, whose value is composed with any declared opacity by taking the lower of the two, because the filter multiplies the element's alpha; and a colour whose own alpha channel is at or below the same threshold — color: transparent, an rgba with a zero alpha, or -webkit-text-fill-color: transparent.

Why a model still reads it

Alpha is applied at paint time and nowhere else. The characters occupy their normal place in the flow and in the DOM, so every extractor reads them at full strength.

What we do about it

reasonFor returns zero-opacity when either the element opacity or the colour alpha is at or below limits.maxInvisibleOpacity, read from the rule pack — one threshold for both, deliberately, so a pack publish cannot reach one and miss the other. The colour case is classified as zero-opacity rather than as a contrast match, because alpha zero is not camouflage against a ground and there is no ground to measure. The rule fires at high with action flag, guarded by the container clause; the text is reported and retained. containerVisibility is never.

How often it fires

0.25% of 400 real pages from 400 distinct hosts (Common Crawl) — pages, not documents, measured 2026-08-21.

This is an alert-volume number and nothing else. It says how often the alarm sounds on documents as found — not how often it is right, and not whether what it found was harmless. Documents as found may themselves carry concealment. Read it against the population named above rather than as a property of documents in general.

next

Check your own file

Three commands: a key, credit, a verdict.

Start with the API