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 | Šta to radi | Category | Evidence |
|---|---|---|---|
^XA |
Otvara etiketu. Sve do ^XZ je jedna etiketa. | Format etikete | Rendered example |
^XZ |
Zatvara oznaku otvorenu sa ^XA i štampa je. | Format etikete | Rendered example |
^PW |
Podesi širinu oznake u tačkama. | Format etikete | Rendered example |
^LL |
Podesi dužinu oznake u tačkama. | Format etikete | Rendered example |
^LH |
Pomera početnu tačku od koje se meri svaka pozicija polja. | Format etikete | Rendered example |
^LS |
Pomera svako polje ulevo za dati broj tačaka. | Format etikete | Rendered example |
^LT |
Pomera celu etiketu nagore ili nadole za zadati broj redova tačaka. | Format etikete | Rendered example |
^PO |
Štampajte oznaku normalno (N) ili naopako (I). | Format etikete | Rendered example |
^PM |
Ogleda celu etiketu horizontalno kada je postavljeno na Y. | Format etikete | Rendered example |
^PQ |
Podesite koliko oznaka da se štampa; svaka se računa kao oznaka u prikazu. | Format etikete | Rendered example |
^MU |
Menja jedinicu mere u tačke, inče ili milimetre. | Format etikete | Rendered example |
^CI |
Odabire skup karaktera. ^CI28 je UTF-8. | Format etikete | Rendered example |
^FO |
Podesi poziciju polja: x, y koordinate u tačkama od gornjeg levog ugla. | Polja i pozicija | Rendered example |
^FT |
Pozicionira polje po njegovoj osnovici umesto po gornjem levom uglu. | Polja i pozicija | Rendered example |
^FD |
Tekst ili podaci o bar kodu trenutnog polja. | Polja i pozicija | Rendered example |
^FS |
Zatvara trenutno polje. | Polja i pozicija | Rendered example |
^FB |
Obavija tekst u blok sa širinom, brojem redova i poravnanjem. | Polja i pozicija | Rendered example |
^FR |
Štampajte polje belo na crnom preko onoga što se nalazi ispod. | Polja i pozicija | Rendered example |
^FH |
Dozvoljava ^FD da sadrži heksadecimalne escape znakove kao što je _0D. | Polja i pozicija | Rendered example |
^FW |
Podesi podrazumevanu rotaciju za polja koja slede. | Polja i pozicija | Rendered example |
^FN |
Ime varijablskog polja u sačuvanom formatu. | Polja i pozicija | Rendered example |
^FX |
Komentar. Štampač ignoriše sve do sledeće komande. | Polja i pozicija | Rendered example |
^SN |
Štampajte broj koji se povećava na svakoj oznaci. | Polja i pozicija | PartialRead but not drawn: the serial field is left out and copies aren't incremented (the same as Labelary's preview). Rendered example |
^A |
Odabire font, rotaciju i veličinu za sledeće tekstu polje. | Tekst i fontovi | Rendered example |
^A@ |
Odabire font po imenu datoteke na štampaču. | Tekst i fontovi | Rendered example |
^CF |
Podesi font i veličinu koja se koristi kada polje nema ^A. | Tekst i fontovi | Rendered example |
^TB |
Obavija tekstualno polje unutar okvira zadate širine i visine. | Tekst i fontovi | Rendered example |
^CW |
Dodeljuje ime od jednog slova datoteci fonta. | Tekst i fontovi | Stores or recalls data; no image of its own |
^BY |
Podesi širinu modula, odnos širokog i uskog i visinu za barkode koji slede. | Barkodovi | Rendered example |
^BC |
Code 128 bar kod, najčešći na poštanskim etiketama. | Barkodovi | Rendered example |
^B3 |
Code 39 barkod. | Barkodovi | Rendered example |
^B2 |
Mešani 2 od 5 barkod, samo numerički. | Barkodovi | Rendered example |
^BE |
EAN-13 maloprodajni barkod. | Barkodovi | Rendered example |
^B8 |
EAN-8 maloprodajni barkod. | Barkodovi | Rendered example |
^BU |
UPC-A maloprodajni bar kod. | Barkodovi | Rendered example |
^B9 |
UPC-E maloprodajni bar kod. | Barkodovi | Rendered example |
^BQ |
QR код. Податак поља почиње нивоом корекције грешке и режимом уноса, као у ^FDQA,text. | Barkodovi | Rendered example |
^BX |
Data Matrix 2D barkod. | Barkodovi | Rendered example |
^B7 |
PDF417 složeni 2D barkod. | Barkodovi | Rendered example |
^BO |
Aztec 2D barkod. | Barkodovi | Rendered example |
^BD |
MaxiCode, koristi UPS. | Barkodovi | Rendered example |
^B0 |
Aztec 2D barkod; ista komanda kao ^BO. | Barkodovi | Rendered example |
^BA |
Kod 93 barkod: gušći od Koda 39, sa dva ugrađena kontrolna karaktera. | Barkodovi | Rendered example |
^BK |
Codabar barkod, koristi se u bibliotekama, bankama krvi i nekim kurirskim službama. | Barkodovi | Rendered example |
^BL |
LOGMARS баркод, Код 39 америчке војске са обавезном контрольном цифром. | Barkodovi | Rendered example |
^B1 |
Kod 11 barkod, numerički, koristi se na telekomunikacionoj opremi. | Barkodovi | Rendered example |
^BM |
MSI (Modifikovani Plessey) barcode, numerički, korišćen na etiketama za police. | Barkodovi | Rendered example |
^BP |
Plessey barkod, numerički, sa CRC kontrolnom cifrom. | Barkodovi | Rendered example |
^BS |
2- ili 5-cifreni dodatak se štampa pored UPC ili EAN koda. | Barkodovi | Rendered example |
^BZ |
Američki poštanski bar kodovi: POSTNET, PLANET i Inteligentna pošta. | Barkodovi | Rendered example |
^B5 |
USPS PLANET bar kod. | Barkodovi | Rendered example |
^BR |
GS1 DataBar (раније RSS): компактни GTIN баркодови за производе и купоне. | Barkodovi | 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, manji PDF417 za male etikete. | Barkodovi | Rendered example |
^GB |
Crtanje okvira ili linije: širina, visina, debljina ivice, boja i zaobljenje. | Grafika | Rendered example |
^GC |
Crtanje kruga: prečnik, debljina ivice i boja. | Grafika | Rendered example |
^GE |
Crtanje elipse. | Grafika | Rendered example |
^GD |
Crtanje dijagonalne linije. | Grafika | Rendered example |
^GF |
Ugrađuje bitmap sliku u oznaku (ASCII hex, binarna ili Z64). | Grafika | Rendered example |
^GS |
Štampajte registrovani, autorski ili neki drugi simbol. | Grafika | Rendered example |
^DF |
Skladišti format oznake na štampaču pod imenom. | Skladišteni formati i slike | Rendered example |
^XF |
Povlači pohranjeni format da popuni svoja ^FN polja. | Skladišteni formati i slike | Rendered example |
~DG |
Skladišti sliku na štampaču pod imenom. | Skladišteni formati i slike | Stores or recalls data; no image of its own |
^XG |
Štampajte sliku pohranjenu sa ~DG. | Skladišteni formati i slike | Stores or recalls data; no image of its own |
^IM |
Štampajte pohranjenu sliku na trenutnoj poziciji polja. | Skladišteni formati i slike | 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.
Prelazak sa 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.