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 | Τι κάνει | Category | Evidence |
|---|---|---|---|
^XA |
Ανοίγει μια ετικέτα. Όλα μέχρι το ^XZ είναι μία ετικέτα. | Μορφή Ετικέτας | Rendered example |
^XZ |
Κλείνει την ετικέτα που άνοιξε το ^XA και την εκτυπώνει. | Μορφή Ετικέτας | Rendered example |
^PW |
Ορίζει το πλάτος της ετικέτας σε κουκίδες. | Μορφή Ετικέτας | Rendered example |
^LL |
Ορίζει το μήκος της ετικέτας σε κουκίδες. | Μορφή Ετικέτας | Rendered example |
^LH |
Μετακινεί την αρχή από την οποία μετριέται κάθε θέση πεδίου. | Μορφή Ετικέτας | Rendered example |
^LS |
Μετατοπίζει κάθε πεδίο αριστερά κατά τον δεδομένο αριθμό κουκκίδων. | Μορφή Ετικέτας | Rendered example |
^LT |
Μετακινεί ολόκληρη την ετικέτα προς τα επάνω ή προς τα κάτω κατά τον δοθέντα αριθμό γραμμών τελειών. | Μορφή Ετικέτας | Rendered example |
^PO |
Εκτυπώνει την ετικέτα κανονικά (N) ή ανάποδα (I). | Μορφή Ετικέτας | Rendered example |
^PM |
Αναστρέφει οριζόντια ολόκληρη την ετικέτα όταν οριστεί σε Y. | Μορφή Ετικέτας | Rendered example |
^PQ |
Ορίζει πόσες ετικέτες να εκτυπωθούν; κάθε μία μετράει ως μια ετικέτα στην προεπισκόπηση. | Μορφή Ετικέτας | Rendered example |
^MU |
Αλλάζει τη μονάδα μέτρησης σε κουκίδες, ίντσες ή χιλιοστά. | Μορφή Ετικέτας | Rendered example |
^CI |
Επιλέγει το σύνολο χαρακτήρων. ^CI28 είναι UTF-8. | Μορφή Ετικέτας | Rendered example |
^FO |
Ορίζει τη θέση του πεδίου: x, y συντεταγμένες σε κουκίδες από την επάνω αριστερή γωνία. | Πεδία και θέση | Rendered example |
^FT |
Θέτει ένα πεδίο βάσει της βάσης του αντί για την πάνω αριστερή γωνία του. | Πεδία και θέση | Rendered example |
^FD |
Τα δεδομένα κειμένου ή γραμμωτού κώδικα του τρέχοντος πεδίου. | Πεδία και θέση | Rendered example |
^FS |
Τερματίζει το τρέχον πεδίο. | Πεδία και θέση | Rendered example |
^FB |
Τυλίγει το κείμενο σε ένα μπλοκ με πλάτος, αριθμό γραμμών και ευθυγράμμιση. | Πεδία και θέση | Rendered example |
^FR |
Εκτυπώνει το πεδίο λευκό σε μαύρο πάνω από ό,τι είναι από κάτω του. | Πεδία και θέση | Rendered example |
^FH |
Επιτρέπει στο ^FD να περιέχει εξαγωγές δεκαεξαδικών όπως το _0D. | Πεδία και θέση | Rendered example |
^FW |
Ορίζει την προεπιλεγμένη περιστροφή για τα πεδία που ακολουθούν. | Πεδία και θέση | Rendered example |
^FN |
Ονομάζει ένα μεταβλητό πεδίο σε αποθηκευμένη μορφή. | Πεδία και θέση | Rendered example |
^FX |
Ένα σχόλιο. Ο εκτυπωτής αγνοεί τα πάντα μέχρι την επόμενη εντολή. | Πεδία και θέση | Rendered example |
^SN |
Εκτυπώνει έναν αριθμό που αυξάνεται σε κάθε ετικέτα. | Πεδία και θέση | PartialRead but not drawn: the serial field is left out and copies aren't incremented (the same as Labelary's preview). Rendered example |
^A |
Επιλέγει τη γραμματοσειρά, την περιστροφή και το μέγεθος για το επόμενο πεδίο κειμένου. | Κείμενο και γραμματοσειρές | Rendered example |
^A@ |
Επιλέγει μια γραμματοσειρά με βάση το όνομα του αρχείου στην εκτυπωτή. | Κείμενο και γραμματοσειρές | Rendered example |
^CF |
Ορίζει τη γραμματοσειρά και το μέγεθος που χρησιμοποιείται όταν ένα πεδίο δεν έχει ^A. | Κείμενο και γραμματοσειρές | Rendered example |
^TB |
Τυλίγει ένα πεδίο κειμένου μέσα σε ένα πλαίσιο καθορισμένου πλάτους και ύψους. | Κείμενο και γραμματοσειρές | Rendered example |
^CW |
Αναθέτει ένα όνομα ενός χαρακτήρα σε ένα αρχείο γραμματοσειράς. | Κείμενο και γραμματοσειρές | Stores or recalls data; no image of its own |
^BY |
Ορίζει το πλάτος του στοιχείου, την αναλογία ευρέος-στενού και το ύψος για τους γραμμωτούς κώδικες που ακολουθούν. | Κωδικοί γραμμών | Rendered example |
^BC |
Κωδικός 128 barcode, ο πιο συνηθισμένος στις ετικέτες αποστολής. | Κωδικοί γραμμών | Rendered example |
^B3 |
Κωδικός 39 barcode. | Κωδικοί γραμμών | Rendered example |
^B2 |
Barcode Interleaved 2 of 5, μόνο αριθμητικά. | Κωδικοί γραμμών | Rendered example |
^BE |
Barcode λιανικής EAN-13. | Κωδικοί γραμμών | Rendered example |
^B8 |
Barcode λιανικής EAN-8. | Κωδικοί γραμμών | Rendered example |
^BU |
Γραμμωτός κώδικας λιανικής UPC-A. | Κωδικοί γραμμών | Rendered example |
^B9 |
Γραμμωτός κώδικας λιανικής UPC-E. | Κωδικοί γραμμών | Rendered example |
^BQ |
QR Code. Τα δεδομένα του πεδίου ξεκινούν με το επίπεδο διόρθωσης σφαλμάτων και τη λειτουργία εισόδου, όπως στο ^FDQA,text. | Κωδικοί γραμμών | Rendered example |
^BX |
Barcode 2D Data Matrix. | Κωδικοί γραμμών | Rendered example |
^B7 |
PDF417, στοιβαγμένος 2D γραμμωτός κωδικός. | Κωδικοί γραμμών | Rendered example |
^BO |
Δημοτικός κωδικός 2D Αζτέκ. | Κωδικοί γραμμών | Rendered example |
^BD |
MaxiCode, που χρησιμοποιείται από την UPS. | Κωδικοί γραμμών | Rendered example |
^B0 |
Διαγώνιος 2D barcode Aztec; η ίδια εντολή με την ^BO. | Κωδικοί γραμμών | Rendered example |
^BA |
Barcode Κωδικός 93: πυκνότερος από τον Κωδικό 39, με δύο ενσωματωμένους χαρακτήρες ελέγχου. | Κωδικοί γραμμών | Rendered example |
^BK |
Barcode Codabar, χρησιμοποιούμενος από βιβλιοθήκες, τράπεζες αίματος και κάποιους μεταφορείς. | Κωδικοί γραμμών | Rendered example |
^BL |
Barcode LOGMARS, ο κωδικός 39 της αμερικανικής στρατιωτικής υπηρεσίας με υποχρεωτικό ψηφίο ελέγχου. | Κωδικοί γραμμών | Rendered example |
^B1 |
Barcode Κωδικός 11, αριθμητικός, που χρησιμοποιείται σε τηλεπικοινωνιακό εξοπλισμό. | Κωδικοί γραμμών | Rendered example |
^BM |
Barcode MSI (Modified Plessey), αριθμητικός, που χρησιμοποιείται σε ετικέτες ραφιού. | Κωδικοί γραμμών | Rendered example |
^BP |
Barcode Plessey, αριθμητικός, με ψηφίο ελέγχου CRC. | Κωδικοί γραμμών | Rendered example |
^BS |
Η προσθήκη 2 ή 5 ψηφίων που εκτυπώνεται δίπλα σε έναν κωδικό UPC ή EAN. | Κωδικοί γραμμών | Rendered example |
^BZ |
Γραμμωτοί κωδικοί ταχυδρομείου ΗΠΑ: POSTNET, PLANET και Intelligent Mail. | Κωδικοί γραμμών | Rendered example |
^B5 |
Barcode USPS PLANET. | Κωδικοί γραμμών | Rendered example |
^BR |
GS1 DataBar (πρώην RSS): συμπαγή γραμμωτά GTIN για προϊόντα και κουπόνια. | Κωδικοί γραμμών | 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, μια μικρότερη έκδοση του PDF417 για μικρές ετικέτες. | Κωδικοί γραμμών | Rendered example |
^GB |
Σχεδιάζει ένα κουτί ή μια γραμμή: πλάτος, ύψος, πάχος περιγράμματος, χρώμα και στρογγυλοποίηση. | Γραφικά | Rendered example |
^GC |
Σχεδιάζει έναν κύκλο: διάμετρος, πάχος περιγράμματος και χρώμα. | Γραφικά | Rendered example |
^GE |
Σχεδιάζει μια έλλειψη. | Γραφικά | Rendered example |
^GD |
Σχεδιάζει μια διαγώνιο γραμμή. | Γραφικά | Rendered example |
^GF |
Ενσωματώνει μια εικόνα bitmap στην ετικέτα (ASCII hex, binary ή Z64). | Γραφικά | Rendered example |
^GS |
Εκτυπώνει ένα καταχωρημένο, πνευματικών δικαιωμάτων ή άλλο σύμβολο. | Γραφικά | Rendered example |
^DF |
Αποθηκεύει τη μορφή της ετικέτας στην εκτυπωτή κάτω από ένα όνομα. | Αποθηκευμένες μορφές και εικόνες | Rendered example |
^XF |
Αν καλεί μια αποθηκευμένη μορφή για να συμπληρώσει τα πεδία ^FN της. | Αποθηκευμένες μορφές και εικόνες | Rendered example |
~DG |
Αποθηκεύει μια εικόνα στην εκτυπωτή κάτω από ένα όνομα. | Αποθηκευμένες μορφές και εικόνες | Stores or recalls data; no image of its own |
^XG |
Εκτυπώνει μια εικόνα που είναι αποθηκευμένη με ~DG. | Αποθηκευμένες μορφές και εικόνες | Stores or recalls data; no image of its own |
^IM |
Εκτυπώνει μια αποθηκευμένη εικόνα στην τρέχουσα θέση πεδίου. | Αποθηκευμένες μορφές και εικόνες | 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.
Μετακίνηση από τον 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.