ZPL Command Coverage

September 15, 2026 ยท View on GitHub

Every command of the ZPL II Programming Guide and what it takes to use it in ZPLab.

ColumnMeaning
WebThe browser build reads the command on import and writes it back on export: as itself, folded into object properties (^FW, ^LR, ^BY, ^MU, ^LH, ^LT, ^CI), or into the Setup Script (printer setup commands). Structural commands (^XA, ^FS, prefix changers) carry no user state
DesktopThe same in the desktop app, which also talks to a connected printer; commands that need one (host queries, calibration, downloads to printer storage, RFID hardware) can only ever get a mark here
LintThe source editor validates the command's parameters, not just its balance
MarkMeaning
[x]yes
[~]planned
[ ]no; a row with no mark at all is out of scope, and its name says why

Tracked scope: the ZPL II Programming Guide. Commands the current guide dropped but printers still accept (^RN, ~RV, ^WT) stay in the table; ^RA, ^RE, ^RQ, ^RZ, ^WF, ^WV and ^WI (duplicated by ^ND) sit outside it, and passthrough preserves them. Convention: one row per command; prefix twins of the SAME command (e.g. ^HL / ~HL) share a row unless their support diverges (^PH/~PH, ^PP/~PP); distinct commands that merely share letters (e.g. ^JS/~JS, ^PM/~PM, ^NC/~NC) never share. The row total is pinned in packages/core/src/catalog/catalog.test.ts.

Layout & flow

CommandNameWebDesktopLint
^XAstart label[x][x][ ]
^XZend label[x][x][ ]
^PWprint width[x][x][ ]
^LLlabel length[x][x][ ]
^LHlabel home origin[x][x][ ]
^LSlabel shift[x][x][ ]
^LTlabel top offset[x][x][ ]
^MUunits of measure[x][x][ ]
^MMprint mode[x][x][ ]
^MTmedia type[x][x][ ]
^PQprint quantity[x][x][ ]
^LRlabel reverse[x][x][ ]
^POprint orientation[x][x][ ]
^PMprint mirror[x][x][ ]
^PRprint rate[x][x][ ]

Fields

CommandNameWebDesktopLint
^FOfield origin[x][x][ ]
^FTfield top[x][x][ ]
^FDfield data[x][x][ ]
^FSfield separator[x][x][x]
^FHfield hex indicator[x][x][ ]
^FRfield reverse[x][x][ ]
^FXfield comment[x][x][ ]
^FWdefault field rotation[x][x][ ]
^FBmulti line text block[x][x][ ]
^TBtext block[x][x][ ]
^FNvariable placeholder[x][x][ ]
^FVvariable data[x][x][ ]
^FEfield number embed character[x][x][ ]
^FCfield clock[x][x][ ]
^BYbarcode field default[x][x][ ]
^FMPDF417 structured-append origins, ignored elsewhere[ ][ ][ ]
^FPvertical / reverse field layout[x][x][ ]

Text & fonts

CommandNameWebDesktopLint
^A0scalable font 0[x][x][ ]
^Afonts A to Z and 0 to 9[x][x][ ]
^A@TrueType reference[x][x][ ]
^CFchange default font[x][x][ ]
^CIinternational encoding[x][x][ ]
^PAadvanced text properties[x][x][ ]
^CWfont alias[x][x][ ]
^COfont cache size[x][x][ ]
^FLfont linking[x][x][ ]
^LFlist font links[ ][~][ ]
~DBdownload bitmap font[ ][~][ ]
~DSdownload scalable font[ ][~][ ]
~DTdownload TrueType font[ ][~][ ]
~DUdownload unbounded TrueType[ ][~][ ]
~DEdownload encoding[ ][~][ ]

Barcodes

CommandNameWebDesktopLint
^BCCode 128[x][x][ ]
^B3Code 39[x][x][ ]
^BACode 93[x][x][ ]
^B1Code 11[x][x][ ]
^B2Interleaved 2 of 5[x][x][ ]
^BIIndustrial 2 of 5[x][x][ ]
^BJStandard 2 of 5[x][x][ ]
^BKANSI Codabar[x][x][ ]
^BLLOGMARS[x][x][ ]
^BMMSI[x][x][ ]
^BPPlessey[x][x][ ]
^BEEAN-13[x][x][ ]
^B8EAN-8[x][x][ ]
^BUUPC-A[x][x][ ]
^B9UPC-E[x][x][ ]
^BRGS1 DataBar[x][x][ ]
^B5Planet Code[x][x][ ]
^BZPOSTNET / Planet Code / Intelligent Mail[x][x][ ]
^BSUPC/EAN 2 or 5 digit add-on[x][x][ ]
^B4Code 49[x][x][ ]
^BQQR Code[x][x][ ]
^BXData Matrix[x][x][ ]
^B7PDF417[x][x][ ]
^BFMicroPDF417[x][x][ ]
^B0 / ^BOAztec[x][x][ ]
^BBCODABLOCK F[x][x][ ]
^BDUPS MaxiCode[x][x][ ]
^BTTLC39[x][x][ ]
^CVcode validation[x][x][ ]

