Text in a never-painted element

html.inert-container

Text inside an element the DOM holds and the browser never paints — a <template>, a <noscript>, or the fallback children of a <canvas> or <object>.

How the text is hidden

These elements are structurally never rendered, as opposed to styled out of view: their children are real nodes in the tree and simply have no paint step. The engine also treats a <title> or <desc> inside an <svg> this way — they are the graphic's accessible name and description, text all the same.

Why a model still reads it

Verified against Python's html.parser, the default backend behind BeautifulSoup: the payload is extracted from all four containers. They are ordinary descendant text nodes to any non-spec-compliant tree builder, which is all of them.

What we do about it

reasonFor returns inert-container, and it is asked LAST of all the concealment reasons — after transparency, off-canvas, clipping, sub-readable size and contrast — so wrapping a white-on-white payload in one inert tag can no longer replace its real reason with this quieter one. hidden-attr still outranks it, because display:none on the template itself is a stronger and more specific declaration. The rule reports informational with action flag, deliberately not strip: a <noscript> renders for a reader with scripting off and a <canvas> fallback renders when the resource fails, so this is not invisible-by-definition and nothing may be removed on its account. containerVisibility is editing-only — view-source shows it.

How often it fires

6% of a broad crawl of 399 real web pages — 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