Bulk PDF generator
Upload a CSV, pick a template, and get a personalized PDF for every row.
- Preview your data before you sign up
- Up to 1,000 PDFs per run on paid plans
- No credit card required
1Choose a template
2Add your data
| recipient | course |
|---|---|
| Advanced Data Analytics | |
| Project Management Basics | |
| Leadership Essentials |
Live preview
Free to start, no credit card. Your file stays in this browser until you generate.
How to generate PDFs from a CSV
Step 1
Choose a template
Pick a ready-made template, or describe the document you need and let AI build it with fields for your data.
Step 2
Upload your CSV
Export a CSV from Excel or Google Sheets. Columns are matched to template fields automatically, and you can check any row before you start.
Step 3
Download your PDFs
One PDF is created per row. Download them one at a time or all together as a ZIP.
What your CSV should look like
If you can keep a list in a spreadsheet, you already have what you need.
| recipient | course | hours | date |
|---|---|---|---|
| Maria González | Advanced Data Analytics | 40 | 2026-06-20 |
| James Okafor | Project Management Basics | 24 | 2026-06-21 |
| Priya Sharma | Leadership Essentials | 16 | 2026-06-22 |
Creates Maria González.pdf
- Put column names in the first row. Each row after that becomes one PDF.
- Save as CSV from Excel, Numbers or Google Sheets. Comma and semicolon files both work.
- Use a dot for nested fields: signatory.name fills {{signatory.name}}.
- Write true or false to show or hide optional sections of a template.
- Values such as zip code 01234 and price 1.50 keep their exact formatting.
What you can create in bulk
Anything with one set of details per person, order or event. Start from a template, then make it yours.
Certificates
Award a whole class or webinar in one run.
View templateEvent tickets
One ticket per attendee, with their seat and order number.
View templateName badges
Print a badge for everyone on the guest list.
View templateGift cards
Issue cards with a unique code and amount for each one.
View templateInvitations
Create a matching invitation for every event on your calendar.
View templateShipping labels
Create a label for every order in your export.
View templateBuilt for lists that matter
Automatic column matching
“Customer Name” finds customer_name without any renaming. Anything that doesn't match is flagged, and you can pick the column yourself.
Preview real rows
Step through your actual data on the template before generating, so a wrong column shows up while it's still free to fix.
Name files from your data
Name each PDF after any column, such as the recipient or order number. Duplicate names are numbered automatically.
Pause, resume and retry
Stop whenever you like, and retry just the rows that failed. If your tab closes, continue from the same point within 24 hours.
Only pay for what works
Credits are used per finished PDF, so failed rows are free. You'll see the estimate before anything starts.
The same output as our API
Bulk runs use the same renderer as the PDFgen API, so a template looks identical here and in your product.
Generate from your own code
Bulk generate is ideal for one-off lists. When PDFs should be created automatically, such as a certificate each time a learner finishes a course, send the same template and data through the REST API.
import fs from "node:fs";import { parse } from "csv-parse/sync";const rows = parse(fs.readFileSync("recipients.csv"), { columns: true });for (const row of rows) {const res = await fetch("https://pdfgen.com/api/v1/generate", {method: "POST",headers: {Authorization: `Bearer ${process.env.PDFGEN_API_KEY}`,"Content-Type": "application/json",},body: JSON.stringify({ template_id: "YOUR_TEMPLATE_ID", data: row }),});fs.writeFileSync(`${row.recipient}.pdf`, Buffer.from(await res.arrayBuffer()));}
Questions, answered
The things people usually ask before their first run.
How do I generate multiple PDFs from a CSV file?
Choose a template and upload your CSV at the top of this page. PDFgen matches your columns to the template's fields and previews each row. Sign up to create one PDF per row, then download them individually or as a single ZIP.
Do I need a template first?
You need one, but you don't have to make it yourself. Pick a ready-made template and it's added to your account when you sign up, or describe your document and AI builds a template with your CSV's columns as its fields.
Can I try it before signing up?
Yes. Upload your CSV and preview every row on a template without an account. Your file stays in your browser. An account is only needed to generate the PDFs.
How many PDFs can I generate at once?
Paid plans can generate up to 1,000 PDFs per run, and the free plan up to 10. For larger lists, split your file into several runs or use the REST API.
How much does bulk PDF generation cost?
Each PDF costs 1 credit per 5 pages, so a 1–5 page PDF is 1 credit. Failed rows aren't charged. The free plan includes 30 credits a month with a PDFgen watermark, and paid plans remove the watermark.
Is this the same as a mail merge?
It works the same way: one template, one spreadsheet, one personalized document per row. The difference is that the result is a set of separate PDF files instead of a Word document or emails.
Do my CSV column names have to match the template?
No. Names that match regardless of capitals, spaces or underscores are connected automatically, and you can choose a column by hand for the rest. Fields with no column stay blank, and you'll be warned before you start.
Can I generate invoices with several line items from a CSV?
Not yet. Each CSV row fills one PDF, so repeating sections such as invoice line items can't be filled from a CSV today. Documents with one set of values per person or order work well. For repeating sections, send your data as JSON through the API.
Can I upload an Excel file?
Save it as CSV first: in Excel, choose File → Save As → CSV. In Google Sheets, choose File → Download → Comma-separated values.
Do I need to keep the page open?
Yes. Your browser sends the rows, so generation pauses if the tab closes. Finished PDFs are kept in that browser, and you can continue from the same point within 24 hours.
Is my CSV data stored?
Your file is read in your browser, and each row is sent to our servers only to create its PDF. Bulk runs don't save your rows or PDFs on our servers. They stay in your browser so you can resume a run.