Registry

PDF form compatibility registry

Can that government form actually be filled programmatically? Each entry is a real public form tested on its unmodified upstream blank — field schema, XFA and encryption quirks, per-tool results, provenance hash, and the exact request that worked. No vendor-doc claims: every cell traces to a recorded run.

The forms

FormJurisdictionFieldsTraitspdfops APIpdf-lib@cantoo/pdf-libpypdfrenders?
California DE 1 California (state) 112 clean AcroForm verified + deterministic flatten verified (111/111) verified (111/111) text fields verified (91/91) values render (91/91)
California FL-100 California (state) encrypted fails at parse fails at load fails at load text fields verified (66/66) no filled output to render
CRA TD1 (2026) Canada federal encrypted fails at parse fails at load fails at load text fields verified (24/24) no filled output to render
HMRC 64-8 United Kingdom 77 clean AcroForm verified + deterministic flatten verified (76/76) verified (76/76) text fields verified (59/59) values render (59/59)
IRS Form 1040 US federal 199 hybrid XFA verified + deterministic flatten verified (199/199) verified (199/199) text fields verified (126/126) values render (126/126)
IRS Form 2848 US federal 92 hybrid XFA verified + deterministic flatten verified (91/91) verified (91/91) text fields verified (70/70) values render (70/70)
IRS Form W-4 US federal 48 hybrid XFA verified + deterministic flatten verified (48/48) verified (48/48) text fields verified (43/43) values render (43/43)
IRS Form W-9 US federal 23 hybrid XFA verified + deterministic flatten verified (23/23) verified (23/23) text fields verified (15/15) values render (15/15)
OPM Optional Form 306 US federal 40 signature fields verified + deterministic flatten verified (38/38) verified (38/38) text fields verified (25/25) values render (25/25)
DS-11 US federal 84 clean AcroForm verified + deterministic flatten verified (83/83) verified (83/83) text fields verified (63/63) values render (63/63)
USCIS Form I-9 US federal 128 clean AcroForm verified + deterministic flatten verified (128/128) verified (128/128) text fields verified (115/115) values render (115/115)
Official Form 101 US federal courts 159 clean AcroForm verified + deterministic flatten verified (155/155) verified (155/155) text fields verified (127/127) values render (127/127)
AO 440 US federal courts 34 clean AcroForm verified + deterministic flatten verified (31/31) verified (31/31) text fields verified (29/29) values render (29/29)

Machine-readable version of everything on these pages: registry.json. Last test run: 2026-08-06.

Methodology

Each blank is fetched from the issuer's own URL (recorded per entry, pinned by sha256 — several issuers re-publish changed files at the same URL). Six independent legs then run against the same bytes:

Values are synthesized per field type and honor maxLength (the 1040's 2-character split boxes are why that matters). Signature and pushbutton fields are skipped by design — a value-filling API should not fake a cryptographic signature. Failures are recorded as results, not retried into silence: the registry exists as much for the form that breaks tooling as for the one that works.

An automated weekly recheck re-downloads every source URL and compares hashes; when an issuer revs a form, the entry is re-tested against the new file before the page changes.

Limitations, honestly

Test your own form

The same chain that produced these results runs on any PDF: drop yours into the inspector to see its fields and the exact fill call, or start from a flat scan with make-fillable. The fill itself is one request — POST /api/fill-form, no key needed for the first 100 calls/IP each month (docs).