Graphics

CommandNameWebDesktopLint
^GBgraphic box[x][x][ ]
^GDdiagonal line[x][x][ ]
^GEellipse[x][x][ ]
^GCcircle[x][x][ ]
^GFmonochrome bitmap[x][x][ ]
^GSgraphic symbol[x][x][ ]
^ILimage load[x][x][ ]
^IMimage move[x][x][ ]
^IDdelete stored graphics, fonts and formats[ ][~][ ]
^ISimage save[ ][x][ ]
~DGdownload graphic[x][x][ ]
~DNabort download[ ][~][ ]
~DYdownload font / graphic[x][x][ ]
~EGerase download graphics[ ][~][ ]

Serialisation

CommandNameWebDesktopLint
^SNserial counter with its own start value[x][x][ ]
^SFserial mask over ^FD data[x][x][ ]

Templates & variables

CommandNameWebDesktopLint
^DFstore template[~][~][ ]
^XFrecall template[~][~][ ]
^XGrecall graphic[x][x][ ]

Media & feed

CommandNameWebDesktopLint
^MNmedia tracking[x][x][ ]
^MLmaximum label length[x][x][ ]
^MFmedia feed[x][x][ ]
^XBsuppress backfeed[x][x][ ]
^MAmaintenance alert[x][x][ ]
^MCmap clear[x][x][ ]
^MImaintenance information message[x][x][ ]
^MPmode protection[x][x][ ]
^MWprinthead cold warning[x][x][ ]
CommandNameWebDesktopLint
^MDmedia darkness[x][x][ ]
~SDset darkness[x][x][ ]
^JZreprint after error[x][x][ ]
^JTprinthead test interval[x][x][ ]
~TAtear off adjust[x][x][ ]
^JHearly warning settings[x][x][ ]
~JSchange backfeed sequence[x][x][ ]
^PFslew given number of dot rows[x][x][ ]
^PHslew home[x][x][ ]
~PHslew home, immediate[ ][~][ ]
^PPprogrammable pause[x][x][ ]
~PPpause, immediate[ ][~][ ]
~PRapplicator reprint[ ][~][ ]
~PSprint start[ ][~][ ]
^CNcut now, KR403 kiosk only[ ][ ][ ]
~PLpresent length addition, KR403 kiosk only[ ][ ][ ]
^PNpresenter cycle, KR403 kiosk only[ ][ ][ ]
^JWset ribbon tension, PAX only[ ][ ][ ]

Clock & time

CommandNameWebDesktopLint
^STset date and time[x][x][ ]
^KDdate and time format[x][x][ ]
^SOreal-time clock offset[x][x][ ]
^SLclock mode and language[x][x][ ]

Encoding & language

CommandNameWebDesktopLint
^KLdefine language[x][x][ ]
^SEencoding table[x][x][ ]
^SZset ZPL mode[x][x][ ]

Identity & access

CommandNameWebDesktopLint
^KNprinter name and description[x][x][ ]
^KPset password[x][x][ ]

Configuration & persistence

CommandNameWebDesktopLint
^JUconfiguration update[x][x][ ]
^CC / ~CCchange caret[x][x][ ]
^CD / ~CDchange delimiter[x][x][ ]
^CT / ~CTchange tilde[x][x][ ]
^CMchange memory letter assignment[ ][~][ ]

Hardware control & calibration

Printer-side control, calibration and device actions; most need a connection or feedback from the device.

