^SZ — Set ZPL Mode
Plain English
Selects the ZPL language dialect the printer uses to parse the rest of the format: **`B` = ZPL II (modern, default)**, **`A` = ZPL (legacy / ZPL I)**. ZPL II is the superset Zebra has shipped since the mid-1990s — it added advanced barcodes (PDF417, Data Matrix, QR, MaxiCode, Aztec, GS1 Composite), scalable/extended fonts (`^A0` family, `^CW`/`^CI` variants), graphic boxes/lines (`^GB`), bitmap import (`~DG`/`^XG`), download/format storage (`^DF`/`^XF`), and the modern label-format command set as a whole. ZPL (legacy) is the original 1980s pre-ZPL-II language and silently rejects or mis-renders any of those modern constructs. The mode is **sticky** — once set, it persists until changed by another `^SZ`, a configuration reset (`^JU`), or a power cycle that loads a different default from saved configuration. **In legacy ZPL I mode, `^SZB` is itself the only escape route back to ZPL II** — most other ZPL II commands will be rejected. Almost all real-world labels use ZPL II; legacy mode exists only for backward compatibility with very old host software that still emits pre-ZPL-II command streams.
When to use
⚠️ **Avoid switching to `^SZA` (ZPL legacy) unless you have a specific reason.** Legacy mode breaks every ZPL II feature in the rest of the format: advanced barcodes (`^B7`/`^BQ`/`^BX`/`^BD`/`^BO`/`^BC` GS1 modes), scalable and extended fonts, `^GB` boxes, downloaded graphics (`^XG`), stored formats (`^XF`/`^DF`), `^FB` field blocks, `^FN`/`^FS` numbered fields, RFID commands (`^RFW`/`^RT`/`^HV`), and most modern positioning/configuration commands will either error, render as text, or be silently ignored. Use `^SZA` **only** when driving a printer from a host application that still emits pre-ZPL-II command streams and you cannot upgrade the host. Use `^SZB` (the default) for everything else — and explicitly emit `^SZB` at the top of any format that runs against a printer whose persistent configuration may have been left in legacy mode by a previous job. After issuing `^SZA`, the only safe next command is `^SZB` to restore ZPL II before doing anything else.
Syntax
^SZa
Parameters
| Parameter | Description |
|---|---|
a | Mode letter: **`A`** = ZPL (legacy / ZPL I — pre-1990s dialect, no advanced barcodes/fonts/graphics), **`B`** = ZPL II (modern superset, factory default and the dialect every example in this reference assumes). Default: `B`. Any other value is invalid and the command is ignored. |
Example
^XA ^SZB ^FO50,50^A0N,40,40^FDZPL II mode^FS ^FO50,120^GB400,2,2^FS ^XZ
`^SZB` explicitly forces ZPL II at the top of the format, guaranteeing the scalable `^A0` font and the `^GB` underline render correctly even if the printer was previously left in legacy mode by another job. The same format under `^SZA` would fail: `^A0` would not be recognised as a scalable font and `^GB` would either error or be ignored, leaving a label with the text rendered (if at all) in a default bitmap font and no underline.