~JD - Enable Communications Diagnostics
Switches the printer into diagnostic mode, where received bytes are printed as a hex dump instead of interpreted.
~JD puts the printer into diagnostic mode, where it prints what it receives
instead of interpreting it. The printer lays out every byte on the label as its
character and its hexadecimal value, with any communication errors. A format that
renders the wrong label, or no label, reads back as the printer saw it. It is the
tool for encoding and framing problems, not for layout problems.
Syntax
~JDSupport
Recognised as valid ZPL and not implemented yet, so it has no effect on the output.
The renderer does not parse this command. Labelary implements diagnostic mode, re-measured on 2026-08-22: every byte from ~JD to the next ~JE draws as its own character with that byte number in hexadecimal underneath, 32 characters to a line, and the dump is a page of its own. A dump longer than the page is clipped rather than continued, so it is always one page, and an empty dump renders no page at all. The renderer interprets the ZPL normally and prints the label instead. The gap needs a parser mode that captures raw bytes plus a page generator for the character grid, so no milestone covers it yet. — not pinned by a test
Labelary renders this command.
Parameters
~JD takes no arguments.
Behavior
Diagnostic mode is a mode, not a per-format setting: it begins when the printer
reads ~JD and lasts across ^XZ until ~JE turns it off. The dump uses the
current label length and the full print width, 32 characters to a line.
Labelary does not continue a long dump onto a second page. Re-measured on 2026-08-22, a dump of 2000 bytes fills one page and the rest is lost, and an empty dump renders no page at all.
Labelary implements the rest faithfully. Measured on 2026-07-30,
~JD^XA^FO50,50^A0N,40,40^FDhi^FS^XZ returns a single page that reads
^ X A ^ F O 5 0 , 5 0 ^ A 0 N , 4 0 , 4 0 ^ F D h i ^ F S ^ with 5E 58 41 5E 46 4F … beneath the characters. The renderer does not implement it: it parses the
ZPL as usual and returns the label the ZPL describes. A format that relies on
~JD to diagnose itself gets a rendered label from the renderer and a byte dump
from Labelary.
Differences from the specification
zpl.tools against Labelary
Where our output differs from Labelary for the same input. These are the differences that break a migration.
- Labelary renders the rest of the stream as a byte dump; the renderer renders the label the stream describes. We measured this on 2026-07-29. — not pinned by a test
Example
Diagnostic mode turned on ahead of an ordinary label:
~JD
^XA
^FO50,50^A0N,40,40^FDhi^FS
^XZ
Related commands
~JEDisable DiagnosticsLeaves the diagnostic mode `~JD` starts, and interprets ZPL again.^HHConfiguration Label ReturnSends the printer's configuration back to the host as text.^WDPrint Directory LabelPrints a label listing the objects held in printer memory.