^CD / ~CD - Change Delimiter
Changes the character that separates command arguments.
^CD replaces the comma between the arguments of a command, so ^FO50,50 becomes
^FO50;50. It changes arguments only. Field data after ^FD runs to ^FS and never
depends on the delimiter, so ^CD is not the command that prints a comma. Reach for it
where an argument itself must contain one. ^CD and ~CD are the same command. Use the
tilde form between formats.
Syntax
^CDaAlso accepted with the other prefix: ~CD.
Support
Every documented parameter renders the same output Labelary produces.
Labelary renders this command.
Parameters
aDelimiter characterrequired · single characterCharacter that replaces , between arguments. Takes effect immediately and persists past ^XZ into the next label.
- Invalid value
- not possible — any value is accepted. The parser takes any single byte literally, as a raw byte rather than an argument. So
^CD,restores the comma even while another delimiter is active. With no argument the guide makes the next character received the new delimiter, and the renderer does the same. At end of input the comma stays. - Test coverage
Behavior
The change applies from the next command onwards, so the ^CD itself uses the delimiter
currently in force. It therefore takes a single character rather than a comma-separated
argument list.
The parser reads the new delimiter as a raw byte, not as an argument, which makes the
change reversible. ^CD, sets the comma back even while a different delimiter is in
force. Both renderers verify this with the example below (verified 2026-07-30).
Like the caret and tilde changes, the delimiter is parser state and persists past
^XZ into the next format. On a printer the guide notes that the change also needs
^JUS to survive a power cycle. Without it the printer defaults at restart, so do not
rely on a delimiter an earlier job set.
The parser accepts any ASCII character and validates nothing, so a ^CD can break the
rest of the format outright. A delimiter of ^, or of the current caret, leaves no way
to tell a command from its arguments. Choose a character that appears in neither the
arguments nor the prefixes.
Tested behavior
Differences from the specification
Labelary against the ZPL II guide
Where Labelary — our compatibility target — behaves differently from the printed specification.
- Labelary documents the argument as optional with the default
,. The guide says it is required, and that a missing argument makes the next character received the new delimiter. — not pinned by a test
zpl.tools against Labelary
Where our output differs from Labelary for the same input. These are the differences that break a migration.
- With no argument the renderer takes the next byte as the delimiter and still renders the label; Labelary renders no page. We measured this on 2026-07-30. — not pinned by a test
Example
A semicolon delimiter for one field, then back to the comma for the next. Both fields print.
^XA
^CD;
^FO50;50^A0N;40;40^FDfirst^FS
^CD,
^FO50,150^A0N,40,40^FDsecond^FS
^XZ
Related commands
^CC / ~CCChange CaretChanges the character that introduces a format command.^CT / ~CTChange TildeChanges the character that introduces a control command.