Published · September 14, 2026
MaxiCode: The Bullseye Barcode on Every UPS Package
MaxiCode is the hexagonal, bullseye-shaped barcode on UPS labels. Here is how it encodes data, why it is shaped that way, and why a QR scanner cannot read it.
What is that bullseye code?
That black-and-white target on every UPS shipping label has a name: MaxiCode. It's a fixed-size, hexagonal 2D barcode UPS invented in 1987 to track and manage package shipments, and it's been riding on labels ever since. Donald Chandler and Eric Batterman built it for UPS, which put the design in the public domain — it was later standardized as ISO/IEC 16023.
If you spend any time scanning QR codes for menus, Wi-Fi, or payments, it's worth knowing MaxiCode only looks related. It isn't a QR code. It doesn't link anywhere, and it isn't meant for your phone at all — it's built for the high-speed scanners on a distribution-center conveyor belt.
How MaxiCode actually encodes data
The bullseye and hexagonal grid
A MaxiCode symbol is fixed in size: about 28.14mm wide by 26.91mm tall, roughly a one-inch square once you include the required quiet zone. At the center sits the bullseye, a finder pattern about 7.74mm across, surrounded by rows of offset hexagonal modules rather than the square grid you'd find in a QR code or an Aztec Code. That circular target isn't decorative. A scanner locks onto it and figures out the symbol's orientation almost instantly, even while the package is moving.
Modes and the structured carrier message
Most UPS labels run Mode 2 or Mode 3, each carrying a Structured Carrier Message — a mode indicator, postal code, three-digit country code, and service-class code, protected by Reed-Solomon error correction. Mode 2 covers domestic shipments with numeric postal codes; Mode 3 covers international ones with alphanumeric codes. Modes 4 and 5 handle general-purpose or higher-security data outside shipping, and Mode 6 is for programming the scanning hardware itself.
Capacity
A single MaxiCode symbol holds around 93 alphanumeric characters, or up to 138 if the data is purely numeric — enough for a postal code, country code, service class, and a compressed address. Need more than that? Up to eight symbols can be linked together.
Why you can't scan it with a normal QR app
Pointing a phone camera or a general QR scanner — QRDock included — at a MaxiCode symbol won't do anything. These tools decode QR codes and common 1D formats, not MaxiCode's hexagonal structure. Reading it reliably takes scanning software or an SDK built specifically for the symbology, the kind logistics companies bake into warehouse and conveyor hardware.
That's not a security gap. MaxiCode was never meant for consumers to scan in the first place. It carries operational data for the carrier, not a link, a Wi-Fi password, or a payment request — so there's genuinely nothing for you to do with it even if you could read it.
How a damaged label still scans
Shipping labels take a beating: scuffed on conveyor rollers, rained on, crushed under other packages. MaxiCode's Reed-Solomon error correction is built for exactly that — specs generally allow roughly one-eighth of the symbol to be torn, smudged, or damaged while the rest still decodes. QR codes use their own error-correction levels to survive a similar scratch, or a logo dropped in the middle.
Where you'll actually see it
In practice, MaxiCode means UPS. It's on nearly every UPS shipping label, plus a handful of other carriers using it in similar high-volume sorting environments. The unformatted Modes 4-6 occasionally turn up in non-shipping uses, like programming scanning hardware, but that's a narrow, mostly industrial case you're unlikely to run into.
MaxiCode vs. QR code vs. Aztec Code
MaxiCode, QR codes, and Aztec Code all fall under "2D barcode," but they solve different problems. QR codes use a square grid and hold up to several thousand characters, which is why they're the go-to for URLs, Wi-Fi credentials, and payment links. MaxiCode uses a hexagonal grid around a fixed bullseye and tops out around 93-138 characters. It was built for one job — a fast, damage-tolerant field for shipping data, not general-purpose linking.
Aztec Code is the square-grid format with a bullseye of its own that shows up on transit tickets and boarding passes, and PDF417 is the tall, striped format behind IDs and airline boarding passes. All three are purpose-built the way MaxiCode is, just for different industries.
Frequently Asked Questions
Can I scan a MaxiCode with my phone's regular camera app?
Usually not. Most phone camera apps and general-purpose scanners like QRDock decode QR codes, not the hexagonal MaxiCode symbology, so a UPS bullseye label typically needs a dedicated MaxiCode-capable scanning app or SDK.
Why does MaxiCode look like a target instead of a square grid?
The central bullseye is a finder pattern that lets a scanner instantly locate and orient the symbol even on a fast-moving conveyor belt, which is why UPS chose a circular, hexagonal-module design instead of a square grid.
How much data can a MaxiCode symbol actually store?
A single MaxiCode holds around 93 alphanumeric characters (or up to 138 numeric) — enough for a postal code, country code, service class, and compressed address — and up to eight symbols can be linked for more.
Is MaxiCode still readable if the shipping label gets torn or dirty?
Yes, to a point. MaxiCode uses Reed-Solomon error correction, and specs generally allow roughly one-eighth of the symbol to be torn, smudged, or damaged while the rest still decodes correctly.
Conclusion
The bullseye on your UPS package is MaxiCode: a purpose-built, damage-tolerant 2D barcode designed for high-speed sorting, not for your phone. It won't open a link or a Wi-Fi network — it's carrying postal codes and service data for the carrier, not content for you. Next time you spot an unfamiliar barcode, QRDock's tour of ten barcode formats is a quick way to figure out what you're looking at.