technique reference · by file type

Hidden text in Word documents

A Word document can hold text that never shows on the page: the Hidden font setting, white text on a white background, type too small to read, text placed off the page, and content tucked into comments, fields, headers and document properties.

Tools that pull the text out of a .docx or an older .doc file return all of it, so an AI model reads what a reviewer never saw. That makes Word files a common carrier for hidden prompt injection. Every technique we detect in Word files is below, including the ones every Office format shares.

doc.field-codeA Word field carries an instruction that the page never shows and that a text extractor walking the stream returns in full.flaggeddocdoc.hidden-textWord's Hidden font attribute, set on a run of a legacy .doc, so the text is in the file and off the page.docdoc.tiny-fontA run set to a font size at or below the readable threshold: drawn on the page, and too small for a person to read at any zoom.docdoc.uninspected-embedded-objectA disclosure, not an accusation: a legacy .doc holds an object inside it that this engine did not open, so "nothing found" is not standing in for "nothing looked at".docdoc.white-textA run whose colour is close enough to what is behind it that the text is on the page and cannot be seen.docdocx.alt-textAn image's alt text carries words that appear nowhere on the page and are handed straight to a model.flaggeddocxdocx.alt-text-generatedThe picture description is Word's own image-describer output rather than anything a person typed.docxdocx.alt-text-onpageA picture's alt text says only what the document already prints, so nothing is concealed from anybody.docxdocx.alternate-content-fallbackAn `mc:AlternateContent` block carries different text in its `mc:Choice` and its `mc:Fallback`, so what the reader sees is not what the file's other branch says.strippeddocxdocx.clipped-textA table row or a paragraph line is pinned to an exact height smaller than the text it holds, so Word draws nothing and extractors return the text at full size.docxdocx.commentA review comment in `word/comments.xml` is not on the page, and its text is handed to a model as ordinary prose.docxdocx.custom-xmlA `customXml/` part carries text the package ships and nothing renders as document body.docxdocx.document-propertyA payload typed into a document property — title, subject, company, a custom label — is carried by the file and shown nowhere on the page.docxdocx.field-instructionA Word field's instruction carries prose, and Word shows only the field's result.docxdocx.merged-cell-textText sits in the continuation cell of a vertical merge, which renders nothing whatever it holds.flaggeddocxdocx.occluded-textText in an anchored Word text box that a later-stacked opaque drawing entirely covers.docxdocx.offpage-textA frame, an anchored drawing or a VML shape is positioned so that its whole box falls outside the declared page.flaggeddocxdocx.shape-hiddenA floating shape's own properties say it is not drawn, and every run inside it goes with it.docxdocx.style-sub-readable-sizeThe style sheet defines a sub-readable font size on a style that reaches text through a table style, which this engine does not resolve into runs — so the size claim could not be checked.docxdocx.tiny-fontA run's resolved font size is at or below the rule pack's readable floor, so the text is drawn but no reader can read it.flaggeddocxdocx.unrendered-headerText sits in a header or footer part whose every reference is switched off, or which nothing references at all.docxdocx.unrendered-noteReal prose sits in a footnote or endnote whose type is Word's furniture, in a document that references no note of that kind — so nothing ever draws it.docxdocx.vanishA run carries Word's Hidden font attribute, so Print Layout paints nothing while the text stays in the file as ordinary run text.strippeddocxdocx.web-hiddenA run marked `w:webHidden` is painted in Print Layout and suppressed in Web Layout, so it is concealed only from a caller who converts the document to HTML.docxdocx.white-textA run's colour is too close to whatever is painted behind it for the text to be legible.flaggeddocxdocx.zero-opacityA run's text fill is set to fully transparent, so it paints nothing while remaining ordinary text in the part.docx
shared by every Office file
ooxml.embedded-font-remapAn embedded font maps a digit to a glyph that cannot be that digit, so a reader sees different numbers from the ones the document stores.ooxmlooxml.raster-instructionAn embedded image was read and the text inside it is shaped like an instruction aimed at a model.ooxmlooxml.uninspected-embedded-objectA document embedded inside this one could not be opened, so whatever it contains was not analysed.ooxmlooxml.uninspected-fontThe document embeds a font whose glyph mapping this engine could not read, so the extracted text may differ from what a reader sees.ooxmlooxml.uninspected-partA part inside the OOXML package carries text that the format's parser never opened, so its contents were not analysed.ooxmlooxml.uninspected-rasterThe document carries an embedded image large enough to hold readable text that this engine did not read.ooxml
other file types
Hidden text in PDF filesHidden text in Excel spreadsheetsHidden text in PowerPoint presentationsHidden text in emailHidden text on web pagesHidden text in RTF filesHidden text in plain text and Markdown filesInvisible and hidden Unicode characters