What it is
It re-tags the document you already have
Foliowright does not rebuild your PDF, regenerate it from a source file you no longer have, or convert it to something else. It reads the content streams of the existing document, works out what the structure actually is, and writes a conforming tag tree back into the same file. The pages look exactly as they did, because they are the same pages.
What happens to a document
Read every drawing operation
Text runs with their fonts, sizes and positions; images with their bounding boxes; vector rules; link and form annotations. Every operation is claimed — which is why orphaned content, one of the most common PAC failures, cannot happen by construction rather than by heuristic.
Work out the structure
Column-aware reading order, headings from typography rather than guesswork, lists from glyph and indent runs, tables from ruled lines and cell geometry, running heads and page furniture from what repeats across pages. All of this is deterministic: it is geometry and typography, so it is reproducible, auditable and free.
Flag what geometry cannot answer
What a chart means, what a form field is called, whether an image carries information. These are semantic questions, and the engine marks them for a person with the page and the image attached rather than inventing an answer.
Write the tag tree back in
Structure elements, parent tree, marked content, roles, language, metadata, and every remaining drawing operation wrapped as an explicit artifact so assistive technology skips it. Then validate, and repair what validation finds.
What it refuses to do
The failure mode in this category is not a tool that misses things. It is a tool that produces confident, plausible, wrong output that still validates — so nobody catches it, least of all the person relying on the description.
Describe a chart
Asked to caption a bar chart of WCAG conformance, a general caption model told us about “the percentage of people diagnosed with cancer… 71% experienced an increase.” Fluent, specific, invented, and a screen-reader user has no way to know. Data graphics go to a person.
Re-embed your fonts
A font the source never embedded cannot be fixed by re-tagging, whatever a product page claims. We report it as the source-document problem it is, and name the font and the page.
Guess a form field's name
An earlier version named twelve fields on a financial-aid form
"$". A screen reader would announce “dollar sign,
edit text” twelve times — worse than silence, because nothing looks
broken. Implausible labels are now flagged instead.
Where your documents go
Nowhere. That is the whole answer, and it is worth being precise about.
- Local by default
- The engine runs on your machine or your server. In its default mode it makes no network requests at all. Files are read from disk, re-tagged, and written back to disk.
- On-device models stay on the device
- The optional figure-description model is downloaded once and then runs offline. Images are never sent over a network to reach it.
- The cloud path is opt-in, per figure, by a person
- If you choose to describe one figure with a frontier model, that single cropped image goes to that provider under your own key. Never automatically, never in bulk, never without a click.
- No telemetry
- Nothing reports back to us — not usage, not errors, not counts.
What it handles
Scanned documents are detected and routed to an on-device OCR path that produces accessible HTML — there is no text on the page to wrap in a tag tree, and we would rather say so than pretend.
Output is validated against veraPDF PDF/UA-1, the ISO reference implementation, on every build — and by hand in PAC 2024, which is what accessibility offices actually open. The measurements are on the research page.