Lock a filled PDF form — and check that it worked
Flattening turns form fields into page content. The answers stop being editable, the boxes stop being fields, and the file behaves like a printed document. PDF Form Flattener does that in your browser, one field at a time, and then verifies the result.
Choose what gets flattened
- Everything except signatures — the default, and the reason this tool exists. Flattening a signature field destroys the signature: the visible mark becomes ink and the cryptographic evidence is gone. A tool that does that quietly is doing real harm.
- Every field, when the document has no signatures to protect.
- A chosen subset — bake the answers, keep an approval box editable.
Failures handled instead of thrown
The standard flatten routine is all-or-nothing and throws on the first field it cannot resolve, leaving the document half-processed. Three things cause that: a widget with no /AP /N appearance stream, appearances that are stale relative to the stored value, and a /DA naming a font that the form's /DR resources do not carry. This tool regenerates appearances first, flattens each field independently, and reports the ones that failed by name and reason rather than surfacing a stack trace.
Verification is not optional
A flatten that produces a blank form is the classic failure of this operation, and "it saved without an error" never catches it. So the produced bytes are re-opened and checked twice:
- the form is parsed again and its remaining field count asserted;
- every flattened value is looked for on the page — text against the extracted text layer, checkboxes and radio buttons by rendering the page and measuring ink inside the widget rectangle.
A before/after preview shows both documents side by side.
Two honest caveats
Flattening is irreversible in the output. Your original file is never modified — a new document is always written — but the flattened copy cannot be turned back into a form. And a flattened field is no longer accessible as a field: a screen reader announces it as ordinary page content, without label, value or role. If accessibility matters more than immutability, mark the fields read-only instead.
Privacy
Everything happens in your browser with pdf-lib and pdf.js. Filled forms usually carry personal data; nothing is uploaded.
Tiny Online Tools







