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.
Spec default is 23%. Higher = more tolerance to print damage at the cost of a bigger symbol.
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.
M1DOE/JOHN EABC123 LHRJFKBA 0179 226Y012A0001 100Files 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
- 1Step 1Paste your data
ASCII text, digits or Latin-1 binary up to ~3000 characters.
- 2Step 2Set the EC percentage
Stay at the 23% spec default for general use. Raise for harsher surfaces / lower-DPI printers.
- 3Step 3Pick compact or full-range
Compact for short payloads (~110 chars). Full-range for everything else.
- 4Step 4Optionally force layers
Auto picks the smallest symbol that fits; force a count to hit a label size.
- 5Step 5Download 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.