CSV to Mailing Labels PDF Generator

Upload a CSV file with name and address data, map the columns, pick an Avery 5160, 5167, or other label template, and download a print-ready PDF — free, instant, and 100% in your browser.

🔒 Your data never leaves your device. Everything runs in-browser using PapaParse and pdf-lib. No file is uploaded to any server.
1
Upload your CSV file
📄
Click to choose a CSV file, or drag and drop here
Supports UTF-8 CSV with any delimiter. First row should be column headers.

How it works

This tool turns any spreadsheet or address list into a print-ready label sheet using two open-source libraries running entirely in your browser:

1. Parse CSV PapaParse reads your file locally — headers auto-detected, any delimiter supported.
2. Map columns You choose which column is the name, which is street, city, state, ZIP, country.
3. Place labels pdf-lib lays out one label per address in the exact Avery grid — multiple pages if needed.
4. Download PDF The finished PDF matches your label sheet 1:1. Load it in any printer dialog and print.

The PDF dimensions are precisely calculated from the Avery spec (or your custom dimensions). For Avery 5160: 8.5″ × 11″ sheet, 30 labels (3 columns × 10 rows), each 2.625″ × 1″ (66.7 × 25.4 mm), top margin 12.7 mm, left margin 4.8 mm, column gap 3.2 mm, no row gap.

Frequently asked questions

What Avery label templates are supported?
The tool includes built-in presets for Avery 5160 (30-up, Letter, the most common address label), Avery 5167 (80-up, Letter — small return address labels at 1.75″ × 0.5″), and A4 24-up (common in Europe, 3 columns × 8 rows, 70 × 37 mm). A custom-size option lets you enter any page size, label count, dimensions, margins, and gaps for any other sheet — Avery, Herma, Apli, or generic.
What columns does my CSV need?
Any CSV with at least one meaningful column works — there are no required column names. After upload you see all the headers and pick which one maps to Name, Company, Address Line 1, Address Line 2, City, State/Province, ZIP/Post Code, and Country. Every field is optional except at least one must be mapped. The tool concatenates the mapped fields into each label's text.
How do I print the PDF on Avery label sheets?
Open the downloaded PDF in your printer dialog and set Page Scaling = None (Actual Size). Do not use "Fit to page" or "Shrink to fit" — that would resize the labels and misalign the grid. On macOS, choose File → Print → Paper Handling → Scale to Fit: off. On Windows, open the PDF in Adobe Reader and choose "Actual size" in the page scaling dropdown. Feed your label sheet according to the tray guide marks for Letter (US) or A4 (EU).
Is my address data safe?
Yes. The entire workflow runs inside your web browser — your CSV is never uploaded to any server. The tool uses the browser's File API (read-only), PapaParse for parsing, and pdf-lib to build the PDF in memory. Closing the tab discards everything. No account, no tracking.
How many labels can I print at once?
There is no hard limit beyond your browser's memory. Practical limits depend on RAM: 10,000 addresses generate roughly 333 pages of Avery 5160 (30-up) and typically complete in a few seconds on modern hardware. The PDF is assembled incrementally per-page so memory use stays low. For very large lists (>50,000 rows) consider splitting the CSV.
Can I create return address labels (Avery 5167)?
Yes — select the Avery 5167 preset. It uses 80 labels per Letter sheet arranged in 4 columns × 20 rows, each label 1.75″ × 0.5″ (44.45 × 12.7 mm). Because these labels are small, keep your CSV rows short — ideally just a name plus a single address line. Increase the font size only if you have very few characters per label.