Hidden page furniture

html.hidden-ui

The same concealment as html.display-none, in a place where it is the page's own furniture — a collapsed menu, an unopened dialog, a cookie notice — and graded quietly for that reason.

How the text is hidden

uiFurnitureContainer returns the OUTERMOST container on the open-element stack that claims the run, and the claim is recorded as a flag rather than changing why the run is invisible. Outermost rather than innermost because the caller groups by it: nested furniture inside one nav is weighed as that nav's, while two separate menus on a page are never summed against each other.

Why a model still reads it

Nothing about the concealment changes — the text is a live DOM text node and every extractor reads it. What changes is only how loudly the finding is graded.

What we do about it

The carve-out is bounded by length so it cannot be an off switch: after the parse, the text of every run the container claims — visible furniture as well as concealed — is summed per laid-out LINE and compared with limits.uiChromeMaxRunChars from the rule pack; over the bound the flag is deleted for every run on that line and the concealed ones fall back to html.display-none at high. Per line, not per container, so a sentence chopped across inline spans still sums to a sentence while a menu of short labels is still weighed one label at a time — and a short hidden label sharing its line with enough visible furniture loses the carve-out too.

How often it fires

18% 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