PDF Form Filler & Checker

Fill the fields and watch the form judge itself as you go: what is required and still empty, what value is not one of the permitted options, which fields are secretly the same field. Then download it with the appearances regenerated, so the values show up everywhere.

🔒 Your form never leaves your browser.

🖊️

Drop a PDF form here

One PDF at a time · nothing is uploaded

A value and the thing you see are two different objects

An AcroForm stores a field’s value in one place and the appearance stream that draws it in another. Write the value without regenerating the appearance and you get a file that shows the answer in one reader and an empty box in the next — including on paper. It is the single most confusing thing about filled PDFs, and this tool regenerates appearances on download so it does not happen.

Fields that share a name are one field

Two widgets with the same fully-qualified name are not two fields; they are one field drawn twice. Type in either and both change. Sometimes that is the point — a reference number repeated on every page — and sometimes it is a copy-paste accident, and the two look identical until somebody fills the form and watches page four change.

What this does not do

It does not sign anything, and it deliberately leaves signature fields alone: a signature covers the bytes of the document, so filling a field after signing invalidates the signature. Fill first, sign last. It also does not create form fields — this is for forms somebody else built.

Every check this tool runs (8 rules)

PFF-001 A required field is empty

The field carries the Required flag and has no value. Whoever receives the form is entitled to reject it, and the sender usually cannot see the flag at all — most readers show a required field exactly like any other until submission fails.

Fix: Fill it, or ask the form author whether the flag is really intended.

yaktool engineering rule, not a citation: derived from how AcroForm fields behave in readers. PDF 32000 defines the field dictionary; what counts as a form that will be rejected is our reading of it, and it is marked as ours.

PFF-002 The value is not one of the field’s options

Dropdowns, list boxes and radio groups carry an explicit set of permitted values. A value outside that set can be written into the file — nothing stops it — and then the control renders blank or falls back to the first option depending on the reader. It is a value that exists in the bytes and not on the page.

Fix: Use one of the options listed for that field.

yaktool engineering rule, not a citation: derived from how AcroForm fields behave in readers. PDF 32000 defines the field dictionary; what counts as a form that will be rejected is our reading of it, and it is marked as ours.

PFF-003 The value is longer than the field allows

A text field with MaxLen truncates on entry in a reader, but a value written programmatically is not truncated — it is simply longer than the field declares. The overflow is invisible on screen and present in the data.

Fix: Shorten the value to the declared maximum.

yaktool engineering rule, not a citation: derived from how AcroForm fields behave in readers. PDF 32000 defines the field dictionary; what counts as a form that will be rejected is our reading of it, and it is marked as ours.

PFF-004 A read-only field was asked to change

The field carries the ReadOnly flag. Writing to it succeeds at the byte level while the reader will not let a person edit it, which is exactly the asymmetry that produces a document nobody can explain: a value the form was designed to fix, changed by a tool.

Fix: Leave it alone, or clear the ReadOnly flag deliberately if you own the form.

yaktool engineering rule, not a citation: derived from how AcroForm fields behave in readers. PDF 32000 defines the field dictionary; what counts as a form that will be rejected is our reading of it, and it is marked as ours.

PFF-005 Several fields share one name

Fields with the same fully-qualified name are one field with several widgets: type into one and the others change too. That is sometimes deliberate (a name repeated on every page) and sometimes an accident of copy-paste, and the two are indistinguishable until someone fills the form and watches a different page change.

yaktool engineering rule, not a citation: derived from how AcroForm fields behave in readers. PDF 32000 defines the field dictionary; what counts as a form that will be rejected is our reading of it, and it is marked as ours.

PFF-006 A field asked for does not exist in this form

The fill request names a field the document does not have. Silently ignoring it is how a form goes out with half the answers missing, so it is reported instead — most often it is a spelling difference or a fully-qualified name (parent.child) written without its parent.

Fix: Check the exact names in the field list; they are case-sensitive.

yaktool engineering rule, not a citation: derived from how AcroForm fields behave in readers. PDF 32000 defines the field dictionary; what counts as a form that will be rejected is our reading of it, and it is marked as ours.

PFF-007 The form has a signature field

A signature field is present. Filling the rest of the form is fine, but any change made after a signature is applied invalidates it — so the order of operations matters: fill first, sign last.

yaktool engineering rule, not a citation: derived from how AcroForm fields behave in readers. PDF 32000 defines the field dictionary; what counts as a form that will be rejected is our reading of it, and it is marked as ours.

PFF-008 Values are set but the form does not ask readers to redraw them

An AcroForm stores a field value and, separately, the appearance stream that draws it. Setting the value without regenerating appearances leaves a file that shows the new value in some readers and an empty box in others — including when it is printed. The document has the data and the page does not show it. The switch that tells readers to draw values themselves is NeedAppearances, and it is off here.

Fix: Regenerate the field appearances after filling, or set NeedAppearances on the form.

yaktool engineering rule, not a citation: derived from how AcroForm fields behave in readers. PDF 32000 defines the field dictionary; what counts as a form that will be rejected is our reading of it, and it is marked as ours.