Skip to content

Print labels from Excel or CSV

One label per row: put {{column}} in a ZPL template where each value goes, load your spreadsheet and download every label as ZPL or PDF.

Free and without an account. Your file is read in this browser and never uploaded.

1Your data

2Label template

3Preview and download

The ZPL file goes straight to a Zebra printer. The PDF is for any other printer, one page per label.

Without an account: 5 rows a day. Free account: 20 a day. Paid plans: whole files.

How to print labels from a spreadsheet

  1. Load your Excel or CSV file, or paste the cells. Each row becomes one label.
  2. Write the label in ZPL, or design it in the viewer and bring it here, and put {{column}} where each value goes. Fields with the same name as a column are matched on their own.
  3. Check a few rows in the preview, then download the ZPL to send to the printer or the PDF to print anywhere.

From your own code

If the data comes from your system, fill the template there and send the ZPL to the API: up to 50 labels per request. The API docs show the call in nine languages.

Questions

Is it free?

You can try it for free: load your whole file and preview every row, then download up to 5 rows a day without an account, or 20 a day with a free account. Paid plans download whole files, from 10,000 rows on Starter to 100,000 on Business.

Is my spreadsheet uploaded?

No. The file is read in your browser and stays there. Only the filled ZPL is sent to the API to draw the preview and the PDF, and the API doesn't keep it.

How do I print several copies of each row?

Add a column with the number of copies and put ^PQ{{copies}} before ^XZ in the template. Each row then prints that many labels.

What if a value has ^, ~ or accents?

The page escapes them for you: fields with ^ or ~ get ^FH and the characters in hex, and accented text gets ^CI28 (UTF-8) if the template doesn't set an encoding.

Can I do this from my code?

Yes. Fill the template in your own code and send the ZPL to the API, up to 50 labels per request. The API docs have the call in nine languages.

Feedback