Skip to main content
Online Tool

Aztec Code Generator

Encode boarding passes, transit tickets and structured payloads as a 2D Aztec barcode. Tunable error correction and layer count, PNG and SVG output — fully client-side.

59 / 3000 characters. Aztec encodes ASCII, digits and Latin-1 binary.

23%

Spec default is 23%. Higher = more tolerance to print damage at the cost of a bigger symbol.

3x

2-ring bullseye, 1–4 layers — smaller symbol for short payloads (~110 chars max).

Sets the reader-init flag for scanner-config Aztec codes. Leave off for data.

Encoded payload
M1DOE/JOHN EABC123 LHRJFKBA 0179 226Y012A0001 100

Files are generated on your device — nothing is uploaded.

About the Aztec code generator

Aztec is a 2D matrix barcode that packs a few characters or up to ~3000 of them into a square symbol with a central bullseye finder pattern. It scans without a quiet zone (which is why it works so well on phone screens with thin status bars), tolerates partial damage, and is the symbology behind IATA mobile boarding passes, Eurostar / SNCF / Deutsche Bahn tickets, and many transit cards.

This generator renders Aztec entirely in your browser with the open-source bwip-js library. Pick an error-correction percentage (the spec default is 23%), choose compact vs full-range, force a layer count for a fixed label size, then download as SVG for print or PNG for screen.

When to use it

  • Generating IATA BCBP mobile boarding-pass payloads for proofing.
  • Issuing transit / rail tickets that need to scan from glossy phone screens.
  • Marking small parts where Aztec's no-quiet-zone requirement saves real estate.
  • Producing reader-config codes that re-programme handheld scanners.
  • Embedding short structured data (gate, seat, member ID) on a printed pass.
  • Replacing a damaged Aztec on an existing ticket / pass with a re-issue.

How it works

  1. Paste your data

    ASCII text, digits or Latin-1 binary up to ~3000 characters.

  2. Set the EC percentage

    Stay at the 23% spec default for general use. Raise for harsher surfaces / lower-DPI printers.

  3. Pick compact or full-range

    Compact for short payloads (~110 chars). Full-range for everything else.

  4. Optionally force layers

    Auto picks the smallest symbol that fits; force a count to hit a label size.

  5. Download SVG or PNG

    SVG scales without artefacts to any size; PNG is fine for screens.

What to avoid

  • Don't drop EC below 23% for boarding passes or laminated tickets — wear destroys low-EC symbols quickly.
  • Don't force compact mode for a payload over ~110 characters — the encoder will reject it.
  • Don't enable Reader Programming for normal data payloads — most scanners refuse to decode it as data.
  • Don't print on phone screens with the brightness turned low; Aztec relies on contrast that auto-brightness sometimes kills.
  • Don't expect every legacy scanner to read full-range Aztec at 32 layers — verify with the actual reader you're targeting.

Tips & tricks

  • Aztec doesn't need a quiet zone — but a thin white margin still helps screen scans through phone bezels.
  • For airline / rail use, follow the IATA BCBP or UIC-918 field layout exactly; downstream readers reject anything off-spec.
  • Export SVG and rasterise to PNG only for the final asset — vector means you can resize without quality loss.
  • Round-trip-test by scanning the rendered Aztec with the actual scanner that will read it in production.
  • If your scanner supports both, prefer Compact Aztec for ticket-size labels — it scans faster from short distances.

Private by default

Aztec codes are rendered locally with bwip-js. The text you encode never touches our servers.

Frequently asked questions

What is an Aztec code?
Aztec is a 2D matrix barcode introduced in 1995 with a distinctive square 'bullseye' finder pattern in the centre. It encodes from a few bytes up to ~3067 ASCII characters, doesn't require a quiet zone (unlike QR), and is the symbology used for IATA mobile boarding passes and many European rail tickets.
Compact vs full-range — what's the difference?
Compact Aztec uses a 2-ring bullseye and 1–4 layers (15×15 to 27×27 modules); good for small payloads up to ~110 characters. Full-range uses a 3-ring bullseye and 1–32 layers (19×19 to 151×151 modules) for longer data. Most modern scanners read both.
What error correction percentage should I use?
The Aztec spec recommends 23% (the default). Bump to 36–50% for laminated cards, dirty surfaces or low-DPI thermal prints. Lower than 23% saves space but reduces tolerance to print defects and scanner noise.
What does 'layers' control?
Each layer adds a square ring of modules around the central bullseye. More layers = bigger symbol and more data capacity. Auto lets bwip-js pick the smallest layer count that fits your data at the chosen EC level. Force a specific layer count to hit a fixed label size.
When should I use reader-programming Aztec?
Aztec supports a 'reader init' flag that tells barcode scanners to programme themselves from the symbol — used in IT deployment to push scanner configs. Don't enable it for normal data payloads.
Is my data uploaded anywhere?
No. The barcode is rendered locally with the open-source bwip-js library. The text you encode and the files you download never leave your browser.

Related tools