Skip to content
barcoder

Standards/aztec

Aztec

Type2D Matrix
Completeness90%high

Overview

Aztec Code is a 2D matrix barcode symbology invented in 1995 by Andrew Longacre Jr. and Robert Hussey at Welch Allyn, Inc. [1, 2]. It is named after its distinctive central bullseye finder pattern, which resembles an Aztec pyramid viewed from above [1]. The symbology was published by AIM Inc. in 1997 and standardised as ISO/IEC 24778 (current edition: 2024) [1]. Although originally patented, the patent was placed in the public domain, removing royalty barriers that would have limited adoption [1].

Aztec's signature deployment use case is transit and airline tickets: most printed train tickets, bus passes, and airline boarding passes worldwide use Aztec, because of its no-quiet-zone requirement (fits in tight document layouts) and its damage tolerance (survives folding, crumpling, and abrasion in pockets).

History

1995 — Invention [1, 2]: Andrew Longacre Jr. and Robert Hussey at Welch Allyn, Inc. (a medical-device company that also had a barcode-scanner business — later spun off as Hand Held Products, eventually acquired by Honeywell) developed Aztec Code to fill a gap between Data Matrix (industrial micro-marking) and QR Code (open large-scale) [1].

1997 — Publication: AIM Inc. (Association for Automatic Identification and Mobility) published the Aztec Code specification, making it a recognised industry standard [1].

Patent and public-domain release [1]: Although Welch Allyn initially patented the technology, the patent was subsequently placed in the public domain — a deliberate strategic decision modelled on Denso Wave's earlier QR Code release. This eliminated licensing barriers and enabled Aztec's adoption by transport ticketing and government applications where per-scan royalties would have been prohibitive.

Standardisation timeline [3]:

  • 1997 — AIM Inc. publication
  • 2008 — ISO/IEC 24778:2008 (Edition 1) — first international standard
  • 2024 — ISO/IEC 24778:2024 — current edition

Key deployment milestones:

  • Late 1990s / early 2000s — adoption by airlines as part of IATA's electronic boarding-pass initiatives.
  • Mid-2000s — adoption by European national railways (Deutsche Bahn, SNCF, OBB, etc.) for ticket printing.
  • 2010 — IATA's Bar Coded Boarding Pass (BCBP) standard formally accepts Aztec alongside pdf417 and QR Code for airline boarding passes.
  • 2010s — adoption by US car-rental, sporting-event ticketing, and government printed credentials.

Technical specification

Aztec Code is a 2D matrix symbology with a central bullseye finder pattern [1, 4]:

Parameter Value
Symbol shape Square only
Smallest size 15 × 15 modules (Compact 1-layer)
Largest size 151 × 151 modules (Full 32-layer)
Module ("cell") values Binary — dark or light
Capacity (numeric, max) ~3 832 digits
Capacity (alphanumeric, max) ~3 067 chars
Capacity (byte, max) ~1 914 bytes
Finder pattern Central bullseye (concentric squares)
Quiet zone None required
Error correction Reed–Solomon, user-selectable 5 %–95 %
Encoding modes Upper, Lower, Mixed, Punctuation, Digit, Byte

Two variants [1, 4]:

Variant Bullseye size Layer count Best for
Compact Aztec 9 × 9 cells 1–4 layers Small payloads, very small printable size
Full Aztec 13 × 13 cells 1–32 layers Larger payloads, more EC

Distinguishing structural features [1, 4]:

  • Central bullseye — provides orientation reference in the centre of the symbol, unlike QR (three corner squares) or Data Matrix (L-pattern on two edges).
  • Concentric layers — data is encoded in square rings expanding outward from the bullseye.
  • No quiet zone required — Aztec can be printed directly against arbitrary backgrounds; this saves printable real estate in cluttered document layouts where QR Code requires a 4-module clear margin.
  • Selectable error correction (5 %–95 %) — finer-grained than QR Code's 4 EC levels (L, M, Q, H = 7/15/25/30%) or PDF417's 0–8 levels.

Use cases

Aztec's dominant deployment is transport ticketing, structurally because of the no-quiet-zone property + damage tolerance + small footprint [1, 4]:

  • Airline boarding passes — printed boarding passes from most airlines worldwide use Aztec (per IATA BCBP). Coexists with pdf417 and qr-code in the spec; Aztec is the most common for printed paper boarding passes [5].
  • Train tickets — Deutsche Bahn (Germany), SNCF (France), ÖBB (Austria), SBB (Switzerland), Trenitalia (Italy), most European national railways print Aztec on tickets. Conductors scan with handheld readers.
  • Bus and metro passes — many urban transit systems use Aztec for printed tickets.
  • Concert and event tickets — Ticketmaster and other large event ticketing systems use Aztec for printed tickets sent by post or printed by the consumer.
  • Car rental contracts — some rental companies use Aztec for rental-agreement reference codes.
  • Healthcare — patient wristbands occasionally use Aztec for high-density patient ID + medication info.
  • Driving licences (some EU) — supplementary Aztec on European driving licences encoding name + licence number + restrictions.
  • Postal services — small-format mail labels.
  • Government printed credentials — some national ID cards use Aztec alongside other symbology.

Why Aztec wins these use cases [1]:

  • Survives crumpling / folding / pocket wear better than QR Code (because of robust Reed–Solomon EC and bullseye finder).
  • Fits in tighter document layouts (no quiet zone needed).
  • Public-domain royalty-free (matters at billions-of-tickets-per-year scale).
  • Compact variant fits on ~10 mm wide ticket footprint, smaller than typical QR Code at similar capacity.

Implementations

