ZPL compatibility of the OpenZPL engine
The OpenZPL engine draws the 64 ZPL commands of the command reference, one of them partially, and skips the ones that configure the printer. The barcode and text commands listed under “Not supported yet” don't draw correctly today.
Tested 2026-10-26 with openzpl-api 10d0497 at 8 dpmm.
How we test
Every example on this site is a fixture: a short synthetic label that the engine renders to a PNG when the site is built. If a fixture's ZPL changes and its image isn't rendered again, the build fails, so the image always shows what the engine does with that exact code.
The 140 fixtures are public in fixtures.json, with their size, density and image, under CC0. Use them to test any ZPL renderer.
A preview isn't a print. Darkness, media, firmware and the fonts installed on a printer change the result, so check critical labels on the printer itself.
Drawn
| Command | Čo robí | Category | Evidence |
|---|---|---|---|
^XA |
Otvorí štítok. Všetko až po ^XZ je jeden štítok. | Formát nálepky | Rendered example |
^XZ |
Zavrie otvorený štítok ^XA a vytlačí ho. | Formát nálepky | Rendered example |
^PW |
Nastavuje šírku etikety v bodoch. | Formát nálepky | Rendered example |
^LL |
Nastavuje dĺžku etikety v bodoch. | Formát nálepky | Rendered example |
^LH |
Posúva pôvod, od ktorého sa merajú všetky polohové hodnoty. | Formát nálepky | Rendered example |
^LS |
Posúva každé pole doľava o zadaný počet bodov. | Formát nálepky | Rendered example |
^LT |
Posúva celý štítok nahor alebo nadol o daný počet riadkov bodov. | Formát nálepky | Rendered example |
^PO |
Tlačí štítok normálne (N) alebo hore nohami (I). | Formát nálepky | Rendered example |
^PM |
Zrkadlí celý štítok horizontálne, ak je nastavené na Y. | Formát nálepky | Rendered example |
^PQ |
Nastavuje, koľko etikiet sa má vytlačiť; každá sa počíta ako etiketa v náhľade. | Formát nálepky | Rendered example |
^MU |
Zmení jednotku merania na body, palce alebo milimetre. | Formát nálepky | Rendered example |
^CI |
Vyberá znakovej sady. ^CI28 je UTF-8. | Formát nálepky | Rendered example |
^FO |
Nastavuje pozíciu poľa: x, y súradnice v bodoch od ľavého horného rohu. | Polia a pozícia | Rendered example |
^FT |
Umiestňuje pole podľa jeho základnej línie namiesto jeho horného ľavého rohu. | Polia a pozícia | Rendered example |
^FD |
Textové alebo čiarové kódové údaje aktuálneho poľa. | Polia a pozícia | Rendered example |
^FS |
Ukončuje aktuálne pole. | Polia a pozícia | Rendered example |
^FB |
Ovinie text do bloku so šírkou, počtom riadkov a zarovnaním. | Polia a pozícia | Rendered example |
^FR |
Tlačí pole biele na čiernom nad čímkoľvek, čo je pod ním. | Polia a pozícia | Rendered example |
^FH |
Umožňuje, aby ^FD obsahovalo hex úniky ako _0D. | Polia a pozícia | Rendered example |
^FW |
Nastavuje predvolené otočenie pre nasledujúce polia. | Polia a pozícia | Rendered example |
^FN |
Nazýva premenné pole v uloženom formáte. | Polia a pozícia | Rendered example |
^FX |
Komentár. Tlačiareň ignoruje všetko až po nasledujúcu príkaz. | Polia a pozícia | Rendered example |
^SN |
Tlačí číslo, ktoré sa na každom štítku zvyšuje. | Polia a pozícia | PartialRead but not drawn: the serial field is left out and copies aren't incremented (the same as Labelary's preview). Rendered example |
^A |
Vyberá font, otočenie a veľkosť pre ďalšie textové pole. | Text a písma | Rendered example |
^A@ |
Vyberá font podľa jeho názvu súboru na tlačiarni. | Text a písma | Rendered example |
^CF |
Nastavuje font a veľkosť používané, keď pole nemá ^A. | Text a písma | Rendered example |
^TB |
Zabalí textové pole do rámčeka s danou šírkou a výškou. | Text a písma | Rendered example |
^CW |
Priradí názov s jedným znakom k súboru písma. | Text a písma | Stores or recalls data; no image of its own |
^BY |
Nastavuje šírku modulu, pomer širokého a úzkeho a výšku pre nasledujúce čiarové kódy. | Čiarové kódy | Rendered example |
^BC |
Kód 128, najbežnejší na prepravných štítkoch. | Čiarové kódy | Rendered example |
^B3 |
Čiarový kód kód 39. | Čiarové kódy | Rendered example |
^B2 |
Prepletaný 2 z 5 čiarový kód, iba číselný. | Čiarové kódy | Rendered example |
^BE |
EAN-13 maloobchodný čiarový kód. | Čiarové kódy | Rendered example |
^B8 |
EAN-8 maloobchodný čiarový kód. | Čiarové kódy | Rendered example |
^BU |
UPC-A maloobchodný čiarový kód. | Čiarové kódy | Rendered example |
^B9 |
UPC-E maloobchodný čiarový kód. | Čiarové kódy | Rendered example |
^BQ |
QR Code. Dátové pole začína na úrovni opravy chýb a režime vstupu, ako v ^FDQA,text. | Čiarové kódy | Rendered example |
^BX |
2D čiarový kód Data Matrix. | Čiarové kódy | Rendered example |
^B7 |
PDF417, zložený 2D čiarový kód. | Čiarové kódy | Rendered example |
^BO |
Aztec 2D čiarový kód. | Čiarové kódy | Rendered example |
^BD |
MaxiCode, používaný UPS. | Čiarové kódy | Rendered example |
^B0 |
Aztec 2D čiarový kód; rovnaký príkaz ako ^BO. | Čiarové kódy | Rendered example |
^BA |
Code 93 čiarový kód: hustejší ako Code 39, s dvoma zabudovanými kontrolnými znakmi. | Čiarové kódy | Rendered example |
^BK |
Codabar čiarový kód, používaný knižnicami, transfúznymi stanicami a niektorými kuriérmi. | Čiarové kódy | Rendered example |
^BL |
Čiarový kód LOGMARS, kód 39 amerických ozbrojených síl s povinnou kontrolnou číslicou. | Čiarové kódy | Rendered example |
^B1 |
Code 11 čiarový kód, numerický, používaný na telekomunikačnom zariadení. | Čiarové kódy | Rendered example |
^BM |
MSI (modifikovaný Plessey) čiarový kód, číselný, použitý na etikety na policiach. | Čiarové kódy | Rendered example |
^BP |
Plessey čiarový kód, číselný, s CRC kontrolnou číslicou. | Čiarové kódy | Rendered example |
^BS |
Doplnok s 2 alebo 5 číslicami vytlačený vedľa UPC alebo EAN kódu. | Čiarové kódy | Rendered example |
^BZ |
Poštové čiarové kódy USA: POSTNET, PLANET a Intelligent Mail. | Čiarové kódy | Rendered example |
^B5 |
Čiarový kód USPS PLANET. | Čiarové kódy | Rendered example |
^BR |
GS1 DataBar (predtým RSS): kompaktné GTIN čiarové kódy pre produkty a kupóny. | Čiarové kódy | PartialGS1 DataBar types 1 to 6 are drawn. Type 6 (Expanded) encodes the data as written and scans the same as Labelary's, but its last characters can differ; types 7 to 12 (UPC/EAN composites) print the data as text. Rendered example |
^BF |
MicroPDF417, menší PDF417 pre malé etikety. | Čiarové kódy | Rendered example |
^GB |
Kreslí štvorec alebo čiaru: šírka, výška, hrúbka okraja, farba a zaoblenie. | Grafika | Rendered example |
^GC |
Kreslí kruh: priemer, hrúbka okraja a farba. | Grafika | Rendered example |
^GE |
Kreslí elipsu. | Grafika | Rendered example |
^GD |
Kreslí diagonálnu čiaru. | Grafika | Rendered example |
^GF |
Vkladá bitmapový obrázok do štítka (ASCII hex, binárny alebo Z64). | Grafika | Rendered example |
^GS |
Tlačí registrovaný, autorský alebo iný symbol. | Grafika | Rendered example |
^DF |
Ukladá formát etikety na tlačiarni pod menom. | Uložené formáty a obrázky | Rendered example |
^XF |
Získa uložený formát na vyplnenie jeho ^FN polí. | Uložené formáty a obrázky | Rendered example |
~DG |
Ukladá obrázok na tlačiarni pod menom. | Uložené formáty a obrázky | Stores or recalls data; no image of its own |
^XG |
Tlačí obrázok uložený s ~DG. | Uložené formáty a obrázky | Stores or recalls data; no image of its own |
^IM |
Tlačí uložený obrázok na aktuálnom mieste poľa. | Uložené formáty a obrázky | Stores or recalls data; no image of its own |
Ignored on purpose
These commands set up the printer, not the label. The API accepts them and renders the label as if they weren't there; we checked that the image is byte-identical without them.
| Group | Commands |
|---|---|
| Media and sensors | ^MM, ^MN, ^MT, ^MF, ~JS |
| Speed, darkness and tear-off | ^PR, ~SD, ^MD, ~TA |
| Calibration and printer state | ~JC, ~JA, ~JR, ^JU, ~HS |
| Network, RFID setup and host queries | ^NC, ^NI, ^RS, ~HI, ~HM |
Not supported yet
Each one was tested by placing it in a label at 8 dpmm. None of them fails the request: the label renders, without the symbol.
| Command | Symbology or feature | What the engine does today |
|---|---|---|
^B4 | Code 49 | No bars; the data is printed as text (Labelary doesn't draw it either). |
^BB | CODABLOCK | No symbol; the data is printed as text (Labelary doesn't draw it either). |
^BT | TLC39 | No symbol; the data is printed as text (Labelary doesn't draw it either). |
Known differences
- A format with no fields, such as
^XA^XZ, returns400 ERROR: No labels found in the ZPLinstead of a blank image. - Fonts: Zebra's font 0 (CG Triumvirate Bold Condensed) can't be bundled, so
^A0is drawn with Roboto Condensed Bold, with spacing calibrated per character. The bitmap fonts^AA–^AHare drawn with DejaVu Sans Mono. Text widths can differ by a few dots from a given printer. - An RFID write (
^RFfollowed by^FD…^FS) draws its data as text; a printer encodes it in the tag and prints nothing. - EPL reverse text (the
Rflag ofA) gets a black box the size of the character cells, as on the printer; it can run past the last character because the substitute font is narrower than EPL's bitmap fonts.
Presun z Labelary
The API keeps Labelary's v1 paths and headers, so most clients only change the host. See Migrate from Labelary for the tested differences and OpenZPL vs Labelary for the comparison.