How to Bulk-Generate PDFs from a CSV with ImaginePDF

Fill a CSV with your rows, upload it to a dataset, and download a zip of finished PDFs, one per row, no code required.

Jagadeesh
Jagadeesh
June 26, 20267 min read

In the first guide we designed a certificate, and in the second we turned a few of its fields into variables and filled one with a single API call. Filling them one at a time is fine for one certificate. For a graduating class of a hundred, you'd rather hand over a spreadsheet and get a hundred PDFs back.

That's what a dataset is for. You download a CSV with one column per field, fill in a row for each certificate, upload it, and click one button, and a zip of finished PDFs lands in your downloads. No code.

A CSV of rows becomes a zip of PDFs
One row per certificate in, one PDF per row out: a whole batch from a single design.

Set up a dataset

A dataset lives next to your design and holds the rows you want to fill. Open the certificate in the editor, click the menu in the top bar, and choose Create dataset. Give it a name and you land on the dataset view, a grid where every variable you named earlier is its own column. (Already made one? It's waiting in the Datasets tab of your dashboard.)

If the grid says the design has no fields, you skipped a step: open it in the editor and mark the fields you want to fill as variables first. Each one becomes a column here.

The four steps of a bulk run
Download the template, fill in your rows, import the CSV, and export the batch.

Download the template and fill it in

You can type rows straight into the grid, but for more than a couple it's easier to work in a spreadsheet. Click Template to download a CSV whose headers are exactly your field names:

recipient_name,course_name,date
Jane Doe,Advanced TypeScript,26 June 2026
John Smith,Intro to Rust,26 June 2026
Priya Patel,Designing for Accessibility,26 June 2026

Open it in Google Sheets, Excel, or any editor, and add one row per certificate: a recipient_name, course_name, and date for each person. A dataset holds up to 100 rows at a time. Save it back as CSV when you're done.

A filled CSV template
The template's headers are your field names. Add one row per certificate.

Import your rows

Back in the dataset view, click Import CSV and pick your file. The rows drop into the grid, matched up by column name, and save on their own; watch the Saved indicator in the corner. Anything that doesn't line up with a field is skipped, so a stray notes column in your spreadsheet won't break the import.

Want to be sure before you commit? Click any row to preview that exact certificate (Jane's name, her course, her date) rendered just as it'll come out.

The dataset view with imported rows
Imported rows land in the grid and save automatically; click a row to preview it before you export.

Export the batch

When the rows look right, click Export. The button counts up as it works (Exporting 5/100…), and when it finishes, a zip downloads on its own, with one PDF per row. That's the whole job: a spreadsheet in, a folder of finished certificates out.

One design, a whole batch

This is the same certificate you designed once, now issued a hundred ways. Change the spreadsheet next term and run it again: new names, same polished layout, no redrawing.

Open the design in the visual editor to refine the look, or look back at how we named the fields and designed the certificate to begin with.

Related guides