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 | Mitä se tekee | Category | Evidence |
|---|---|---|---|
^XA |
Avaa etiketin. Kaikki ^XZ:iin asti on yksi etiketti. | Tarran muoto | Rendered example |
^XZ |
Sulkee ^XA:lla avatun tarran ja tulostaa sen. | Tarran muoto | Rendered example |
^PW |
Asettuu etiketin leveys pisteinä. | Tarran muoto | Rendered example |
^LL |
Asettuu etiketin pituus pisteinä. | Tarran muoto | Rendered example |
^LH |
Siirtää alkuperän, josta jokaisen kenttäpaikan mittaus tehdään. | Tarran muoto | Rendered example |
^LS |
Siirtää jokaisen kentän vasemmalle annetun määrästä pisteitä. | Tarran muoto | Rendered example |
^LT |
Siirtää koko etiketin ylös tai alas annetun pistemäärän mukaan. | Tarran muoto | Rendered example |
^PO |
Tulostaa tunnisteen normaalisti (N) tai ylösalaisin (I). | Tarran muoto | Rendered example |
^PM |
Peilaa koko etiketti vaakasuunnassa, kun se on asetettu Y:ksi. | Tarran muoto | Rendered example |
^PQ |
Asettuu kuinka monta etikettiä tulostetaan; jokainen lasketaan etiketiksi esikatselussa. | Tarran muoto | Rendered example |
^MU |
Muuttaa mittayksikön pisteiksi, tuumiksi tai millimetreiksi. | Tarran muoto | Rendered example |
^CI |
Valitsee merkistön. ^CI28 on UTF-8. | Tarran muoto | Rendered example |
^FO |
Asettuu kentän sijainti: x, y koordinaatit pisteinä vasemmasta yläkulmasta. | Kentät ja sijainti | Rendered example |
^FT |
Sijoittaa kentän sen peruslinjalle sen sijaan, että se olisi vasemman yläkulman kohdalla. | Kentät ja sijainti | Rendered example |
^FD |
Nykyisen kentän teksti tai viivakooditiedot. | Kentät ja sijainti | Rendered example |
^FS |
Päättää nykyisen kentän. | Kentät ja sijainti | Rendered example |
^FB |
Kääri teksti lohkoon, jossa on leveys, rivimäärä ja kohdistus. | Kentät ja sijainti | Rendered example |
^FR |
Tulostaa kentän valkoisena mustalla sen alla olevan päälle. | Kentät ja sijainti | Rendered example |
^FH |
Sallii ^FD:n sisältää heksadesimaalisia paikkoja, kuten _0D. | Kentät ja sijainti | Rendered example |
^FW |
Asettuu oletuskäännön seuraaville kentille. | Kentät ja sijainti | Rendered example |
^FN |
Nimeää muuttuvan kentän tallennetussa muodossa. | Kentät ja sijainti | Rendered example |
^FX |
Kommentti. Tulostin ohittaa kaiken seuraavaan komentoihin asti. | Kentät ja sijainti | Rendered example |
^SN |
Tulostaa numeron, joka kasvaa jokaisessa tunnisteessa. | Kentät ja sijainti | PartialRead but not drawn: the serial field is left out and copies aren't incremented (the same as Labelary's preview). Rendered example |
^A |
Valitsee fontin, käännön ja koon seuraavalle tekstikentälle. | Teksti ja fontit | Rendered example |
^A@ |
Valitsee fontin sen tiedostonimen mukaan tulostimessa. | Teksti ja fontit | Rendered example |
^CF |
Asettuu fontti ja koko käytettäväksi, kun kentässä ei ole ^A:ta. | Teksti ja fontit | Rendered example |
^TB |
Käärii tekstikentän annettuun leveyteen ja korkeuteen. | Teksti ja fontit | Rendered example |
^CW |
Määrää yhden kirjaimen nimen fonttitiedostolle. | Teksti ja fontit | Stores or recalls data; no image of its own |
^BY |
Asettuu moduulin leveys, leveä-kapea suhde ja korkeus seuraaville viivakoodille. | Viivakoodit | Rendered example |
^BC |
Code 128 viivakoodi, yleisin lähetysertteissä. | Viivakoodit | Rendered example |
^B3 |
Code 39 viivakoodi. | Viivakoodit | Rendered example |
^B2 |
Interleaved 2 of 5 viivakoodi, vain numeerinen. | Viivakoodit | Rendered example |
^BE |
EAN-13 vähittäisviivakoodi. | Viivakoodit | Rendered example |
^B8 |
EAN-8 vähittäisviivakoodi. | Viivakoodit | Rendered example |
^BU |
UPC-A vähittäiskaupan viivakoodi. | Viivakoodit | Rendered example |
^B9 |
UPC-E vähittäiskaupan viivakoodi. | Viivakoodit | Rendered example |
^BQ |
QR-koodi. Kentätiedot alkavat virheenkorjaustasolla ja syöttötilassa, kuten ^FDQA,text. | Viivakoodit | Rendered example |
^BX |
Data Matrix 2D -viivakoodi. | Viivakoodit | Rendered example |
^B7 |
PDF417 pinottu 2D-viivakoodi. | Viivakoodit | Rendered example |
^BO |
Aztec 2D -viivakoodi. | Viivakoodit | Rendered example |
^BD |
MaxiCode, jota käyttää UPS. | Viivakoodit | Rendered example |
^B0 |
Aztec 2D viivakoodi; sama komento kuin ^BO. | Viivakoodit | Rendered example |
^BA |
Koodi 93 viivakoodi: tiheämpi kuin Koodi 39, jossa on kaksi sisäänrakennettua tarkistusmerkkiä. | Viivakoodit | Rendered example |
^BK |
Codabar viivakoodi, jota käyttävät kirjastot, veripankit ja jotkut kuriirit. | Viivakoodit | Rendered example |
^BL |
LOGMARS-viivakoodi, Yhdysvaltojen armeijan Code 39, jolla on pakollinen tarkistustulo. | Viivakoodit | Rendered example |
^B1 |
Koodi 11 viivakoodi, numeroinen, jota käytetään telecom-laitteissa. | Viivakoodit | Rendered example |
^BM |
MSI (Muokattu Plessey) -viivakoodi, numeerinen, käytetään hylkytarroilla. | Viivakoodit | Rendered example |
^BP |
Plessey-viivakoodi, numeerinen, CRC-tarkistusnumero mukana. | Viivakoodit | Rendered example |
^BS |
2- tai 5-numeroista liitettä tulostetaan UPC- tai EAN-koodin viereen. | Viivakoodit | Rendered example |
^BZ |
Yhdysvaltain postin viivakoodit: POSTNET, PLANET ja Intelligent Mail. | Viivakoodit | Rendered example |
^B5 |
USPS PLANET viivakoodi. | Viivakoodit | Rendered example |
^BR |
GS1 DataBar (aiemmin RSS): kompaktit GTIN-viivakoodit ruoalle ja kupongeille. | Viivakoodit | 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, pienempi PDF417 pienille tarroille. | Viivakoodit | Rendered example |
^GB |
Piirtää laatikon tai viivan: leveys, korkeus, reunan paksuus, väri ja kulman pyöristys. | Grafiikka | Rendered example |
^GC |
Piirtää ympyrän: halkaisija, reunan paksuus ja väri. | Grafiikka | Rendered example |
^GE |
Piirtää ellipsin. | Grafiikka | Rendered example |
^GD |
Piirtää viisto viiva. | Grafiikka | Rendered example |
^GF |
Upottaa bittikuvan etikettiin (ASCII hex, binaari tai Z64). | Grafiikka | Rendered example |
^GS |
Tulostaa rekisteröidyn, tekijänoikeus- tai muun symbolin. | Grafiikka | Rendered example |
^DF |
Tallentaa etikettimuodon tulostimelle nimellä. | Tallennetut muodot ja kuvat | Rendered example |
^XF |
Kutsuu varastoidun muodon täyttämään sen ^FN-kentät. | Tallennetut muodot ja kuvat | Rendered example |
~DG |
Tallentaa kuvan tulostimelle nimellä. | Tallennetut muodot ja kuvat | Stores or recalls data; no image of its own |
^XG |
Tulostaa kuvan, joka on tallennettu ~DG:llä. | Tallennetut muodot ja kuvat | Stores or recalls data; no image of its own |
^IM |
Tulostaa varastoidun kuvan nykyisessä kenttäalkuperässä. | Tallennetut muodot ja kuvat | 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.
Siirtyminen Labelarysta
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.