Skip Policy
The ZPL commands the renderer ignores, why that is safe, and what the diagnostics show
Most of ZPL does not draw anything. It configures a printer: which sensor to use, how fast to feed, the network settings, what to write to an RFID tag. This API has no printer, no sensors, no radio and no network stack, so those commands have nothing to act on.
The renderer parses these commands and ignores them, as Labelary does. That is
the ignored status in the
command support matrix.
Ignored commands
113 of the 231 commands in the reference carry the ignored status.
The table groups them into the same categories as the command reference.
| Category | Ignored | Commands |
|---|---|---|
printer-config | 23 | ~JF ^JH ^JJ ~JN ~JO ~JR ^JT ^JU ~KB ^KL ^KN ^KP ^KV ^MA ^MI ^MP ^MW ~PM ~RO ^SC ^SQ ^SR ^SX |
network | 22 | ^KC ^NB ^NC ~NC ^ND ^NI ^NN ^NP ~NR ^NS ^NT ~NT ^NW ^WA ^WE ^WI ^WL ^WP ^WR ~WR ^WS ^WX |
rfid | 21 | ^HL ~HL ^HR ^RA ^RB ^RE ^RF ^RI ^RL ^RM ^RN ^RQ ^RR ^RS ^RT ~RV ^RW ^RZ ^WF ~WQ ^WT ^WV |
media | 15 | ^MF ^MM ^MN ^MT ~JL ^JS ~JS ^SS ^SI ~JC ^XS ~TA ^CN ^CP ^JW |
host-status | 13 | ~HB ~HD ^HH ~HI ~HM ~HQ ~HS ^HT ~HU ^HV ^HW ^HY ^HZ |
print-control | 9 | ^PR ^PN ~PL ^SP ^JZ ^ZZ ^MD ~SD ^SZ |
field-commands | 2 | ^FE ^FL |
format-control | 2 | ^XB ^HF |
graphics | 2 | ~DN ^HG |
label-geometry | 2 | ^LL ^ML |
memory | 1 | ^CO |
real-time-clock | 1 | ^KD |
The table shows 114 spellings for 113 commands: ^HL and ~HL
are one command with two prefixes.
The families behind the categories:
-
RFID and tag operations:
- tag reads, writes and locks
- tag passwords
- the AFI and DSFID bytes
- EPC structure
A tag payload is not label content.
^RF,^RQ,^RZ,^WTand^WFtake their data from the following^FD. The renderer consumes that data and draws nothing. See^RFfor the detail. -
Host status and inquiry.
~HS,~HQ,^HHand the rest ask a printer to send data over its serial or network connection. This API has no connection, and no status string reaches the page. -
Printer, job, device and network configuration:
- darkness and print speed
- tear-off position, cutter behavior and backfeed
- the head-cleaning schedule
- the display language
- wired and wireless network settings
- SNMP and SMTP
All of it is printer state that outlives one label.
-
Sensor calibration and media setup:
- media type and tracking
- the sensor profile
- ribbon tension
- label-length calibration
These commands tell a printer how to find the edge of a label. Your API request already gives the label size.
Why this is safe
- The command cannot change a rendered label. Nothing in the ZPL II specification gives these commands an effect on the page. They set device state, move media, or send a message to the host.
- Labelary ignores them too, and silently, so a label that renders
correctly there renders correctly here.
^XA^ZZ60,N^FO50,50^A0N,40,40^FDhi^FS^XZdraws the same pixels on both. - Where an ignored command could become visible, tests pin the behavior.
^LLsets label length on a printer, but the output page size here comes from the dimensions in your request, exactly as on Labelary. Regression snapshots pin that behavior.
An ignored command is not the same as an unimplemented one. The matrix
publishes a gap that changes pixels as planned or unsupported, never as
ignored.
What you see in diagnostics
An ignored command reports IGNORED_COMMAND at info severity. A
rendering-relevant gap reports UNSUPPORTED_COMMAND at warning.
The API's X-Warnings header excludes info-severity diagnostics, so ignored
commands never appear there. They do appear in the
online viewer and the desktop app, which show every
diagnostic with no limit.
This body carries eight device commands, an RFID write, and one gap in ^PM
(print mirror image, not yet implemented):
^XA^MMT^MTD^MD10^PR4^JUS^SS,,,,,,,,^HH^ZZ60,N^RFW,H^FD1234ABCD^FS^PMY^FO50,50^A0N,40,40^FDShip to^FS^XZWith X-Linter: On it reports exactly one warning, for ^PM:
X-Warnings: 65|3|^PM||command "^PM" is valid ZPL but is not supported by this renderer yet; it was skippedFind every ignored command
Diagnostics do not show every ignored command. Two places do:
- the command support matrix, which lists every command with its status and a note;
- each command's own reference page, reachable from that matrix, which says what the command does on a printer, and what the renderer does instead.
If a command on the ignored list changes your labels, send us the counter-example.
Related pages
- Linting and warnings
— how the
X-Warningsheader works and what reaches it - Diagnostics reference — every code, its severity, and where it appears
- Command support matrix — per-command status for all 231 commands