Content Accessibility · Recommended · Medium impact
Documents in machine-readable formats
A PDF that carries no document structure is unreadable to an agent and to a screen reader alike — the same defect, found twice.
- Recommended
- Medium impact
- Draft standard
| Property | Value |
|---|---|
| Check id | document-formats |
| Dimension | Content Accessibility (22%) |
| Tier | Recommended — pool 20 pts |
| Weight inside tier | 2 |
| Impact | Medium |
| Maturity | Draft — A published specification that is not yet ratified. |
| Conditional | No |
| Publishing skill | document-formats |
| Standards | PDF/UA |
What the scanner requests
-
/documents -
/publications -
/reports
What is measured
The scanner collects same-origin links to downloadable documents from the homepage / (.pdf, .doc, .docx, .xls, .xlsx, .ppt, .pptx, .odt) and records the Content-Type each one returns. For every PDF it reads the file for the PDF/UA identification marker pdfuaid:part in the XMP metadata and for a tagged-PDF structure tree (/StructTreeRoot, and /MarkInfo with /Marked true), the structure on which PDF/UA (ISO 14289) is built. Pass when each linked document is also published as a structured HTML page or as markdown at a stable URL that the scan actually requested and that answered 2xx with an HTML or markdown content type, and any PDF that remains carries a structure tree; partial when an HTML or markdown version is merely linked without its response being observed, when a version exists but the PDFs are untagged, or when a document is offered as a PDF alone; fail when documents are reachable only as untagged PDF or office downloads. A linked-but-404 twin is not an alternative. Those byte-level markers are a necessary precondition rather than a conformance verdict - full PDF/UA validation needs a dedicated validator, and a marker inside a compressed object stream is invisible to this probe. This profile-scoped check is reported as not scored and excluded from the denominator unless the institution profile has been positively identified.
Reproduce it yourself
You do not have to take our word for any of this. Run the same measurement against your own domain:
DOMAIN="https://example.com"
curl -sL "$DOMAIN/" | perl -0777 -ne 'while (m{href=["\x27]([^"\x27]+\.(?:pdf|docx?|xlsx?|pptx?|odt))["\x27]?}gi) { print "$1\n" }' | sort -u | head -3 | while read -r d; do case "$d" in "$DOMAIN"*) u="$d";; http*|//*) continue;; /*) u="$DOMAIN$d";; *) u="$DOMAIN/$d";; esac; printf '%s ' "$u"; curl -sIL "$u" | grep -i '^content-type' | tail -1 | tr -d '\r'; curl -sL "$u" | strings | grep -cE '/StructTreeRoot|/MarkInfo|pdfuaid'; done
The fix
This is the artifact to ship. It is the complete change, not a description of one.
<!-- Primary form: a structured HTML page at a stable URL. The PDF is the alternate. -->
<article lang="en">
<h1>Annual report 2025</h1>
<p class="summary">Audited results, methodology and accounts for the 2025 financial year.</p>
<table>
<caption>Revenue by segment, 2025 (EUR thousands)</caption>
<thead>
<tr><th scope="col">Segment</th><th scope="col">2024</th><th scope="col">2025</th></tr>
</thead>
<tbody>
<tr><th scope="row">Publishing</th><td>1240</td><td>1385</td></tr>
<tr><th scope="row">Research</th><td>860</td><td>910</td></tr>
</tbody>
</table>
<p><a href="/reports/2025/annual-report.pdf" type="application/pdf">Annual report 2025 (PDF/UA, tagged)</a></p>
<!-- Export the PDF from this same source with PDF/UA tagging: never a scan,
and never a hand-written metadata field - the structure is the artifact. -->
</article>
Standards referenced
-
PDF/UA
Related checks
| Check | Tier | Impact | Same skill |
|---|---|---|---|
markdown-negotiation — Markdown content negotiation | Recommended | Critical | — |
headings — Semantic heading structure | Essential | High | — |
meta — Title and summary metadata | Essential | High | — |
jsonld — JSON-LD structured data | Essential | Critical | — |
faq-schema — FAQ / question-answer schema | Recommended | High | — |
breadcrumb — Breadcrumb / navigation schema | Emerging | Low | — |
summary — Prominent summary block | Recommended | Medium | — |
lang — Language declaration and multilingual access | Recommended | Medium | — |