ZPLToolkit

^BD

MaxiCode Bar CodePreview: not drawn

The UPS symbol: a bullseye surrounded by hexagons, always one fixed size, carrying the routing data for a parcel.

Syntax

^BDo,m,n,t

Parameters

ParameterDescription and accepted valuesIf omitted
oReserved. MaxiCode does not rotate — the symbol is drawn upright whatever is asked.Reserved — MaxiCode has no rotationNone
mSymbol mode. 2 and 3 carry a structured carrier message; 4, 5 and 6 carry free data.2 to 6 — symbol mode2
nWhich symbol this is, when a message is split across several.1 to 8 — position of this symbol in a structured append1
tHow many symbols that message is split across.1 to 8 — total symbols in the structured append1

How it works

^BD prints MaxiCode, the symbology UPS created to sort parcels at speed. Its modules are hexagons packed around a central bullseye, which is what lets a scanner find and orient the symbol on a moving belt regardless of which way the parcel lies.

MaxiCode is always the same physical size — about one inch square — no matter how much data it carries or what ^BY says. Capacity is fixed instead: 93 characters in the modes that carry a structured carrier message, 138 in the others.

The data for the modes UPS uses is not free text. It is a structured message with a postal code, country code, service class and then the parcel detail, separated by the record separators a ^FD carries as hex escapes. Getting that structure wrong is the usual reason a carrier rejects a label that otherwise looks right.

Example

ZPL
^XA
^FO60,60^BD2,1,1^FD001840152382802[)>_1E01_1D961Z00004951_1DUPSN^FS
^XZ

Rendering…

A mode 2 MaxiCode carrying a structured carrier message. The preview shows the data as text; see the note above.
Open in the viewer

How the preview on this site handles it

Not drawn. MaxiCode is a hexagonal grid around a bullseye, and this renderer draws square modules — a square-module approximation would look like a symbol and scan as nothing, which is worse than an honest gap. The field data is drawn as plain text instead, so you can see it is there. Everything around it on the label previews normally.

Common mistakes

  • Expecting ^BY to size it. MaxiCode is a fixed physical size; module width and bar height have no effect.
  • Sending a plain string in mode 2 or 3. Those modes expect a structured carrier message, and the carrier's system will reject anything else.
  • Rotating the field. There is no rotation parameter that does anything — plan the layout around an upright symbol.

See also