Aztec has solid open-source library support, though smaller in mindshare than qr-code or data-matrix:

  • Java + many portszxing/zxing — 34 000★, active 2025. Decodes (and encodes) Aztec alongside QR, PDF417, Data Matrix, and 1D symbologies. The dominant open-source Aztec implementation.
  • JavaScriptzxing-js (port of zxing) — browser-based Aztec scanning.
  • C++libaztec (community) and integrated into general barcode libraries.
  • Pythontreepoem (BWIPP wrapper) handles Aztec generation; pyzbar does not directly support Aztec; ZBar is QR/EAN-focused.
  • C# / .NETZXing.Net, Aspose.BarCode, Dynamsoft Barcode Reader (commercial).
  • Mobile SDKs — Scanbot, Scandit, Anyline, Dynamsoft offer Aztec scanning as a standard format.

Industrial scanners — every airline boarding-pass reader, train-conductor handheld terminal, and event-ticketing barcode scanner produced since ~2010 supports Aztec natively (along with Code 128, PDF417, QR).

IATA BCBP integration — airlines generate Aztec boarding passes via their departure-control systems (Amadeus Altea, Sabre, Hexaware, etc.); the IATA BCBP M-message format is what gets encoded inside the Aztec symbol [5].

Comparison

vs. pdf417 — Both are 2D, both in the IATA BCBP standard for boarding passes. PDF417 is rectangular stacked-linear; Aztec is square matrix. PDF417 has bigger capacity per symbol but requires more printable width; Aztec is more compact for similar payload sizes. Airline industry uses both — IATA BCBP defines four allowed symbologies (Code 128, PDF417, Aztec, QR) and lets airlines / vendors choose. Most printed paper boarding passes are Aztec; many mobile boarding passes are QR [pdf417-ref, 5].

vs. qr-code — QR has the bigger consumer-facing footprint (every marketing campaign, every payment QR, every restaurant menu); Aztec has the printed-ticket footprint (every airline boarding pass, every train ticket). Both public-domain, both 2D matrix, but optimised for different deployment contexts: QR for screen and printed-poster scanning by phones; Aztec for handheld-scanner reading of printed tickets in physical workflows.

vs. data-matrix — Both 2D matrix, both with very-small-footprint capability, both public-domain. Data Matrix dominates industrial part marking (where the substrate is metal or plastic and the symbol is laser-etched); Aztec dominates printed ticket / paper (where the substrate is paper and the symbol is printed). Different physical contexts, similar technical lineage [data-matrix-ref].

vs. maxicode — Both have distinctive non-square finder patterns (Aztec: bullseye; MaxiCode: bullseye with hexagonal cells); both fit specific verticals. MaxiCode is UPS-specific for package routing; Aztec is broader ticket/transit. MaxiCode has a fixed 1-inch size; Aztec scales [max-ref].

Fun facts

Aztec's name comes from its bullseye finder pattern resembling an Aztec pyramid seen from directly above [1] — the concentric squares of the central locator look like aerial photography of a stepped pre-Columbian pyramid. The naming is one of the more visually evocative in barcode taxonomy.

The no-quiet-zone requirement is what makes Aztec the default for cluttered ticket layouts [1, 4]. QR Code requires a 4-module clear margin on all sides, which a printed boarding pass can't always afford (the boarding pass is densely packed with name, flight, seat, sequence, group, gate, time information surrounding the symbol). Aztec sits flush against text and graphic borders without scanning issues. This single property is why every printed European train ticket is Aztec and not QR.

Welch Allyn's barcode-scanner business — which produced both Aztec Code and the early Hand Held Products scanner line — was eventually acquired by Honeywell, and Honeywell remains a major supplier of industrial 2D scanners worldwide [1]. The corporate lineage Welch Allyn → Hand Held Products → Honeywell encompasses both the inventor of Aztec and one of the world's largest manufacturers of devices that read it.

The patent for Aztec Code was deliberately placed in the public domain by Welch Allyn after issuance [1] — a strategic choice modelled on Denso Wave's earlier release of qr-code patents. Without that decision, the IATA airline boarding-pass mandate and the European-railway adoption would never have happened: airlines and railways won't pay per-scan royalties on billions of tickets annually.

Status

Active, stable, dominant in its niche [1, 3]:

  • ISO/IEC 24778:2024 (current edition) is the canonical specification
  • Public-domain status unchanged
  • IATA BCBP continues to specify Aztec as a supported symbology for printed boarding passes
  • European railway adoption stable across DB, SNCF, ÖBB, SBB, Trenitalia, NS, RENFE
  • Event ticketing continues to use Aztec where mobile-QR isn't viable

Strategic context:

  • Mobile-first travel (digital boarding passes in Apple Wallet / Google Wallet) increasingly use qr-code rather than Aztec, because phone screens display QR more reliably than Aztec to handheld scanners.
  • However, printed paper tickets remain Aztec across all major European rail networks — the no-quiet-zone advantage in print layouts is structural.
  • No deprecation planned; the print-vs-mobile bifurcation (Aztec for paper, QR for phone) appears stable for the foreseeable future.

Sources

  1. Aztec Code — Wikipedia
  2. Aztec Code history (1995 invention) — Free Journal
  3. ISO/IEC 24778:2024 — Aztec Code specification
  4. Aztec Code symbology guide — Seagull Scientific BarTender
  5. Boarding Pass Scanners for PDF417 (includes Aztec) — Scanbot
  6. zxing/zxing — GitHub
  7. Aztec Barcode Scanner SDK — Barkoder
  8. Aztec Code — Just Solve the File Format Problem

Deployments

No country reports mention this standard by name.

Regions / aggregations not mapped to a single country

  • Universal
source · docs/standards/aztec/index.md