Batch-fill a PDF form from a spreadsheet
Sheaf is a PDF mail merge that runs entirely in your browser. Point it at a fillable PDF
and a CSV of your data, and it fills one copy of the form per row: an offer letter for
every hire, a certificate for every student, an invoice for every client. Your files stay
on your machine. Nothing is uploaded, there is no account to make, and it costs nothing no
matter how many rows you merge.
How it works
-
Drop your PDF. Sheaf reads the fillable AcroForm fields straight out of
it and lists every text box, checkbox, dropdown, and radio group it finds.
-
Drop your CSV. Columns are matched to form fields by name, so
Full Name lines up with full_name on its own. You can change
any mapping by hand.
-
Check the grid, then download. Every filled page renders as a live
thumbnail before you save anything, so a wrong mapping is obvious at a glance. Grab one
file or the whole batch as a ZIP.
Questions
- How do I mail merge into a PDF form?
-
Export your data as a CSV with one column per form field and one row per document. Drop
that CSV and your fillable PDF into Sheaf. It maps the columns to the form fields and
renders one filled PDF per row, which you download individually or as a single ZIP.
- Are my documents uploaded to a server?
-
No. Sheaf reads and fills the PDF locally using
pdf-lib, and the merge runs in a
Web Worker in your own tab. You can watch the network tab stay silent while it works.
That makes it safe for offer letters, medical forms, and anything else you would not
paste into a website.
- What kind of PDF do I need?
-
A PDF with real fillable form fields (an AcroForm), the kind you can click into and type
in a normal PDF reader. A flat scan of a paper form has no fields to fill, so Sheaf
tells you when a PDF has none rather than producing blank copies.
- Is there a limit on how many rows I can merge?
-
No cap and no per-document fee. A batch of hundreds of rows runs in the background with
a progress bar and a cancel button, so the tab stays responsive and you can stop partway
if you spot a problem.
- How are the output files named?
-
Pick any CSV column to name the files by, for example a name or an invoice number. Rows
with a blank value fall back to a row number, and duplicate names get a numbered suffix
so nothing is silently overwritten inside the ZIP.