^B4
Code 49 Bar CodePreview: partialA stacked symbology from before 2D codes existed: two to eight rows of bars in the footprint of a short linear code.
Syntax
^B4o,h,f,mParameters
| Parameter | Description and accepted values | If omitted |
|---|---|---|
| o | Rotation of the bar code on the label.N normal, R 90°, I 180°, B 270° | Last ^FW value, else N |
| h | Height of an individual row in dots, not of the whole stack.1 to 32000 dots — height of one row | Height set by ^BY |
| f | Where to put the human-readable line, or N for none.N none, A above, B below — interpretation line | N |
| m | Starting mode. A lets the printer choose, which is almost always right.0 to 5 — starting mode, A automatic | A |
How it works
^B4 prints Code 49, one of the first attempts to get more data onto a label than a single row of bars could hold. It stacks between two and eight rows, each row a linear code in its own right, and a scanner reassembles them.
It encodes the full ASCII set and packs digits two to a character, which made it attractive for small parts labelling in the 1980s. Data Matrix (^BX) and QR (^BQ) have taken over that job, and Code 49 now appears mostly in older aerospace and automotive specifications that have not been revised.
The height parameter sets the height of one row, not of the whole symbol — a symbol that grows a row grows taller by that much. Leave it out and the printer spreads the ^BY bar height across however many rows the data needs.
Example
^XA
^BY2,3,80
^FO60,60^B4N,20,A,A^FDZPL TOOLKIT^FS
^XZRendering…
How the preview on this site handles it
Drawn with a real Code 49 encoder, so it scans, and rotation is applied. The human-readable line from `f` is not drawn, and the starting mode from `m` is left to the encoder — asking for a specific mode changes nothing in the preview.
Common mistakes
- Reading `h` as the height of the whole symbol. It is the height of one row, so a taller value multiplies with the row count and can run off the label.
- Choosing it for a new label. Code 49 is legacy; unless a customer specification names it, ^BX or ^BQ hold more data in less space and every modern scanner reads them.
- Expecting a scanner to read it untrained. Like Code 11, Code 49 is usually disabled in scanner firmware by default.