ZPLToolkit

^BA

Code 93 Bar CodePreview: partial

A denser, continuous relative of Code 39 that carries the full ASCII set — when the scanner is configured to read it.

Syntax

^BAo,h,f,g,e

Parameters

ParameterDescription and accepted valuesIf omitted
oRotation of the bar code on the label.N normal, R 90°, I 180°, B 270°Last ^FW value, else N
hBar height in dots. Overrides the height set by ^BY for this field only.1 to 32000 dotsHeight set by ^BY
fPrints the data underneath the bars as text.Y or N — print the human-readable lineY
gMoves that text above the bars instead.Y or N — put that line above the barsN
ePrints the two check characters as part of the human-readable line. They are always encoded either way.Y or N — print the check digitN

How it works

^B3 prints Code 39; ^BA prints Code 93, which was designed to replace it. Every character is a fixed 9 modules wide, with no wide and narrow bars, so a Code 93 is meaningfully narrower than the same data in Code 39.

Code 93 reaches the full 128-character ASCII set by combining two characters for anything outside its basic set, which means lowercase and punctuation are available — at double the width for each such character.

The catch is on the reading side. Many scanners ship with Code 93 disabled, and full-ASCII mode is a separate setting again. Before choosing it for a label that leaves your building, confirm the receiving scanners accept it; if you cannot, Code 128 is the safer dense symbology.

Example

ZPL
^XA
^BY2
^FO60,50^BAN,80,Y,N^FDZPL TOOLKIT^FS
^XZ

Rendering…

Code 93 encoding the same text a Code 39 would need a third more room for.
Open in the viewer

How the preview on this site handles it

Drawn with a real Code 93 encoder, rotation included. The preview encodes the basic character set only — a symbol the printer would build in full-ASCII mode is drawn as a hatched red box here rather than as bars that do not match.

Common mistakes

  • Choosing Code 93 without checking the scanners. It is the most commonly disabled of the mainstream symbologies.
  • Expecting full ASCII to be free. Each character outside the basic set is encoded as two, so a lowercase-heavy value can end up wider than Code 39.
  • Reading the check characters as data. They are part of the symbol, not part of the value your system sent.

See also