A picture description nobody reads

docx.alt-text

An image's alt text carries words that appear nowhere on the page and are handed straight to a model.

How the text is hidden

Mechanism: wp:docPr/@descr, wp:docPr/@title and the pic:cNvPr copy hold a picture's description; the same two attributes are also read when they sit outside any w:drawing. A reviewer sees the picture; the string is never drawn. And add to the residual: the legacy VML spelling of a description — v:shape/@alt, which is what a w:pict or an OLE object carries — is not read, so a payload written there is not reported under this technique.

Why a model still reads it

The description is an attribute in the part, so extractors return it as text. It is the cheapest concealment the format has: every other technique needs something detectable done to the document, and this needs a payload typed into a field that is invisible by design.

What we do about it

The parser collects descr and title from every drawing, de-duplicating the copy Word writes twice inside one drawing, and gathers sources belonging to no w:drawing into their own block. Each becomes a run in a block whose role is altText, reason hidden-attr. The rule fires only when neither of the two sibling flags is set, at informational, action flag. It is never stripped: alt text is an accessibility feature, the strip rule excludes the role by name, and the parser withholds a provenance range so the cleaner could not edit these bytes even if a rule said otherwise. An instruction-shaped description still escalates.

How often it fires

10.7% of open-data portal DOCX — 150 real government publications, written in Word (genre: government, NOT contracts), measured 2026-08-18.

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