How to fill a PDF form
- Upload your PDF form. Drop the file onto the upload area or click to browse. The tool reads all form fields automatically — text inputs, checkboxes, radio buttons, and dropdowns will all appear.
- Fill in the fields. Each detected field is displayed with its name and an appropriate input control. Type text, check boxes, or select options as needed.
- Choose whether to flatten. Flattening bakes the entered values into the page content and removes the interactive fields, preventing the recipient from changing the values. Leave it enabled unless you specifically want the form to stay editable after downloading.
- Click Fill & download PDF. The filled form downloads immediately with "-filled" added to the filename.
Everything runs in your browser using pdf-lib. Your PDF and the data you enter never leave your device.
When to fill a PDF form online
- PDF forms without desktop software. If you do not have Adobe Acrobat or a PDF editor installed, filling forms in a browser is the simplest option. This tool works directly in Chrome, Firefox, Safari, or Edge — no installation needed.
- Filling forms on shared or managed devices. On a work computer where you cannot install software, or a shared device like a library computer or school machine, a browser-based tool lets you fill and download without leaving anything installed.
- Quick one-off forms. For government forms, job applications, tax worksheets, and other single-use forms, opening a dedicated app and navigating its interface takes longer than uploading and filling directly.
- Forms with sensitive information. When the form contains private data — tax details, medical history, legal information, personal identification — filling it in a tool that processes locally means the values you type are never sent to any server. This tool is built for exactly this case.
- Filling forms before sending. The most common workflow: fill the form, flatten it (so values cannot be changed), and email or upload the completed document.
Types of form fields this tool handles
PDF forms use the AcroForm specification, which defines several field types. This tool handles the most common ones:
- Text fields. Single-line and multiline text inputs. The tool shows multiline fields as resizable text areas and single-line fields as regular inputs. You can type any text value.
- Checkboxes. Boolean fields that can be checked or unchecked. Each checkbox is shown with its field name and a toggle.
- Radio buttons. Groups where one option from several can be selected. The tool shows all available options and lets you choose one.
- Dropdowns. Select fields with a fixed list of options. The tool renders these as a standard dropdown with all available choices.
Signature fields and button fields are read-only in this tool — they are shown but cannot be filled. For signing documents, use the Sign PDF tool, which lets you draw or type a signature and place it on the page.
What flattening does to a filled form
When you fill a PDF form and leave it interactive, the entered values are stored in the AcroForm layer — a set of annotations and form objects that sit on top of the page content. A recipient with a PDF editor can open the form and change every field.
Flattening takes each field's current value and draws it permanently onto the page as static content. The interactive AcroForm layer is then removed entirely. The filled PDF looks identical — the values are visible — but the fields no longer exist as editable elements.
This is the right choice when you are submitting a form to someone else and want the values locked. It prevents accidental or intentional modification of what you submitted. The one downside is that a flattened form cannot be re-edited — if you need to change values, go back to the original PDF and re-fill it.
How pdf-lib reads and writes form fields
pdf-lib is a JavaScript library for reading and manipulating PDFs, running entirely in the browser via WebAssembly-compatible JavaScript. When you upload a PDF, the tool calls form.getFields() to retrieve all AcroForm field objects from the document structure.
Each field object exposes its type (PDFTextField, PDFCheckBox, PDFRadioGroup, PDFDropdown), its current value, and in the case of radio groups and dropdowns, the available options. The tool builds a dynamic form UI from this data.
When you click "Fill & download PDF", the tool loads the original PDF bytes again and applies your values using typed accessors: form.getTextField('name').setText('value') for text fields, form.getCheckBox('name').check() for checkboxes, and so on. If flattening is enabled, form.flatten() converts all fields to static page content before saving.
Limits and what to expect
- The PDF must have actual form fields. Scanned forms, forms that look like fillable but are just images of printed forms, and flat PDFs with no AcroForm layer will not work — the tool will report "no fillable fields found".
- Password-protected PDFs. Encrypted PDFs that require a password to open cannot be read by this tool. Use the Unlock PDF tool first to remove the password, then fill the form.
- Signature fields. Digital signature fields (PAdES/PKCS#7 cryptographic signatures) cannot be filled or applied with this tool. For a visual signature image, use the Sign PDF tool separately.
- Complex calculated fields. Some PDF forms use JavaScript to auto-populate fields based on other values (for example, calculating totals). Browser-based filling does not run embedded PDF JavaScript, so calculated fields may remain blank or show their previous value after filling. Fill them manually.
- Appearance fidelity. pdf-lib generates standard appearance streams for filled fields. Most PDF viewers render these correctly. Highly customised field appearances (unusual fonts, non-standard widgets) may look slightly different from the original form's styling.
Privacy: what happens to your data
Your PDF and everything you type into the form fields are processed entirely in browser memory by pdf-lib running locally. The completed form is created in memory and downloaded directly to your device. No data leaves your device at any point — not the PDF contents, not the values you enter, nothing.
This is especially important for forms containing sensitive information: tax identification numbers, dates of birth, medical history, bank account details, legal declarations. Local processing means none of this passes through a third-party server, is logged, or is retained anywhere.