Free online PDF/A validator
Drop in a PDF and find out whether it is valid PDF/A-1b — and exactly which clauses it breaks. Your file never leaves your device.
Click to upload or drag & drop a PDF here
PDF files only · max 5 MB · processed locally
The validator runs entirely in your browser using WebAssembly, so the file you choose is never uploaded anywhere. It needs JavaScript enabled to start. You can run the same 159 checks offline with the command-line tool.
How it works
Runs in your browser
Most other online PDF/A checker asks you to hand over the document. This one doesn't need to.
Nothing is transmitted
gopdfrab is compiled to WebAssembly and executes in a Web Worker on this page. Your PDF is read from disk into memory in your own browser. No request carries it anywhere, because there is no endpoint to carry it to.
159 checks, not a guess
The same engine as the Go library and the CLI, covering ISO 19005-1 clauses 6.1 to 6.9 — structure, colour, images, transparency, fonts, annotations, actions, metadata and forms — plus generic ISO 32000 object-model conformance.
Meaningful results
Failures are grouped by area and each one names the clause it violates, the rule in plain words, and the page it sits on — a report you can act on rather than a pass/fail verdict.
Coverage
What gets checked
gopdfrab organises its 159 checks into 11 groups. Each maps onto a clause range of ISO 19005-1 (PDF/A), or to the generic object model beneath it.
| Group | Specification area |
|---|---|
| File structure | 6.1.x — file header, trailer, xref, object framing, limits |
| Colour | 6.2.2 OutputIntent, 6.2.3.x device colours, 6.2.9–10 |
| Images and XObjects | 6.2.4-6.2.7 image/form/PostScript XObjects |
| Transparency | 6.2.8 transfer functions, 6.4 soft masks/blend modes/alpha |
| Fonts | 6.3.x embedding, subsets, metrics, encoding |
| Annotations | 6.5.x annotation types and dictionaries |
| Actions | 6.6.x action types and additional actions |
| Metadata | 6.7.x XMP metadata, extension schemas, PDF/A identifier |
| Logical structure | 6.8 tagged PDF structure hierarchy and marked content |
| Interactive forms | 6.9 interactive forms |
| Object model | Generic ISO 32000 object-model conformance, independent of PDF/A |
Reference
What the failures mean
Every issue the validator reports has a clause behind it, a cause, and something you can do about it.
Font not embedded
Why "font not embedded" fails PDF/A-1b, what causes it, and how to fix it by embedding the font program or converting the document.
Glyph not in font
A character used on the page has no glyph in the embedded font subset. Why that fails PDF/A-1b and how to fix the subset.
Missing OutputIntent
PDF/A requires an OutputIntent with an embedded ICC profile when device-dependent colour is used. What that means and how to add one.
Device colour without OutputIntent
Using DeviceRGB, DeviceCMYK or DeviceGray in PDF/A-1b requires a matching OutputIntent. What the check means and the two ways out.
FAQ
Frequently asked questions
Need this in your own code?
The browser tool is the same engine as the Go library and the CLI. Verify in a goroutine, gate a CI pipeline on it, or run it at the edge — a 12.3 MB static binary with no runtime dependencies.