How it works
- Drop the PDF in. The browser reads the file into memory. No upload — pdf-lib runs locally and the bytes never leave your device.
- The tool inspects the form. Each AcroForm field — text inputs, checkboxes, dropdowns, radios — is counted and surfaced so you know what's about to be flattened. PDFs with no form fields go through the operation as-is.
- Click Flatten. pdf-lib's `form.flatten()` walks every field, paints its current value onto the page content stream as static graphics, and removes the form field object from the document. The visual layout is preserved exactly.
- Download the flattened PDF. Open it in any PDF reader — the previously editable fields are now static text or graphics. Recipients can read and print but cannot retype, re-tab, or export the form data.
Flattening is permanent
There is no unflatten operation. The form fields are gone after the save — values become part of the page, identical to printed text. If you might need to edit the form again, keep an unflattened backup before running the tool. Filling a form, flattening it, then realising you typed the wrong tax code is a re-do scenario, not an edit-in-place scenario.
Two common workflows where this matters:
- Sign-then-flatten: add a signature in /sign first, then flatten here. The signature visual is locked into the page graphics; downstream tools that try to strip signatures cannot remove it.
- Fill-then-flatten: fill the form in /fill-pdf-form, then flatten the result here so the recipient cannot edit your values.