CommandNameWebDesktopLint
~JAcancel all[ ][~][ ]
^JBinitialize flash memory[ ][~][ ]
~JBreset optional memory[ ][~][ ]
~JCmedia sensor calibration[ ][~][ ]
~JDenable communications diagnostics[ ][~][ ]
~JEdisable communications diagnostics[ ][~][ ]
~JFset battery condition, PA400 and PT400 only[ ][ ][ ]
~JGgraphing sensor calibration[ ][~][ ]
^JI / ~JIstart ZBI[ ][~][ ]
^JJset auxiliary port[ ][~][ ]
^JSsensor select[ ][~][ ]
~JLset label length[ ][~][ ]
^JMdots per millimeter[x][x][ ]
~JNprinthead test fatal[ ][~][ ]
~JOprinthead test non-fatal[ ][~][ ]
~JPpause and cancel format[ ][~][ ]
~JQterminate ZBI[ ][~][ ]
~JRpower on reset[ ][~][ ]
~JXcancel partial format[ ][~][ ]
~ROreset advanced counter[ ][~][ ]
^SCset serial communications[ ][~][ ]
^SIset sensor intensity[ ][~][ ]
^SPstart print at dot row, throughput hint only[ ][ ][ ]
^SQhalt ZebraNet alert[ ][~][ ]
^SRset printhead resistance[ ][~][ ]
^SSset media sensors[ ][~][ ]
^SXset ZebraNet alert[ ][~][ ]
^TOtransfer object[ ][~][ ]
~WCprint configuration label[ ][~][ ]
^WDprint directory label[ ][~][ ]
~WQwrite query[ ][~][ ]
^KVcutter and presenter settings, KR403 only[ ][ ][ ]
^XSset dynamic media calibration[ ][~][ ]
~PMdecommissioning mode[ ][~][ ]
^ZZprinter sleep, PA400 and PT400 only[ ][ ][ ]
^CPeject or retract a presented page, KR403 only[ ][ ][ ]
~KBkill battery[ ][~][ ]

Host communication

CommandNameWebDesktopLint
~HBbattery status, mobile printers only[ ][ ][ ]
~HDprinthead diagnostic[ ][~][ ]
^HFhost format[ ][~][ ]
^HGhost graphic[ ][~][ ]
^HHconfiguration label return[ ][~][ ]
~HIhost identification[ ][~][ ]
~HMhost RAM status[ ][~][ ]
~HQhost query[ ][~][ ]
~HShost status return[ ][~][ ]
^HThost linked fonts list[ ][~][ ]
~HUZebraNet alert configuration[ ][~][ ]
^HVhost verification[ ][~][ ]
^HWhost directory[ ][~][ ]
^HYupload graphics[ ][x][ ]
^HZdisplay description information[ ][~][ ]

RFID

Needs an R-series printer, which no test device covers; modelled rows are spec-only. Stage A: ^RS/^RB/^RW settings. Stage B: ^RF write element plus its password-coupled ^RL. Read-back stays native. ^RM/^RR folded into ^RS, ^RN/~RV dropped from the current guide; all four passthrough only.

CommandNameWebDesktopLint
^RFread / write RFID[~][~][ ]
^RIget tag ID[ ][~][ ]
^RMenable motion, pre-Link-OS, folded into ^RS[ ][ ][ ]
^RNdetect multiple tags, pre-Link-OS, absent from guide[ ][ ][ ]
^RRRFID retries, pre-Link-OS, folded into ^RS[ ][ ][ ]
^RBdefine EPC data structure[x][x][ ]
^RSRFID setup[x][x][ ]
^RTread tag[ ][~][ ]
^WTlegacy RFID write, superseded by ^RF[ ][ ][ ]
^RUread unique chip serialisation[ ][~][ ]
~RVreport encoding result, pre-Link-OS, absent from guide[ ][ ][ ]
^RWset read and write power[x][x][ ]
^RLlock / permalock tag memory[~][~][ ]
^HRcalibrate RFID tag position[ ][~][ ]
^HL / ~HLRFID data log[ ][~][ ]

Network

CommandNameWebDesktopLint
^NBcheck for wired print server at boot[ ][~][ ]
^NCselect wired / wireless primary device[ ][~][ ]
~NCnetwork connect, legacy RS-485 only[ ][ ][ ]
^NInetwork ID, legacy RS-485 only[ ][ ][ ]
^NNset SNMP[ ][~][ ]
^NPboot settings source: printer vs print server[ ][~][ ]
~NRset all transparent, legacy RS-485 only[ ][ ][ ]
^NTset SMTP[ ][~][ ]
~NTset connected printer transparent, legacy RS-485 only[ ][ ][ ]
^NWweb auth timeout[ ][~][ ]
^KCset client identifier[ ][~][ ]
^NDchange network settings[ ][~][ ]
^NSchange wired network settings[ ][~][ ]
^WAset antenna parameters[ ][~][ ]
^WEset WEP mode, obsolete, use ^WX[ ][ ][ ]
^WLset LEAP, obsolete, use ^WX[ ][ ][ ]
^WPset wireless password[ ][~][ ]
^WRset transmit rate[ ][~][ ]
^WSset wireless radio card values[ ][~][ ]
^WXconfigure wireless security[ ][~][ ]
~WLprint network configuration label[ ][~][ ]
~WRreset wireless radio card[ ][~][ ]