Siirry sisältöön

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

CommandMitä se tekeeCategoryEvidence
^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.

GroupCommands
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.

CommandSymbology or featureWhat the engine does today
^B4Code 49No bars; the data is printed as text (Labelary doesn't draw it either).
^BBCODABLOCKNo symbol; the data is printed as text (Labelary doesn't draw it either).
^BTTLC39No symbol; the data is printed as text (Labelary doesn't draw it either).

Known differences

  • A format with no fields, such as ^XA^XZ, returns 400 ERROR: No labels found in the ZPL instead of a blank image.
  • Fonts: Zebra's font 0 (CG Triumvirate Bold Condensed) can't be bundled, so ^A0 is drawn with Roboto Condensed Bold, with spacing calibrated per character. The bitmap fonts ^AA–^AH are drawn with DejaVu Sans Mono. Text widths can differ by a few dots from a given printer.
  • An RFID write (^RF followed by ^FD…^FS) draws its data as text; a printer encodes it in the tag and prints nothing.
  • EPL reverse text (the R flag of A) 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.

Palaute