Skip to main content

Excel to ZPL

Turn every row of an Excel sheet or CSV file into a ZPL label for your Zebra printer. Write the label once with {column} fields where the data goes, check any row in the preview, and download one ZPL file that holds a label per row — product tags, shelf labels, asset tags, name badges, or a pallet run.

Starting from an existing label? Check it in the ZPL viewer first. Want the labels as a document? ZPL to PDF. Rather drag fields than write ZPL? The label designer prints from spreadsheets too.

1

Your data

#ProductSKUPriceCopies
1Stainless Water BottleWB-100124.992
2Canvas Tote BagTB-204018.501
3Ceramic Mug — 12 ozMG-331214.003
4Café Blend Coffee 1 lbCF-004216.751

Drop an .xlsx, .csv or .tsv file here. The first row is read as column names. Your file is read in this browser and is not uploaded.

2

ZPL template

Click a column to insert it at the cursor:

Label Size
3

Preview and download

of 4

Preview row 1 as it prints.

The ZPL file holds every row, free. A PDF of all 4 rows in one file is part of a paid plan.

Note on Watermarks: The ZPL download never carries a watermark: it is your template with your data in it. The on-screen preview and free PDFs are drawn by LabelZoom and show a small watermark that never reaches the printer file. Paid plans remove it and render every row into one PDF.

Your template comes back exactly as you wrote it, with only the {fields} replaced: no font swaps, no rewritten commands.

Spreadsheets are read in the browser. Product lists, prices and addresses stay on your machine.

Values with ^, ~ or accents are escaped for you, so a stray caret in a part number can't break the label.

How to print labels from Excel

  1. 1

    Load your data: drop an .xlsx, .csv or .tsv file, or copy the cells in Excel or Google Sheets and paste them. Keep column names in the first row. Older .xls and .ods files need saving as .xlsx or CSV first.

  2. 2

    Write the ZPL label, or paste one you already print, and click a column to drop its {field} into a ^FD. Barcodes take a field the same way as text: ^BCN,100^FD{SKU}^FS. Set the print density to match your printer.

  3. 3

    Step through rows in the preview, then download the ZPL and send it to the printer the way you already do, or use Print to reach a printer connected through LabelZoom Cloud Print.

Fill the same template from your own code

When the rows come from an ERP, a WMS or a nightly job instead of a spreadsheet, keep the template and send the rows as JSON. The conversion API fills {Product} and {SKU} in each ^FD and returns one label per entry.

REST API · two rows, two labels
curl -X POST 'https://api.labelzoom.com/api/v2/convert/zpl/to/zpl' \
  --url-query 'params={"data":[{"Product":"Canvas Tote Bag","SKU":"TB-2040"},{"Product":"Ceramic Mug","SKU":"MG-3312"}]}' \
  -H 'Content-Type: text/plain' \
  --data-binary '^XA^FO40,40^A0N,46,46^FD{Product}^FS^FO40,110^BY3^BCN,100,Y,N,N^FD{SKU}^FS^XZ'

Merge-field rules and the data parameter are in the merge fields reference. SDKs and keys: ZPL API.

Start converting now

Frequently Asked Questions

Answers about turning spreadsheet rows into Zebra labels.

Is the Excel to ZPL converter free?
Yes. The ZPL file with a label for every row is free, needs no account, and carries no watermark, because your browser builds it from your own template. The preview image and the PDF are rendered by LabelZoom: a free PDF covers the row on screen, and a single PDF holding every row is part of a paid plan.
Is my spreadsheet uploaded?
No. The workbook or CSV is opened in your browser, and the merge runs there too. Only the filled-in ZPL for the row you preview, or the rows you turn into a PDF, is sent to LabelZoom to be drawn. The spreadsheet itself never leaves your computer.
How do I print several copies of each row?
Add a column such as Copies to the sheet and put ^PQ{Copies} in the template, before ^XZ. Each label then carries its own print quantity, so a row with 3 prints three times. Rows without a quantity fall back to the printer's default of one.
What happens to ^, ~, accents and line breaks in my data?
A cell containing ^ or ~ would end the field and start a printer command, so that field gets ^FH and the characters are written as hex escapes (_5E and _7E). Accented letters such as é or ñ make the converter add ^CI28 (UTF-8) after ^XA when your template doesn't choose a code page. A line break inside a cell becomes \& in a ^FB text block and a space anywhere else.
My column names have spaces. What do I type in the template?
Field names use letters, digits and underscores, so a column headed Product Name becomes {Product_Name}. Click a column chip above the editor and the right name is inserted for you. Matching ignores case, so {sku} finds a column headed SKU.
Why did the leading zeros disappear from my SKUs?
Excel stores 00123 as the number 123 unless the column is formatted as Text, and the workbook only keeps the number. Format the column as Text before typing the codes, or export a CSV in which they are quoted, and the zeros are kept on the label and in the barcode.
Does the converter change my ZPL?
No. The download is your template copied character for character, once per row, with each {field} replaced by that row's value. The only additions are the ^FH and ^CI28 described above, and only in the fields and labels that need them.
Can I generate the labels from my own code?
Yes. Send the same template to the LabelZoom conversion API with a data array, one object per label, and the API fills each {field} inside ^FD on the server. The API rebuilds the label as it converts it, so its output is equivalent rather than byte-identical, and calls without a paid API key carry a watermark.