Elements removed from the layout
An element the page's own CSS takes out of the layout, with body text still inside it.
How the text is hidden
The parser resolves the CSS cascade over the document without rendering it, then asks why each run of text cannot be seen. display:none, visibility:hidden, visibility:collapse, a max-height/height/max-width/width that resolves to zero, the bare hidden attribute, content-visibility:hidden, a transform carrying a zero scale factor, and — inside an <svg> — a <defs>, <symbol> or <metadata> container whose content paints only where a <use> references it, all resolve to one invisible reason, hidden-attr. That reason is asked first, because display:none removes the box entirely and no descendant style can undo it. Inside an <svg> the same properties are also read as presentation attributes, which lose to any declaration.
Why a model still reads it
The element and its text stay in the DOM as ordinary text nodes. A text node carries no record of the style that suppressed it, so any DOM-walking extractor returns it as body copy — the repo's own probe audit names BeautifulSoup, readability and unstructured as the class of tool this applies to.
What we do about it
reasonFor assigns hidden-attr, and the rule fires when the run sits in a body block, is not claimed by the accessibility idiom or the page-furniture carve-out, and the document is not a whole-page text layer — the visible-text ratio floor and the container length cap are written into the rule's when expression in the rule pack, not into the parser. Severity is high and the action is flag: the finding is reported and the text is left in text.canonical, never stripped. containerVisibility is editing-only, because view-source and developer tools both show it.
How often it fires
18.3% 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.
Seen in the wild
Twenty-two distinct payload techniques found on real malicious sites — zero font size, elements pushed 9,999 pixels off screen, display:none, attribute cloaking and prompts tucked inside SVG — aimed at everything from ad-review evasion to forced transactions. The SVG case reached us as `clean` until engine 0.263.0.
Check your own file
Three commands: a key, credit, a verdict.
Start with the API