What Is ZPL? Zebra Programming Language Explained
ZPL (Zebra Programming Language) is the text-based command language that tells Zebra (and ZPL-compatible) thermal printers how to draw a label — text, barcodes, boxes, and images. Every label is plain text that begins with ^XA and ends with ^XZ, so it can be generated by software and sent straight to the printer. Below: the essential commands, a minimal example you can edit live, and the four ZPL tools on this site.
A minimal ZPL label
This is a complete, valid label. ^FO sets the position (in dots from the top-left), ^A0N,40,40 selects the scalable font 0 at 40×40 dots, and ^FD…^FS is the text to print:
^XA ^FO50,50^A0N,40,40^FDHello World^FS ^XZ
Edit it in the live viewer below and watch the label redraw.
Try ZPL live
Label preview
Essential ZPL commands
Almost every label is built from this handful of commands. Commands start with a caret (^); control commands use a tilde (~).
| Command | Name | What it does |
|---|---|---|
^XA | Start Format | Begins a label definition. |
^XZ | End Format | Ends the label and prints it. |
^FO | Field Origin | Sets the x,y position of the next field, in dots. |
^A | Font | Selects a font and character size for one field (e.g. ^A0N,40,40). |
^CF | Change Font | Sets the default font/size for the fields that follow. |
^FD | Field Data | The actual text or barcode data to print. |
^FS | Field Separator | Marks the end of a field. |
^GB | Graphic Box | Draws a box or line (width, height, thickness). |
^BC / ^BQ | Barcodes | Code 128 (^BC) and QR Code (^BQ); see the barcode commands. |
^BY | Bar Code Defaults | Module width, wide-to-narrow ratio, and height for barcodes. |
Explore the ZPL toolkit
ZPL Viewer
Paste or upload ZPL and preview the rendered label online in real time.
ZPL to PDF
Convert Zebra ZPL labels to PDF or PNG and download them in one click.
ZPL Fonts
Built-in fonts A–H and the scalable font 0, with the ^A and ^CF commands.
ZPL Barcode Commands
Code 128, QR, Data Matrix and more — the ^BC, ^BQ, ^BX and ^BY commands.
Frequently Asked Questions
What is ZPL?
ZPL (Zebra Programming Language) is the command language used to design and print labels on Zebra and ZPL-compatible thermal printers. A ZPL label is plain text made of caret-prefixed commands (for example ^FO and ^FD) that start with ^XA and end with ^XZ.
What is ZPL used for?
ZPL is used to lay out and print shipping labels, barcodes, product tags, and asset labels. Because a label is just text, ZPL can be generated by software (WMS, ERP, e-commerce) and sent straight to the printer, which renders the text, barcodes, and graphics at the chosen print density (dpmm).
What does a ZPL label look like?
A minimal label is ^XA ^FO50,50 ^A0N,40,40 ^FDHello World^FS ^XZ. ^XA starts the format, ^FO sets the position in dots, ^A0N chooses a scalable font and size, ^FD…^FS holds the field data, and ^XZ ends the label.
Is ZPL the same as EPL?
No. EPL (Eltron Programming Language) is an older, simpler Zebra language. ZPL II is the current standard and supports scalable fonts, 2D barcodes, and graphics. Most modern Zebra printers accept ZPL II; some also accept EPL for backward compatibility.
How can I view or test ZPL without a printer?
Use the ZPL Viewer: paste your code and see the rendered label instantly. You can adjust label size and print density, then export to PDF or PNG — no printer or install required.