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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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 printerA 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.