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 |
Штрихкод Code 128, най-често срещаният на етикети за доставка. | Баркодове | Rendered example |
^B3 |
Штрихкод Code 39. | Баркодове | Rendered example |
^B2 |
Штрихкод Преплетени 2 от 5, само числов. | Баркодове | Rendered example |
^BE |
Търговски баркод EAN-13. | Баркодове | Rendered example |
^B8 |
Търговски баркод EAN-8. | Баркодове | Rendered example |
^BU |
Търговски баркод UPC-A. | Баркодове | Rendered example |
^B9 |
Търговски баркод UPC-E. | Баркодове | Rendered example |
^BQ |
QR Code. Данните на полето започват с нивото на корекция на грешки и режим на въвеждане, както в ^FDQA,text. | Баркодове | Rendered example |
^BX |
2D баркод Data Matrix. | Баркодове | Rendered example |
^B7 |
PDF417 стоящ 2D баркод. | Баркодове | Rendered example |
^BO |
Азтек 2D баркод. | Баркодове | Rendered example |
^BD |
MaxiCode, използван от UPS. | Баркодове | Rendered example |
^B0 |
Азтек 2D баркод; същата команда като ^BO. | Баркодове | Rendered example |
^BA |
Код 93 баркод: по-гъст от Код 39, с два вградени контролни символа. | Баркодове | Rendered example |
^BK |
Кодабар баркод, използван от библиотеки, банки за кръв и някои куриери. | Баркодове | Rendered example |
^BL |
LOGMARS баркод, Код 39 на американските военни с задължителна контролна цифра. | Баркодове | Rendered example |
^B1 |
Код 11 баркод, числов, използван на телекомуникационно оборудване. | Баркодове | Rendered example |
^BM |
MSI (Модифициран Плесей) баркод, числов, използван за етикети на рафтове. | Баркодове | Rendered example |
^BP |
Плесей баркод, числов, с контролна цифра CRC. | Баркодове | Rendered example |
^BS |
Добавката от 2 или 5 цифри, отпечатана до UPC или EAN код. | Баркодове | Rendered example |
^BZ |
Пощенски баркодове в САЩ: POSTNET, PLANET и Интелигентна поща. | Баркодове | Rendered example |
^B5 |
Баркод 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 |
Вгражда растерно изображение в етикета (ASCII hex, бинарно или 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.