QR vs PDF417 vs Aztec vs Code 128
Apple Wallet renders exactly four barcode formats, and picking the right one is the difference between a beep and an awkward “let me type it in.” Here's each format's personality, and the one-line rule for choosing.
The four, and where you've met them
- QR Code — the square everyone knows. Camera scanners love it, capacity is huge (~3,000 chars), and it survives small sizes. Native habitat: event tickets, vouchers, links, everything modern.
- PDF417 — the stacked rectangle on boarding passes and driver's licenses. Native habitat: airline and government systems. Use it when recreating something that was PDF417 originally.
- Aztec — the square with a bullseye center, big in rail tickets across Europe. Highest capacity (~3,800 chars). Native habitat: train and transit systems.
- Code 128 — the classic one-dimensional stripes. The lingua franca of retail: loyalty cards, gift cards, membership numbers. Short payloads, universally scannable — including by older laser scanners.
The one-line rule
Match the original; when there's no original, use QR. Scanning systems are built to expect a specific symbology — a rail gate wants its Aztec, a supermarket wants its stripes. When you're recreating an existing card or ticket, keep its format (WalletKit's scanner shows you what it read). When you're creating something new that you control, QR is the universal answer.
The EAN/UPC wrinkle
Many plastic loyalty cards carry EAN-13 or UPC codes — formats Wallet doesn't render. WalletKit's camera reads them fine (it scans 10 formats), and the fix is to carry the same digits in Code 128, which retail scanners read just as happily. Belt-and-suspenders: put the number in a visible pass field too, so a human can type it if a scanner sulks.
Practical scanner wisdom
- Brightness wins. Wallet auto-boosts brightness when showing a pass — one reason passes beat screenshots at the register.
- Camera scanners (most modern registers, all door readers) read any of the four without fuss.
- Ancient laser wands prefer 1D codes (Code 128) and hate dim screens. If a store's scanner predates smartphones, Code 128 + full brightness is your play.
- Character limits are enforced per format as you type in WalletKit (QR 2,953 / Aztec 3,832 / Code 128 2,000 / PDF417 1,850), so an unscannable overstuffed code can't happen by accident.
Test once, trust forever: after creating a pass, scan it with any free QR/barcode reader app. If your phone reads it, the register will. Thirty seconds now, zero checkout-line drama later.
All four formats, one editor
Scan 10 formats in, generate the right one out. Free to try on iPhone & iPad.
FAQ
My original card has an EAN or UPC barcode — what format should the pass use?
Code 128 with the same digits; visible number field as backup.
Why won't some laser scanners read my phone screen?
Old laser wands struggle with screens generally — max brightness helps; camera scanners don't care.
Which format holds the most data?
Aztec, then QR — both thousands of characters; plenty for any card number.