Hopp til innhold

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

CommandHva det gjørCategoryEvidence
^XA Åpner en etikett. Alt opp til ^XZ er én etikett. Etikett format Rendered example
^XZ Lukker etiketten åpnet av ^XA og skriver den ut. Etikett format Rendered example
^PW Setter etikettens bredde i prikker. Etikett format Rendered example
^LL Setter etikettens lengde i prikker. Etikett format Rendered example
^LH Flytter opprinnelsen som hver feltposisjon måles fra. Etikett format Rendered example
^LS Flytter hvert felt til venstre med det gitte antallet prikker. Etikett format Rendered example
^LT Flytter hele etiketten opp eller ned med det angitte antallet prikkrader. Etikett format Rendered example
^PO Skriver ut etiketten normalt (N) eller opp ned (I). Etikett format Rendered example
^PM Speiler hele etiketten horisontalt når den er satt til Y. Etikett format Rendered example
^PQ Setter hvor mange etiketter som skal skrives ut; hver teller som en etikett i forhåndsvisningen. Etikett format Rendered example
^MU Endrer enheten for måling til punkter, tommer eller millimeter. Etikett format Rendered example
^CI Velger tegnsettet. ^CI28 er UTF-8. Etikett format Rendered example
^FO Setter feltposisjonen: x, y-koordinater i prikker fra øverste venstre hjørne. Felt og posisjon Rendered example
^FT Plasserer et felt etter baselinjen i stedet for det øverste venstre hjørnet. Felt og posisjon Rendered example
^FD Teksten eller strekkode-dataene til det nåværende feltet. Felt og posisjon Rendered example
^FS Avslutter det nåværende feltet. Felt og posisjon Rendered example
^FB Pakker teksten inn i et blokker med en bredde, linjetall og justering. Felt og posisjon Rendered example
^FR Skriver ut feltet hvitt på svart over det som er under det. Felt og posisjon Rendered example
^FH Lar ^FD inneholde hex-escapes som _0D. Felt og posisjon Rendered example
^FW Setter standard rotasjon for feltene som følger. Felt og posisjon Rendered example
^FN Navngir et variabelfelt i et lagret format. Felt og posisjon Rendered example
^FX En kommentar. skriveren ignorerer alt frem til neste kommando. Felt og posisjon Rendered example
^SN Skriver ut et nummer som øker for hver etikett. Felt og posisjon PartialRead but not drawn: the serial field is left out and copies aren't incremented (the same as Labelary's preview). Rendered example
^A Velger font, rotasjon og størrelse for neste tekstfelt. Tekst og skrifttyper Rendered example
^A@ Velger en font basert på filnavnet på skriveren. Tekst og skrifttyper Rendered example
^CF Setter font og størrelse som brukes når et felt ikke har ^A. Tekst og skrifttyper Rendered example
^TB Pakker et tekstfelt inn i en boks med gitt bredde og høyde. Tekst og skrifttyper Rendered example
^CW Tildeler et enbokstavers navn til en skrifttypefil. Tekst og skrifttyper Stores or recalls data; no image of its own
^BY Setter modulbredde, bred-til-smal forhold og høyde for strekkodene som følger. Strekkoder Rendered example
^BC Code 128 strekkode, den vanligste på fraktetiketter. Strekkoder Rendered example
^B3 Code 39 strekkode. Strekkoder Rendered example
^B2 Innimellom 2 av 5 strekkode, kun numerisk. Strekkoder Rendered example
^BE EAN-13 detaljhandelsstrekkode. Strekkoder Rendered example
^B8 EAN-8 detaljhandelsstrekkode. Strekkoder Rendered example
^BU UPC-A detaljhandelsstrekkode. Strekkoder Rendered example
^B9 UPC-E detaljhandelsstrekkode. Strekkoder Rendered example
^BQ QR-kode. Feltdataene starter med feilrettingsnivået og inngangsmodusen, som i ^FDQA,text. Strekkoder Rendered example
^BX Data Matrix 2D strekkode. Strekkoder Rendered example
^B7 PDF417 stablet 2D strekkode. Strekkoder Rendered example
^BO Aztec 2D-strekkode. Strekkoder Rendered example
^BD MaxiCode, brukt av UPS. Strekkoder Rendered example
^B0 Aztec 2D strekkode; den samme kommandoen som ^BO. Strekkoder Rendered example
^BA Kode 93 strekkode: tettere enn Kode 39, med to innebygde kontrolltegn. Strekkoder Rendered example
^BK Codabar strekkode, brukt av biblioteker, blodbanker og noen budfirmaer. Strekkoder Rendered example
^BL LOGMARS strekkode, USAs militærs kode 39 med et obligatorisk sjekksiffer. Strekkoder Rendered example
^B1 Kode 11 strekkode, numerisk, brukt på telekommunikasjonsutstyr. Strekkoder Rendered example
^BM MSI (Modifisert Plessey) strekkode, numerisk, brukt på hyllesedler. Strekkoder Rendered example
^BP Plessey strekkode, numerisk, med et CRC kontrollsiffer. Strekkoder Rendered example
^BS Det 2- eller 5-sifrede tillegget som skrives ut ved siden av en UPC- eller EAN-kode. Strekkoder Rendered example
^BZ Amerikanske poststreker: POSTNET, PLANET og Intelligent Mail. Strekkoder Rendered example
^B5 USPS PLANET strekkode. Strekkoder Rendered example
^BR GS1 DataBar (tidligere RSS): kompakte GTIN-strekkoder for frukt og grønnsaker og kuponger. Strekkoder 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, en mindre PDF417 for små etiketter. Strekkoder Rendered example
^GB Tegner en boks eller en linje: bredde, høyde, kanttykkelse, farge og avrunding. Grafikk Rendered example
^GC Tegner en sirkel: diameter, kanttykkelse og farge. Grafikk Rendered example
^GE Tegner en ellipse. Grafikk Rendered example
^GD Tegner en diagonal linje. Grafikk Rendered example
^GF Innebygger et bitmap-bilde i etiketten (ASCII hex, binær eller Z64). Grafikk Rendered example
^GS Skriver ut et registrert, opphavsrett eller annet symbol. Grafikk Rendered example
^DF Lagrer etikettformatet på skriveren under et navn. Lagrede formater og bilder Rendered example
^XF Henter et lagret format for å fylle sine ^FN-felt. Lagrede formater og bilder Rendered example
~DG Lagrer et bilde på skriveren under et navn. Lagrede formater og bilder Stores or recalls data; no image of its own
^XG Skriver ut et bilde lagret med ~DG. Lagrede formater og bilder Stores or recalls data; no image of its own
^IM Skriver ut et lagret bilde på den nåværende feltopprinnelsen. Lagrede formater og bilder 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.

Flytter fra 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.

Tilbakemelding