Standards/maxicode
MaxiCode
Overview
MaxiCode is a 2D matrix barcode symbology with a distinctive central-bullseye + hexagonal-cell-grid design, developed by Donald Chandler and Eric Batterman for United Parcel Service (UPS) in 1987 and released by UPS in 1992 [1, 2]. It is public domain and standardised as ISO/IEC 16023:2000 [3]. MaxiCode is essentially UPS's package-routing barcode — designed specifically to be read at very high speed on packages moving through automated sortation conveyors at UPS facilities, where the central bullseye finder enables decoding even on packages tumbling unpredictably on a belt.
Each MaxiCode symbol is a fixed 1-inch (25.4 mm) square [1] with hexagonal "dots" arranged in a grid around the central bullseye finder. The symbol carries about 93 characters per symbol with strong Reed–Solomon error correction; up to 8 symbols can be Structured-Append-linked for larger payloads [1]. Sometimes nicknamed "Bird's Eye", "Target", "dense code", or simply "UPS code" [1].
History
1987 — Donald Chandler and Eric Batterman invent MaxiCode at UPS [1, 2]: The UPS engineers designed MaxiCode specifically to solve a high-speed-sortation operational problem. UPS's package sortation hubs (Worldport in Louisville, etc.) move thousands of packages per hour through automated conveyors. The barcode reader must capture and decode the routing information even on packages travelling at conveyor speed, tumbling, with arbitrary orientation. Linear barcodes (code-128 etc.) require careful orientation to scan; existing 2D barcodes like pdf417 (1991, two years after MaxiCode's design) had similar issues for omnidirectional high-speed reading.
- Central bullseye finder pattern — visible from any angle; enables rotation-invariant detection.
- Hexagonal cell grid instead of square — denser packing; cells can be detected reliably even with print imperfections.
- Fixed 1-inch size — predictable for high-speed scanner calibration.
- Strong Reed–Solomon error correction — survives label damage that's inevitable in package shipping.
1992 — UPS releases MaxiCode [1]: Public release after ~5 years of internal use and refinement. UPS placed the symbology in the public domain to allow scanner manufacturers and other carriers to support it without licensing fees.
2000 — ISO/IEC 16023 international standardisation [3]: Formal recognition as an international standard. Defines the symbology's characteristics, data encoding, symbol formats, dimensions, print quality requirements, error correction rules, and decoding procedures.
Continuing use: MaxiCode remains in active use on UPS shipping labels worldwide. Other carriers have largely chosen different symbologies (pdf417 for FedEx and various USPS labels; qr-code for some DHL labels; code-128 / itf for tracking numbers across all carriers), but MaxiCode is the dominant UPS-specific identifier.
Technical specification
MaxiCode is a fixed-size 2D matrix barcode with hexagonal cells around a central bullseye [1, 4]:
| Parameter | Value |
|---|---|
| Symbol shape | Fixed square, 1 inch (25.4 mm) per side |
| Cell shape | Hexagonal (not square or round) |
| Cell count | 884 hexagonal cells total per symbol |
| Capacity (per symbol) | ~93 characters of payload |
| Symbol linking | Up to 8 symbols can be Structured-Append-linked for larger payloads |
| Finder pattern | Central bullseye (three concentric circles) |
| Quiet zone | 1 cell width on each side (effectively negligible) |
| Error correction | Reed–Solomon, two levels per mode |
| Encoding modes | 6 modes (0–5); modes 2 and 3 carry Structured Carrier Message |
| Bidirectional reading | Omnidirectional (the bullseye allows any orientation) |
| Mode | Use | Structured Carrier Message |
|---|---|---|
| 0 | Obsolete; not in use in current implementations | — |
| 1 | Obsolete | — |
| 2 | US/Canadian Structured Carrier Message — postal code, country, service class | Yes |
| 3 | International Structured Carrier Message — alphanumeric postal codes | Yes |
| 4 | Standard symbol — full Reed–Solomon EC | No |
| 5 | High-capacity symbol — half Reed–Solomon EC | No |
| 6 | Reader-programming mode | — |
Structured Carrier Message (in modes 2 and 3) [1]: includes the routing-critical data fields that UPS's sortation systems need to read first:
- Postal code (numeric or alphanumeric)
- Country code (ISO 3166)
- Service class code
- Tracking number reference
The Structured Carrier Message is protected with stronger Reed–Solomon error correction than the rest of the payload, allowing the routing fields to be decoded even if the bottom half of the symbol is heavily damaged.
Hexagonal cell grid advantage [1, 4]: Hexagonal packing achieves ~15 % higher density than square packing for the same printable resolution, and hexagonal cells are slightly more robust to print imperfections at their edges (a damaged hexagonal cell affects fewer neighbours than a damaged square cell). This is structural to MaxiCode's print-and-survive-handling design priority.
Use cases
MaxiCode is the UPS-specific package-routing barcode. Its use case is narrow but enormous in print volume:
- UPS shipping labels — every UPS-shipped package (~25+ million per day in 2026) carries a MaxiCode on its label, encoding the routing-critical Structured Carrier Message for UPS's automated sortation infrastructure.
- UPS sortation facilities — Worldport (Louisville, KY — UPS's main air hub), regional hubs, and ground-sortation centres all use MaxiCode-enabled automated package-routing systems.
- UPS partner carriers — UPS Mail Innovations, UPS SurePost, etc. also use MaxiCode-formatted labels.
- Defence and aerospace (occasional) — some military and aerospace logistics use MaxiCode where the omnidirectional bullseye-finder advantage matters; rare compared to UPS use.
Non-UPS package-shipping use cases are rare — other major carriers chose different symbologies:
- FedEx primarily uses pdf417 for shipping labels (with code-128 for tracking number).
- USPS uses code-128 and pdf417 depending on service class.
- DHL uses code-128 / sometimes qr-code for tracking, pdf417 for some service-specific labels.
The carrier-specific symbology choice persists by historical accident plus deep installed-base investment in sortation-equipment scanner heads.
Implementations
MaxiCode is less broadly supported than code-128 / qr-code / data-matrix because its production use is essentially UPS-specific, but solid open-source support exists [5, 6]:
- Java + many ports — zxing/zxing — 34 000★, active 2025. Decodes MaxiCode (one of the supported 2D symbologies). Note: encoder support for MaxiCode is more limited than decoder support in zxing's primary tree; community forks add encoder where needed.
- C / C++ —
libzint(Zint barcode generator) — supports MaxiCode generation [6]. - Python —
treepoem(BWIPP wrapper) supports MaxiCode generation;pyzbardoes not currently decode MaxiCode. - PHP —
picqer/php-barcode-generator— supports MaxiCode generation via Zint binding. - C# / .NET — GdPicture.NET (commercial) added MaxiCode read/write support;
Aspose.BarCode,Dynamsoft Barcode Reader(commercial) support MaxiCode. - Industrial scanners — Cognex, Datalogic, Honeywell, Keyence, Symbol/Zebra, SICK all support MaxiCode in their 2D-capable industrial scanner lines (largely for UPS hub deployment).
- UPS internal systems — UPS operates its own MaxiCode generation and decoding infrastructure across its sortation network; this is the dominant production deployment.
Reference documentation [3, 1]:
- ISO/IEC 16023:2000 — formal symbology specification.
Comparison
vs. pdf417 — Both 2D, both invented around the same era (PDF417: 1991; MaxiCode: 1987 design / 1992 release). PDF417 is stacked-linear with variable size; MaxiCode is matrix with fixed 1-inch size. PDF417's variable size makes it flexible for document layouts (boarding passes, IDs); MaxiCode's fixed size makes it predictable for high-speed sortation scanner calibration. FedEx chose PDF417; UPS chose MaxiCode — the two largest US package carriers diverged on 2D-symbology choice for structural reasons [pdf417-ref].
vs. qr-code — Both 2D matrix; both have rotation-invariant finder patterns (qr-code has three corner squares; MaxiCode has a central bullseye). QR's three-corner-finder design has become the dominant consumer-facing 2D pattern; MaxiCode's bullseye design persists in UPS's specific niche. QR's variable size accommodates a wide capacity range; MaxiCode's fixed 1-inch size is optimised for high-speed industrial reading at predictable focal distances [qr-code-ref].
vs. aztec — Both have central bullseye finder patterns — Aztec's looks like an Aztec pyramid from above; MaxiCode's is a simpler three-concentric-circle target. Aztec uses square cells; MaxiCode uses hexagonal. Aztec scales (15×15 to 151×151); MaxiCode is fixed. Both were released to public domain at roughly the same era (Aztec 1995, MaxiCode 1992) and both achieved niche dominance — Aztec in printed transit/airline tickets, MaxiCode in UPS package sortation [aztec-ref].
vs. data-matrix — Both 2D matrix in the same 1987-onwards era. Data Matrix scales down to ~2.5 mm for industrial part marking; MaxiCode is fixed 1-inch for high-speed shipping. Different deployment niches; complementary [data-matrix-ref].
Fun facts
MaxiCode is the UPS-specific barcode by structural design, not accident [1, 2] — UPS commissioned its own internal barcode-symbology development because no existing standard met the high-speed-sortation requirements UPS needed. The design priorities (1-inch fixed size, central bullseye for omnidirectional reading, hexagonal cells for damage tolerance, Structured Carrier Message with extra-strong error correction on routing fields) are all consequences of the conveyor-belt-at-300-feet-per-minute operational context, not of generic 2D-barcode design principles.
The hexagonal cell grid [1] is one of the most visually distinctive 2D barcodes — instantly recognisable as a MaxiCode by sight. Most 2D barcodes use square cells; hexagonal is uncommon. The packing efficiency advantage is modest (~15 % over square) but the visual distinctiveness is total — every package logistics specialist worldwide recognises "the hexagonal one with the bullseye" as a UPS label without reading any text.
The central bullseye finder pattern is what enables reading on tumbling packages [1, 4]. UPS sortation conveyors run at speeds where packages don't have time to be oriented; a scanner head must capture the symbol at whatever angle the package presents. The bullseye is rotation-invariant — a circle looks the same from any angle. Linear barcodes (code-128 etc.) require orientation; 2D barcodes with corner-square finders (qr-code) require enough finder pattern to be detectable. MaxiCode's bullseye is the most rotation-invariant finder pattern of any major 2D symbology.
The nicknames — "Bird's Eye", "Target", "dense code", "UPS code" [1] — show how MaxiCode's visual identity got informal names rather than the spec's formal "MaxiCode" being adopted by users. The central bullseye looking like a target or a bird's-eye-view of something concentric is the recurring metaphor.
Modes 2 and 3 carry the Structured Carrier Message [1] separately from the rest of the payload, with stronger Reed–Solomon error correction on the routing-critical fields. UPS's design priority: even if the bottom half of the symbol is illegible because the label got partially destroyed in transit, the routing data (postal code, country, service class) survives. The package gets routed correctly, the rest of the data is reconstructed from the database. This is a classic example of structural-criticality-based EC budgeting.
Status
Active, niche-dominant, stable [1, 3]:
- ISO/IEC 16023:2000 is the current spec — stable for 25+ years
- Public domain — no licensing fees
- UPS continues to use MaxiCode on every shipping label worldwide — ~25+ million packages per day in 2026
- Industrial scanner support continues across major commercial scanner lines
Strategic context:
- MaxiCode is deeply entrenched in UPS's operational infrastructure; replacing it would require coordinated migration of UPS's global sortation-scanner fleet, label-printing systems, and integration partners. Effectively immovable for the foreseeable future.
- No deprecation planned by ISO; no successor symbology under active development for the high-speed-sortation use case.
- The hexagonal-cell, central-bullseye design is structurally distinctive in a way no other 2D barcode has achieved — and that visual identity has become part of UPS's brand recognition (alongside the brown-truck colour and the gold-and-shield logo).
Sources
- MaxiCode — Wikipedia
- MaxiCode symbology — Seagull Scientific BarTender
- ISO/IEC 16023:2000 — MaxiCode specification
- MaxiCode symbology — Scandit
- zxing/zxing — GitHub
- MaxiCode — BWIPP Wiki
- MaxiCode — Academic
- New MaxiCode 2D Barcode Reading and Writing Support — GdPicture
Deployments
No country reports mention this standard by name.
Regions / aggregations not mapped to a single country
- Universal