Complete comparison between Zebra's two programming languages with code examples and migration guide
Try our free ZPL tools right now
Free, runs in your browser — Instant results
Zebra Technologies developed two programming languages for their thermal printers: ZPL (Zebra Programming Language) and EPL (Eltron Programming Language). ZPL was created in the 1990s as the successor to EPL, which existed since the 1980s when Zebra acquired Eltron Technologies. Although both are used to create labels, they have fundamental differences in syntax, graphic capabilities, barcode support and performance. EPL was officially discontinued in 2010 but remains in use in legacy systems. This guide helps you understand the differences and decide when to migrate.
| Feature | ZPL | EPL |
|---|---|---|
| Year of introduction | 1990s — Modern language, actively developed | 1980s — Legacy language, discontinued in 2010 |
| Basic syntax | Commands with ^ (format) and ~ (configuration). Example: ^XA...^XZ | Commands with simple letters. Example: N...P |
| Label structure | ^XA opens, ^XZ closes. Fields with ^FO+^FD+^FS | N clears buffer, P prints. Fields with direct positioning |
| 1D barcodes | Code 128, Code 39, EAN-13, UPC-A, Code 93, Interleaved 2 of 5 and more | Code 128, Code 39, EAN-13, UPC-A — fewer options |
| 2D barcodes | QR (^BQ), DataMatrix (^BX), PDF417 (^B7), Aztec (^BO) | Only PDF417 and DataMatrix on recent models, no native QR |
| Graphics and images | ^GF for images, ^GB for boxes, ^GC for circles, ^GD for diagonal lines | Only GW (Graphic Write) for simple bitmap images |
| Fonts | Scalable built-in fonts (0-9, A-Z), downloadable TrueType, Unicode via ^CI28 | 5 fixed bitmap fonts, no scaling, no Unicode |
| Text rotation | 4 orientations per field (N=0°, R=90°, I=180°, B=270°) | 4 rotations but only for the entire label |
| Serialization | ^SN with configurable increment, zero padding, multiple fields | Basic serialization with C command, less flexible |
| Print speed | ^PR controls speed per label (1-14 inches/second) | S controls speed but with less granularity |
| Print mode | ^MM supports tear-off, peel-off, rewind, cutter and applicator | Fewer modes, more limited configuration |
| Compatible printers | All modern Zebra (ZD, ZT, ZQ, ZE). Partially compatible with TSC and SATO | Original Eltron and old Zebra (LP, TLP). No support on current printers |
| Support and documentation | Updated ZPL II manual, active community, abundant examples | Archived documentation, no updates since 2010 |
| Marketplace usage | Amazon, eBay, Shopify and FedEx generate shipping labels in ZPL | No modern marketplace generates labels in EPL |
^XA ^FO50,50 ^A0N,30,30 ^FDHello World^FS ^XZ
N A50,50,0,3,1,1,N,"Hello World" P1
^XA ^FO50,50 ^BY2 ^BCN,100,Y,N,N ^FD123456789^FS ^XZ
N B50,50,0,1,2,3,100,B,"123456789" P1
^XA ^FO50,30^A0N,25,25 ^FDProduct: Widget^FS ^FO50,70^BY2 ^BCN,80,Y^FDSKU001^FS ^FO40,20^GB350,150,2^FS ^XZ
N A50,30,0,2,1,1,N,"Product: Widget" B50,70,0,1,2,2,80,B,"SKU001" X40,20,2,390,170 P1
For any new project, ZPL is the right choice without question. It offers more features, better support, up-to-date documentation and is the worldwide logistics industry standard. If you have existing EPL code, plan a gradual migration following the steps in this guide. If you use non-Zebra printers (Brother, DYMO, Rollo), convert your ZPL code to PDF with ZPLPDF to print from any brand.
Try our free tools to view, validate and convert ZPL files to PDF.