^BC — Code 128
Plain English
The most versatile 1D barcode — encodes any ASCII character (letters, numbers, symbols) using three subsets (A: control + uppercase, B: full ASCII, C: numeric-pair compression). Zebra firmware **auto-switches** subsets based on data content, so even-length numeric data automatically uses subset C and produces a noticeably narrower barcode than the same byte count of mixed text.
When to use
Default choice for most barcodes — shipping labels, inventory, asset tags. If in doubt, use Code 128. Knowing about subset switching helps debug "why is the barcode narrower than I expected" — the answer is usually subset-C compression on numeric runs.
Syntax
^BCo,h,f,g,e,m
Parameters
| Parameter | Description |
|---|---|
o | Rotation: N, R, I, B |
h | Bar height in dots |
f | Show human-readable text: Y or N |
g | Text above barcode: Y or N (default N = below) |
e | UCC check digit: Y or N |
m | Mode: N (no selected mode, default), U (UCC Case Mode), A (auto subset switch — recommended), D (UCC/EAN with automatic application identifiers) |
Example
^XA ^FO50,50^BY2^BCN,80,Y,N,N,A^FD1234567890^FS ^XZ
Mode `A` enables auto-switching — the 10-digit even-length payload encodes via subset C (5 numeric pairs), producing a shorter barcode than the same 10 bytes of letters.