Guides › How to Print ZPL Labels from Excel or CSV Data

How to Print ZPL Labels from Excel or CSV Data

Published:

The most common real-world labelling job is not one label — it is one design and a spreadsheet of rows: products, shipments, shelf locations. This guide shows the whole path from an Excel/CSV file to a stack of printable ZPL labels.

Step 1 — put variables in your ZPL

Wherever a value changes per row, replace it with a {{name}} placeholder:

^XA
^FO40,40^A0N,35^FD{{product}}^FS
^FO40,90^BY2^BCN,80,Y,N,N^FD{{sku}}^FS
^XZ

Placeholders can be typed ({{qty:sayi}} for numbers) and can carry defaults ({{note|—}} keeps a row valid when the cell is empty). The bulk tool detects the placeholders automatically when you paste the template.

Step 2 — export your sheet as CSV

In Excel: File → Save As → CSV (UTF-8). The first row must be headers. Header names do not have to match the placeholder names — the next step maps them — but matching names map themselves.

Step 3 — upload and map columns

In the bulk generator, upload the CSV and match each placeholder to a column. You get a per-row preview before anything is generated, so a mismatched column shows up as a wrong label on screen, not as a wasted roll of media.

Step 4 — generate and print

The batch runs as a job: you see progress, can cancel, and download the result as a ZIP. Each generated label counts against your plan's quota — a 500-row sheet is 500 operations, and the tool says so before you start rather than surprising you at the invoice.

Automating it over the API

The same flow exists as REST endpoints for recurring jobs: POST /v1/variables/csv parses the file, POST /v1/bulk/jobs starts the batch — see the API reference. What worked in the browser works identically over the API; it is the same engine.

Honest limits

Rendering shows what the server draws, not what your printer's darkness and media will do with it — proof one label physically before committing a large batch. Formulas in cells are treated as plain text (deliberately: CSV formula injection is a real attack), so compute values in the sheet before exporting.

Frequently asked questions

Can I print ZPL labels directly from an Excel file?

Not directly — export the sheet as CSV (UTF-8) first, then upload it to the bulk generator. Placeholders like {{sku}} in your ZPL template are mapped to CSV columns, previewed per row, and generated as a batch job.

Do Excel formulas work in the CSV?

No — cell content is treated as plain text on purpose (CSV formula injection is a real attack). Compute the values in the spreadsheet before exporting; only the results travel.

How is a 500-row batch billed?

Each generated label counts as one operation against your plan's quota, so 500 rows are 500 operations. The tool states the count before you start the job.

Related guides

What is ZPL?

ZPL is the language Zebra thermal printers understand. How to read the commands, how a label is put together, and the most common mistakes.

Which barcode symbology should I use?

EAN-13, Code 128 or QR? Practical rules for picking a barcode based on your data, your space and the scanner that has to read it.

How to preview a ZPL file without a printer

A ZPL file is just text — the label only exists once something draws it. Three practical ways to see a ZPL label before it reaches the printer.

Try your own ZPL code →