Conformary — PDF/UA conformance, machine-verified

Which of your PDFs fail PDF/UA?

We ran veraPDF against 261 European public-sector documents. Not one conforms to ISO 14289-1. Here is exactly what fails, and what we have not built.

The check itself is free, and it is not ours. veraPDF is open source, it reports every failed clause and the object that failed it, and running it on your own files takes one command — it is below. Any page telling you that reporting which clauses fail is a product is describing veraPDF's output, not a capability someone added to it. Ours included, until we changed this sentence.

What we have done is run it at some scale and look hard at the results. That is worth something and it is worth being precise about how much: it is a demonstration, not a survey, and everything below says which one it is.

A real result

This is one document, and it is the only one we can show you at this depth. We retained the full veraPDF report for exactly one of the 261 — this one. For the other 260 we kept the verdict and the per-clause failure counts, which is less. So read the table below as one file examined closely, not as a sample of the corpus, and do not assume we hold this much detail for the rest. We do not.

Competent authorities designated under Article 2(21)(c) of Regulation (EU) 2022/858 (DLTR)
European Securities and Markets Authority · 200,779 bytes

Every failing clause, as veraPDF 1.30.2 reported it under the PDF/UA-1 validation profile.
ClauseFailedWhat the validator reported
7.18.1-2144 Link annotation whose hidden flag is not set and whose rectangle is not outside the crop-box has neither Contents key nor an Alt entry in the enclosing structure element
7.18.5-2144 A link annotation does not include an alternate description in the Contents key
7.2-425 Table rows 1 and 7 span different number of columns
7.3-13 Figure structure element neither has an alternate description nor a replacement text
5-11 The document metadata stream doesn't contain PDF/UA Identification Schema
7.1-101 ViewerPreferences dictionary is not present in the document Catalog, or DisplayDocTitle key is set to false or is not present in the ViewerPreferences dictionary
7.21.4.2-21 A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subset

veraPDF 1.30.2, flavour ua1. Exit code 1 (non-compliant). Don't take our word for it — fetch the document and run it yourself:

verapdf --flavour ua1 --format json Competent_authorities_designated_…_DLTR.pdf

This is what we mean by machine-verified. The document is a public file at a public URL, the validator is open source and free, and the clause identifiers above are from a published ISO standard. Every number in this panel is one you can reproduce without us — fetch that URL, run that command. The corpus figures further down are a different matter: those depend on which 261 documents we happened to reach, and we say so where they appear.

It is also worth reading as a document, not just as a table. Two clauses account for 288 of the 299 failures, and they are not merely the same kind of defect — they are the same objects. We checked: across the 102 check contexts veraPDF retained for each rule, both fail on an identical set of objects — byte for byte the same link annotations. (Each rule reports 144 failures; the validator retains contexts for the first 102. We are comparing what it kept, and saying so, because that is the ceiling on what anyone can check here.) One missing Contents string trips both clauses at once, so writing that one description would clear 288 of this document's 299 failed checks. It is the sort of thing that is invisible if you read the clause counts and add them up, which is exactly what we did the first time.

This is not a badly made file — it passes 11,552 checks — it is an ordinary spreadsheet exported to PDF. We do not know how common that is across institutional publishing and this page does not claim to — it is how this one was made. A screen-reader user hits several hundred unlabelled links in a table of designated authorities. That is the gap between "we published it" and "it is usable."

A failure against ISO 14289-1 is a technical finding, not an accusation. We picked this document because it is public, because the failure set is typical, and because naming it is the only way you can check us. It is not a claim about ESMA.

Who this is for

What Conformary has actually built

Stated as capability, not as intention, because the distance between those two is where this industry does its lying.

An earlier version of this page said we remediate documents and priced it per document. We had never done it. That copy was wrong, it was ours, and this paragraph is here instead of a quiet edit.

What Conformary does not do

Pricing

There is nothing to buy, and you should go somewhere else. We are not selling anything, we have no customers, and we are not taking your money for a capability we have not demonstrated.

If you came here because you have inaccessible PDFs and need them fixed, the thing you actually want is remediation, and it is already sold self-serve. AccessiblePDF advertises it at $0.50 per page with no minimum — it tags structure, generates alternative text, rebuilds reading order, and ships an independent validation report with each file. We looked for a competitor late, found one immediately, and it does the job we had been describing as a gap.

Two honesties about that recommendation. We have not tested their output, so treat this as a pointer, not an endorsement — and the pricing and capabilities above are what they say about themselves, which you should check on their page rather than ours. Separately, note what any automated remediation can and cannot promise: a validator confirms alternative text is present, never that it describes the image. That limit applies to their tool, to ours, and to anyone's.

Status, and what to do next

The public checker is not open yet. This page exists so that what we are building is stated in public before it ships, rather than after.

There is no signup form here, because we would rather have no mailing list than a form that quietly goes nowhere. Two things you can do instead, both of which work today:

Work in progress is public: github.com/JaredKlopstein/conformary.

Why we are conspicuous about the limits

Most vendors in this space sell reassurance. We are selling a verifiable result, and the fastest way to demonstrate the difference is to be explicit about what we are not claiming. A conformance company that overstates its own conformance has already failed its one test.

That applies to this page too: it is written to the standard we sell — semantic structure, a real table with real header cells, keyboard-reachable, visible focus, and contrast that holds in both colour schemes. No trackers, no analytics, no third-party scripts. Nothing here is loaded from anywhere but here.