Scanner Compatibility Matrix
Which scanners read which symbology, and where each type fails. Honest answers — the field-tested ones, not the spec sheet.
Tested April 2026. iPhone Camera = iOS 18.4 / Visual Look Up. Android Camera = Pixel 9 / Google Lens. "Industrial" = Honeywell Xenon Ultra / Zebra DS9908. "Banking" = country-specific bank apps (Swiss banking app for SwissQR, etc.).
QR-family (1D-equivalent: universal)
| Type | iPhone Camera | Android Camera | Industrial | Notes |
|---|
| QR Code | ✓ | ✓ | ✓ | Universal. The default for everything. |
| Micro QR | ✓ | ✓ | ✓ | Compact (≤35 chars). iOS reads from 18.0+. |
| rMQR | ~ | ~ | ✓ | Rectangular Micro QR (ISO/IEC 23941). Industrial scanners only — phones inconsistent. |
| GS1 Digital Link | ✓ | ✓ | ✓ | Standard QR with structured URL — scans like any URL. |
Other 2D symbologies
| Type | iPhone Camera | Android Camera | Industrial | Notes |
|---|
| Aztec | ✗ | ✗ | ✓ | Boarding passes, transit tickets. Phone cameras don't decode it. Use airline/transit app. |
| Data Matrix | ✗ | ✓ (Lens) | ✓ | Pharma, medical, automotive parts marking. Google Lens reads; Apple does not. |
| PDF417 | ✓ (limited) | ✓ | ✓ | iOS 17+ reads driver-license PDF417. Other PDF417 mileage varies. |
| AAMVA driver-license | ✓ (Wallet) | ✓ | ✓ | iOS 16+ recognises it for Apple Wallet ID. Otherwise needs a license-aware app. |
1D barcodes (retail / industrial)
| Type | iPhone Camera | Android Camera | Industrial | Notes |
|---|
| EAN-13 / UPC-A | ✓ | ✓ | ✓ | Retail standard. iOS recognises, opens product lookup. |
| EAN-8 / UPC-E | ✓ | ✓ | ✓ | Compact retail variants. |
| Code 128 | ✗ | ~ | ✓ | Shipping labels. Industrial scanners only — phone cameras inconsistent. |
| Code 39 / 93 / Codabar | ✗ | ~ | ✓ | Inventory, libraries, blood banks. Industrial-only realistically. |
| ITF-14 | ✗ | ✗ | ✓ | Shipping carton labels. Industrial scanners required. |
| VIN (Code 39) | ✗ | ✓ (some apps) | ✓ | Vehicle ID. Specialised apps only on phones. |
Payment QRs (banking-app only)
| Type | Camera apps | Native banking app | Notes |
|---|
| SwissQR (Swiss QR-bill) | ✗ | ✓ 🇨🇭 only | Standardised by SIX Group. Swiss banking apps only. |
| UPI (India) | ~ | ✓ 🇮🇳 | Google Pay, PhonePe, Paytm, BHIM. Camera apps usually open the right one. |
| PIX (Brazil) | ✗ | ✓ 🇧🇷 | Brazilian bank apps + Mercado Pago. |
| SEPA (EU credit transfer) | ✗ | ✓ 🇪🇺 | European bank apps that support EPC069-12. |
| PromptPay (Thailand) | ✗ | ✓ 🇹🇭 | Thai banking apps. |
| PayNow (Singapore) | ✗ | ✓ 🇸🇬 | Singapore banking apps + PayLah. |
| ZATCA e-invoice | ✗ | — | Saudi tax authority validation. Not for consumer scanning. |
| FPS (Hong Kong) | ✗ | ✓ 🇭🇰 | HK banking apps. |
| DuitNow (Malaysia) | ✗ | ✓ 🇲🇾 | Malaysian banking apps. |
| JPQR (Japan) | ✗ | ✓ 🇯🇵 | PayPay, LINE Pay, etc. |
| EMVCo merchant QR | ✗ | ✓ varies | Generic standard — depends on issuer support. |
| Crypto / Bitcoin / Lightning | ~ | ✓ wallet | Wallet apps (BlueWallet, Phoenix, etc.) read directly. |
Identity / security
| Type | Reader | Notes |
|---|
| TOTP / HOTP | Authenticator apps | Google Authenticator, 1Password, Authy, Bitwarden, Apple Passwords. |
| WiFi | iOS Camera ✓ / Android Camera ✓ | Both connect natively from the camera app. |
| vCard / MeCard | Both phone cameras ✓ | Offer "Add to Contacts." |
| SSH / WireGuard | App-specific | Termius, ServerCat, WireGuard app respectively. |
| OpenPGP | App-specific | OpenKeychain (Android), pgp-tools. |
| eSIM (LPA) | iOS Camera ✓ / Android Camera ✓ | Native cellular setup flow. |
The general rule
If your audience uses a phone camera, ship QR. Aztec, Data Matrix, and 1D codes are professional-only — generate them when you control the scanner (warehouse, factory, hospital). For retail products, EAN-13 / UPC-A are universal. For driver licenses, PDF417 is the only choice.
How we tested
Each entry was decoded with the named scanner against a reference payload generated by this tool. We re-test annually and after major iOS / Android camera releases. If you find a discrepancy, email hello@abundera.ai with your device + OS version and we'll re-verify.
Last verified: 2026-04-13.