Перейти к контенту

ZPL compatibility of the OpenZPL engine

The OpenZPL engine draws the 51 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-20 with openzpl-api 689632b 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 116 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Что это делаетCategoryEvidence
^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
^CW Назначает однобуквенное имя файлу шрифта. Текст и шрифты Stores or recalls data; no image of its own
^BY Устанавливает ширину модуля, соотношение широкого к узкому и высоту для следующих штрих-кодов. Штрихкоды Rendered example
^BC Штрихкод Код 128, самый распространенный на транспортных этикетках. Штрихкоды Rendered example
^B3 Штрихкод Код 39. Штрихкоды Rendered example
^B2 Штрих-код Interleaved 2 of 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 Сложный 2D штрих-код PDF417. Штрихкоды Rendered example
^BO Азтекский 2D штрихкод. Штрихкоды Rendered example
^BD MaxiCode, используемый UPS. Штрихкоды 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.

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
^TBText blockText is drawn on one line; the block doesn't wrap. Use ^FB instead.
^B0Aztec (alias)No symbol drawn. ^BO, the other Aztec command, is drawn.
^B1Code 11No bars; the data is printed as text.
^B4Code 49No bars; the data is printed as text.
^B5Planet CodeNo bars; the data is printed as text.
^BACode 93No bars; the data is printed as text.
^BBCODABLOCKNo symbol; the data is printed as text.
^BFMicroPDF417No symbol; the data is printed as text.
^BKANSI CodabarNo bars; the data is printed as text.
^BLLOGMARSNo bars; the data is printed as text.
^BMMSINo bars; the data is printed as text.
^BPPlesseyNo bars; the data is printed as text.
^BRGS1 DataBarNo symbol; the data is printed as text.
^BSUPC/EAN extensionsNo bars; the data is printed as text.
^BTTLC39No symbol; the data is printed as text.
^BZPOSTALNo bars; the data is printed as text.

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.

Moving from 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.

Обратная связь