What ZPL is, and why your label arrived as a text file
ZPL is the language Zebra thermal printers speak. The file is not a picture of the label: it is the recipe for drawing one, which is why it opens in Notepad and opens nowhere else.
The short answer
ZPL stands for Zebra Programming Language, the language Zebra thermal printers understand. A ZPL file is not a photo of the label: it is its recipe, written as text.
That explains what probably brought you here. The file opens in Notepad and shows a pile of carets; it will not open in an image viewer; and double-clicking it does nothing. It is not corrupted. It simply is not the kind of file you were expecting.
What a ZPL file looks like
This is a whole label, start to finish:
^XA
^CI28
^FO50,50^A0N,40,40^FDMaria Silva^FS
^FO50,110^A0N,30,30^FD210 Flower Street^FS
^FO50,160^BY2^BCN,100,Y,N,N^FD123456789012^FS
^XZEvery line tells the printer to do one thing. ^XA opens the label and ^XZ closes it. In between, ^FO says where to position, ^A0N picks the font and size, ^FD carries the text itself, and ^BC draws the barcode.
If that looks like programming, it is. And it is exactly why the file weighs a few kilobytes while the equivalent image would weigh hundreds.
Why the label is text, not an image
A thermal printer has no ink. It has a bar of dots that heat up, and the paper darkens where they touched. To print, it needs to know which dots to heat, and the printer itself decides that from the instructions it received.
Sending a finished image would force the system issuing the label to draw everything up front, at the exact resolution of that printer model, and to transmit a file dozens of times larger. Sending the recipe solves both at once: the file is tiny, and the same label comes out right on a 203 or a 300 dots per inch printer.
The consequence lands on your side: without a printer that speaks ZPL, the file on its own turns into nothing. It is a recipe with no kitchen.
Why you were sent one
Almost always because somebody along the way has a Zebra printer, and the system that generated the label assumed you do too.
| Where it usually comes from | What happened |
|---|---|
| Carrier | The shipping system generates the label in the format the warehouse uses. |
| Marketplace | The API returns ZPL because that is what the distribution centre prints. |
| ERP or WMS | The system was set up for a thermal printer that is not yours. |
| A colleague | They forwarded the file that works on their computer, the one wired to the right printer. |
In every case the file is correct. What is missing is the equipment it expects to find.
What you can do without a Zebra printer
Convert it. ZPL can be interpreted outside the printer, the label drawn, and a PDF or PNG handed back. Then any ordinary printer will do, including the A4 one in the office. That is what this site does, and it asks for no account for small batches.
Two things are worth knowing first. One is density: picking 203 instead of 300 shifts everything on the label, and the density guide explains how to find the right one. The other is print scaling, which is wrong by default in almost every viewer and shrinks the label without saying so: printing on A4 at real size has a guide of its own.
ZPL is not EPL, and the difference matters
There is an older, similar language: EPL, from Eltron, the company Zebra bought. Plenty of printers understand both and switch on their own, which is why a file "always worked" on the printer and still will not convert.
The difference shows on the first line: ZPL starts with ^XA, EPL starts with a bare letter such as N or q. There is a guide for telling the format apart in ten seconds, because the file extension is no help: .txt, .prn and .zpl get used for either one.
How many commands there really are
Zebra's manual has more than two hundred. A shipping label uses fewer than twenty, and almost always the same ones: open, position, write, barcode, close.
If curiosity moved from "what is this" to "what does each line do", the list of commands you will actually meet is the next step, with what each one does and the mistake each tends to cause.