ID Scanning
Verify age and identity from a driver license
Read the PDF417 barcode on the back of North American driver licenses and ID cards, and get names, dates, address and an age check, all on the device.
JANE Q SAMPLE21+ verifiedNot expired
- Born
- 1990-01-31 (age 36)
- Expires
- 2028-01-31
- License
- D1234567 · CA
Features
AAMVA versions 1–10
Handles current and legacy name fields, US and Canadian date formats and ZIP+4.
Age checks built in
age, isUnder21, isUnder18 and isExpired are computed for you, with an injectable clock for tests.
Never leaves the phone
Parsing is pure code on the device, with no network calls and no image uploads.
Tuned viewfinder
A wide, line-style viewfinder fits the long PDF417 on the back of the card.
Every raw field
Jurisdiction-specific elements are kept in fields, for example fields.ZCA.
Same parser everywhere
parseAAMVA in JS, Swift, Kotlin, Python and C#.
For developers
A few lines of code
Drop in the pre-built component or build your own UI on the same engine.
Parsed fields
- Identity
- firstName, middleName, lastName, suffix, fullName, sex, documentNumber
- Dates
- dateOfBirth, issueDate, expiryDate (ISO), age, isExpired, isUnder21, isUnder18
- Address
- street, street2, city, state, postalCode, country
- Physical & license
- eyeColor, hairColor, height, weight, vehicleClass, restrictions, endorsements
import "qrgen-sdk/elements";
import { parseAAMVA } from "qrgen-sdk/parsers";
scanner.addEventListener("scan", (e) => {
const id = parseAAMVA(e.detail.barcode.data);
if (!id) return show("Not a driver license");
if (id.isExpired) return show("License expired");
show(id.isUnder21 ? "Under 21" : `21+ verified (age ${id.age})`);
});QRGenScannerView(options: .init(symbologies: ["pdf417"], mode: .single)) { barcodes in
if let id = QRGen.parseAAMVA(barcodes[0].data) {
print(id.fullName, id.isUnder21 ?? true)
}
}Use cases
Where teams use id scanning
- Age verification for alcohol, tobacco and cannabis
- Hotel and car rental check-in
- Visitor management
- KYC form prefill
- Event entry with ID checks
- Pharmacy pickups
Try id scanning now
Open the demo on your phone, or let your coding agent add it to your app.