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 | Kaj to počne | Category | Evidence |
|---|---|---|---|
^XA |
Odpre etiketo. Vse do ^XZ je ena etiketa. | Format etikete | Rendered example |
^XZ |
Zapre etiketo, odprto z ^XA, in jo natisne. | Format etikete | Rendered example |
^PW |
Nastavi širino nalepke v točkah. | Format etikete | Rendered example |
^LL |
Nastavi dolžino nalepke v točkah. | Format etikete | Rendered example |
^LH |
Premakne izhodišče, od katerega se meri vsaka pozicija polja. | Format etikete | Rendered example |
^LS |
Premakne vsako polje levo za dano število točk. | Format etikete | Rendered example |
^LT |
Premakne celotno nalepko navzgor ali navzdol za dano število vrstic pik. | Format etikete | Rendered example |
^PO |
Tiska nalepko običajno (N) ali na glavo (I). | Format etikete | Rendered example |
^PM |
Zrcali celotno nalepko vodoravno, ko je nastavljeno na Y. | Format etikete | Rendered example |
^PQ |
Nastavi, koliko nalepk naj se natisne; vsaka šteje kot nalepka v predogledu. | Format etikete | Rendered example |
^MU |
Spremeni enoto merjenja v pike, palce ali milimetre. | Format etikete | Rendered example |
^CI |
Izbere nabor znakov. ^CI28 je UTF-8. | Format etikete | Rendered example |
^FO |
Nastavi položaj polja: x, y koordinate v točkah od zgornjega levega kota. | Polja in položaj | Rendered example |
^FT |
Položi polje po njegovi osnovni črti namesto po njegovem zgornjem levem kotu. | Polja in položaj | Rendered example |
^FD |
Besedilo ali podatki črtne kode trenutnega polja. | Polja in položaj | Rendered example |
^FS |
Zaključi trenutno polje. | Polja in položaj | Rendered example |
^FB |
Ovozi besedilo v blok z dolžino, številom vrstic in poravnavo. | Polja in položaj | Rendered example |
^FR |
Tiska polje belo na črnem čez karkoli je pod njim. | Polja in položaj | Rendered example |
^FH |
Dovoli, da ^FD vsebuje heksadecimalne pobeglice, kot je _0D. | Polja in položaj | Rendered example |
^FW |
Nastavi privzeto zvrtnitev za naslednja polja. | Polja in položaj | Rendered example |
^FN |
Določa ime spremenljivega polja v shranjenem formatu. | Polja in položaj | Rendered example |
^FX |
Komentar. Tiskalnik ignorira vse do naslednjega ukaza. | Polja in položaj | Rendered example |
^SN |
Tiska številko, ki se povečuje z vsako nalepko. | Polja in položaj | PartialRead but not drawn: the serial field is left out and copies aren't incremented (the same as Labelary's preview). Rendered example |
^A |
Izbere pisavo, zvrtnitev in velikost za naslednje besedilno polje. | Besedilo in pisave | Rendered example |
^A@ |
Izbere pisavo po imenu datoteke na tiskalniku. | Besedilo in pisave | Rendered example |
^CF |
Nastavi pisavo in velikost, ki se uporabljata, ko polje nima ^A. | Besedilo in pisave | Rendered example |
^TB |
Ovije besedilno polje v škatlo določene širine in višine. | Besedilo in pisave | Rendered example |
^CW |
Dodeli enoleteno ime datoteki pisave. | Besedilo in pisave | Stores or recalls data; no image of its own |
^BY |
Nastavi širino module, razmerje široko-do-ožjega in višino za črtne kode, ki sledijo. | Črtne kode | Rendered example |
^BC |
Barkoda 128, najpogostejša na poštnih etiketah. | Črtne kode | Rendered example |
^B3 |
Barkoda 39. | Črtne kode | Rendered example |
^B2 |
Prepleten 2 od 5 kodeks, samo številčni. | Črtne kode | Rendered example |
^BE |
Črtna koda EAN-13 za maloprodajo. | Črtne kode | Rendered example |
^B8 |
Črtna koda EAN-8 za maloprodajo. | Črtne kode | Rendered example |
^BU |
UPC-A maloprodajna črtna koda. | Črtne kode | Rendered example |
^B9 |
UPC-E maloprodajna črtna koda. | Črtne kode | Rendered example |
^BQ |
QR Code. Podatki v polju se začnejo z nivojem popravila napak in načinom vnosa, kot je v ^FDQA,text. | Črtne kode | Rendered example |
^BX |
2D črtna koda Data Matrix. | Črtne kode | Rendered example |
^B7 |
PDF417 zložena 2D črtna koda. | Črtne kode | Rendered example |
^BO |
Aztec 2D črtna koda. | Črtne kode | Rendered example |
^BD |
MaxiCode, ki ga uporablja UPS. | Črtne kode | Rendered example |
^B0 |
Aztec 2D črtna koda; isti ukaz kot ^BO. | Črtne kode | Rendered example |
^BA |
Code 93 črtna koda: gostejša od Code 39, z dvema vgrajenima kontrolnima znakovoma. | Črtne kode | Rendered example |
^BK |
Codabar črtna koda, ki jo uporabljajo knjižnice, banke krvi in nekateri kurirji. | Črtne kode | Rendered example |
^BL |
LOGMARS črtna koda, ameriške vojske, Koda 39 z obveznim kontrolnim številom. | Črtne kode | Rendered example |
^B1 |
Code 11 črtna koda, numerična, uporabljena na telekomunikacijski opremi. | Črtne kode | Rendered example |
^BM |
MSI (Modified Plessey) črtna koda, numerična, uporabljena na etiketah za police. | Črtne kode | Rendered example |
^BP |
Plessey črtna koda, numerična, s kontrolno številko CRC. | Črtne kode | Rendered example |
^BS |
2- ali 5-številčni dodatek natisnjen ob UPC ali EAN kodi. | Črtne kode | Rendered example |
^BZ |
Ameriški poštni žigi: POSTNET, PLANET in Inteligentna pošta. | Črtne kode | Rendered example |
^B5 |
USPS PLANET črtna koda. | Črtne kode | Rendered example |
^BR |
GS1 DataBar (prej RSS): kompaktne GTIN črtne kode za pridelke in kuponi. | Črtne kode | 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, manjša različica PDF417 za majhne etikete. | Črtne kode | Rendered example |
^GB |
Nariše okvir ali črto: širina, višina, debelina roba, barva in zaokrožitev. | Grafika | Rendered example |
^GC |
Nariše krog: premer, debelina roba in barva. | Grafika | Rendered example |
^GE |
Nariše elipso. | Grafika | Rendered example |
^GD |
Nariše diagonalno črto. | Grafika | Rendered example |
^GF |
Vključi rastrsko sliko v nalepko (ASCII hex, binarna ali Z64). | Grafika | Rendered example |
^GS |
Tiska registrirani, avtorske pravice ali drug simbol. | Grafika | Rendered example |
^DF |
Shrani format nalepke na tiskalniku pod imenom. | Shranjeni formati in slike | Rendered example |
^XF |
Ponovno pokliče shranjen format za izpolnitev njegovih ^FN polj. | Shranjeni formati in slike | Rendered example |
~DG |
Shrani sliko na tiskalniku pod imenom. | Shranjeni formati in slike | Stores or recalls data; no image of its own |
^XG |
Tiska sliko shranjeno z ~DG. | Shranjeni formati in slike | Stores or recalls data; no image of its own |
^IM |
Tiska shranjeno sliko na trenutni izhodiščni točki. | Shranjeni formati in 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.
Premik 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.