How to Print 100+ Labels at Once — Free
You've got a spreadsheet with hundreds of rows. You need a printed label for each one. Doing them one by one would take hours. Here's how to print them all at once, for free, in about 5 minutes.
Works with any data: addresses, product SKUs, barcodes, name badges, warehouse bins. Any label printer or sheet labels.
The Old Way vs The New Way
❌ The painful way
- Open DYMO Connect / Word / NiceLabel
- Design a label
- Type or paste data for label 1
- Print label 1
- Change the data for label 2
- Print label 2
- Repeat 98+ more times
- Lose your mind somewhere around label 47
⏱ Time: 2–4 hours
✅ The batch way
- Open OpenLabelMaker
- Design one label with
{{placeholders}} - Upload your spreadsheet
- Click Export → PDF
- Print the PDF
- Done. All 100+ labels printed.
⏱ Time: 5 minutes
4 Steps to Print 100+ Labels
Pick Your Label Size
Open the editor and select your label format. 500+ built-in sizes for DYMO, Brother, Zebra, Avery, HERMA, and more.
Design One Template
Create your label layout once. Use {{column_name}} wherever you want variable data. Works in text, barcodes, and QR codes.
Example — product label template:
Upload Your Data
Click 📊 Batch and import your data. Four options:
Export & Print
Preview your filled labels, then:
- • Download PDF — multi-page PDF with one unique label per position
- • Print directly — opens browser print dialog with correct page sizing
Printer labels (DYMO, Zebra): one label per page in the PDF. Sheet labels (Avery): labels fill the grid positions across multiple pages.
Real-World Examples at Scale
📦 E-commerce: 500 shipping labels
Export your Shopify/WooCommerce orders as CSV. Use a 4×6 or DYMO 99014 template with {{name}}, {{address}}, {{tracking}}. Export 500-page PDF, print on thermal printer.
Time: ~3 min to set up, ~5 min to print
🏷️ Inventory: 2,000 barcode labels
Export inventory list from your system. DYMO 11354 template with {{sku}} barcode + {{product}} + {{location}}. Each label gets a unique scannable barcode.
Time: ~3 min to set up, ~10 min to print
💌 Wedding: 200 address labels
Guest list from Google Sheets. Avery L7160 template (21/sheet = 10 sheets for 200 guests). {{name}} + {{address}} in elegant font.
Time: ~5 min to design, 10 pages to print
🏢 Conference: 150 name badges
Attendee CSV with {{name}}, {{company}}, {{role}} + QR code with {{linkedin_url}}. Print on badge label sheets or DYMO.
Time: ~5 min to design, 150 unique badges
Bonus: Print Multiple Copies of Each Label
Sometimes you need 5 copies of each product label, not just one. The batch feature includes a "Print each label ×" repeat count. Set it to 5, and your 100-row spreadsheet becomes 500 labels.
Combined with the {{#}} auto-numbering field, you can create sequential numbered labels (001, 002, 003...) without any data file at all — just set a start number and count.
What Would This Cost with Other Tools?
| Tool | Price | Batch from CSV? | Any printer? |
|---|---|---|---|
| OpenLabelMaker | Free | ✓ | ✓ |
| BarTender | $495/year | ✓ | ✓ |
| NiceLabel | $295+ | ✓ | ✓ |
| Labeljoy | Free (5 rows) / €59+ | Limited in free | ✓ |
| DYMO Connect | Free | Limited | DYMO only |
FAQ
What's the maximum number of labels I can print?
There's no hard limit. The tool runs in your browser, so performance depends on your device. Most users print 100–5,000 labels without issues. For 10,000+, the PDF generation may take 30–60 seconds.
Can I print the same label 100 times (no variable data)?
Yes! Use the "Print each label ×" repeat count in the export settings. Design one label, set repeat to 100, and export. No spreadsheet needed for identical labels.
How long does it take to generate 500 labels?
Typically 5–15 seconds on a modern computer. Each label is rendered as a high-quality image in the PDF. Simpler designs (text only) are faster; complex designs (multiple barcodes, images) take a bit longer.
Do all 100+ labels print with different data?
Yes — that's the whole point. Each row in your spreadsheet becomes a unique label. Row 1 → label 1, row 2 → label 2, and so on. Every {{field}} gets replaced with the data from that row.