How it works

  1. Drop the PDF in. The browser reads the file into memory. No upload — pdf-lib runs locally and the bytes never leave your device.
  2. 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.
  3. 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.
  4. 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.