Verify our privacy claims live, from your browser▾
These values are computed in your browser right now. No server round-trip. Click any row for a one-line explanation.
Outbound requests after page load…Expected: 0Everything runs in your browser, so no data ever leaves after the initial page load.
Third-party domains contacted…Expected: 0No analytics, no CDN fonts, no avatar services, no trackers, single origin only.
Cookies set…Expected: 0No session, no analytics, no preferences in cookies. Nothing to sync, nothing to leak.
localStorage keys…Only your saved QRs and preferencesSaved templates, history, and language preference. Inspected in Application → Local Storage.
Service worker status…Offline-readyStatic assets cached for offline use. You can disable your network and the generator still works.
Network status…Offline proof: turn off WiFi, click Generate. Still works.The simplest proof. If this were secretly a client for a server, offline would break it.
This symbology renders monochrome with foreground and background colours only. Templates, dot/eye shapes, gradients, frames, and centre logos are QR-only features and are hidden here.
Show 30 more templates
Save a style with the button above to keep your favourites here.
#000000
#FFFFFF
#8B5CF6
Upload an image to use as your frame.
Drag the QR to position, scroll or pinch to zoom, use the slider to rotate.
Show 108 more icons
No icons match your search.
Renders behind the QR at adjustable opacity. Auto-forces EC=H so the QR still scans through the photo.
Batch Generation
Upload a CSV to generate up to 500 QR codes in a single batch. Each row becomes its own QR, pick a template or override 21 properties on a per-row basis: colors, frames, dot/eye/eyeball styles, gradients, transparency, size, error correction, format, built-in logo, and more.
21 columns: type, data, filename, frametext, frame, template, fgcolor, bgcolor, size, ec, dotstyle, eyestyle, format, logo, gradient, g2, gtype, gangle, transparent, eyeball, eyecolor. Only type and data are required. Use | to separate fields inside data (e.g. ssid|password|WPA).
All 125+ QR/barcode types supported, including URL, WiFi, vCard, TOTP, Swiss QR-bill, PIX, PromptPay, ZATCA, PayNow, Bitcoin + Lightning, and more. Download the sample CSV to see every column, all 50 templates, 22 frame styles, and 375 built-in logo icons in action.
1. Download the sample CSV · 2. Edit it in Google Sheets, Excel, Numbers, or any text editor · 3. Upload it here
Your link is encoded inside the QR itself, no server in the middle, nothing to expire, nothing to renew. Print it once, it keeps working.
Save the entire QR (type, all field values, style, frame, logo, business card design) as a single .qr.json file. Load it later to recreate everything in one click.
Enter content to generate your QR code
Encoded payload
Recent
You're editing an existing Pro code. Click "Update Pro code" below to save your changes back to Pro.
Need to change the destination after it's printed?
Same no-lock-in approach as the free tool. Pro lets you change the destination after printing and see who's scanning (country and device only, never IP or cookies). Every dynamic code ships with a static backup, so there's nothing we can turn off. From $9/month billed annually.
Use for legitimate purposes only: AAMVA parser testing, kiosk and age-gate development, ID-scanner integration testing, accessibility tools, and demoing AAMVA workflows. Producing a counterfeit government ID is identity fraud and is prosecuted as a felony in every US state. Use real data only when you own the source license, or use synthetic data clearly marked as such.
What's the AAMVA Card Design Standard?
The American Association of Motor Vehicle Administrators (AAMVA) publishes the Card Design Standard that every US state, the District of Columbia, and the Canadian provinces use to encode driver-license and ID-card data on the back of the card as a PDF417 barcode. The standard defines a header (compliance indicator + ANSI prefix + Issuer Identification Number + version + jurisdiction version + entry count), one or more subfile designators (DL/ID + offset + length), and a subfile body of three-letter element codes followed by their values.
The current version is the 2020 edition (compliance indicator @, ANSI version 10). Most state DMVs are on version 8 or higher.
What this generator does
Captures the standard set of AAMVA element codes via a friendly form (DCS family name, DAC first name, DAD middle, DAQ license number, DAG/DAI/DAJ/DAK address, DBB date of birth, DBA expiry, DBD issue date, DBC sex, DAU height, DAY eyes, DCA class, DCB restrictions, DCD endorsements, DCG country).
Builds an AAMVA-compliant payload string with the correct header structure, subfile designator, and element ordering.
Encodes it as a PDF417 barcode via bwip-js (lazy-loaded; only ~1 MB the first time you pick a non-QR type).
Lets you scan the result back via this site's scanner, the AAMVA parser detects the @
ANSI header and renders a structured "License Preview" card showing the decoded fields.
What this generator does NOT do
Does not produce a card that any state DMV would consider authentic. Real licenses include holographic overlays, ghost photos, microprinting, UV/IR features, and a tactile signature panel, none of which a printed barcode can substitute for.
Does not compute a real Document Discriminator (DCF), DMVs derive that from internal cardstock serials. We emit a placeholder.
Does not sign or hash the payload, AAMVA does not require digital signatures.
Legitimate use cases
Kiosk development: testing self-service kiosks (DMV check-in, hotel check-in, rental-car pickup) without a real license in hand.
Age-gate development: building bar / liquor-store / cannabis-dispensary scanners. Use synthetic data tagged as test-only.
AAMVA parser unit tests: generating fixtures with edge cases (missing fields, longer-than-spec values, unicode in name fields, etc.).
Accessibility tooling: reading DLs for users who can't see them.
ID-scanner SDK QA: verifying a 3rd-party SDK behaves correctly across jurisdictions.
The 51 jurisdictions
AAMVA assigns a 6-digit Issuer Identification Number (IIN) to each jurisdiction. We ship the standard set: all 50 US states, DC, and the Canadian provinces. Selecting a state in the form sets the IIN automatically (e.g. California = 636014, Texas = 636015, New York = 636001).
Worried about a driver-license PDF417 you didn't make?
Our sister product check.qr.abundera.ai inspects driver-license PDF417s before you tap. See check.qr.abundera.ai/standards/aamva-driver-license/ for the format spec, the threat model, and what to verify before scanning. Free, no signup, fully client-side decode.
Compliance checklist
Only DMVs, DOTs, and equivalent issuing authorities are authorized to produce AAMVA-format driver's license barcodes encoding real identity data.
Use this generator exclusively for: parser QA with synthetic data, development against the AAMVA spec, age-verification or kiosk SDK testing, training materials, or authorized-issuer workflows.
Use obviously-synthetic identity data (JOHN TEST, JANE SAMPLE, DOB in the future or before 1900) so the payload cannot be mistaken for a real person.
Do not apply the generated barcode to a physical card stock, overlay, or laminated sheet that could be mistaken for an authentic license.
In the United States, knowingly producing a counterfeit driver's license is a federal offense under 18 U.S.C. § 1028 with up to 15 years imprisonment. State forgery statutes add parallel felony charges.
When not to use this
Do not encode any real person's identity into an AAMVA barcode. Do not use a generated barcode to bypass age or identity verification anywhere, ever. If your use case is not (a) parser QA with synthetic data, (b) development against the AAMVA spec, or (c) an authorized-issuer workflow, stop. Presenting a counterfeit ID is a felony.
Also by Abundera
E-signatures that hold up in court
Abundera Sign goes beyond basic e-signatures. Every document gets cryptographic proof, independent verification, and a tamper-evident evidence package.
Auto-generated court-ready evidence packages
Personal Document Seal, detects tampering instantly
Anchored to 5 independent systems, no single point of failure
It will parse as AAMVA-compliant on any standards-following reader. It will not pass a real DMV's authenticity checks because real licenses also rely on physical security features (holograms, microprinting, UV/IR layers) that a printed barcode can't substitute for.
Is generating my own driver's license illegal?
Generating a barcode that parses like a driver's license is not illegal. Presenting a counterfeit ID to a government official, retailer, or bartender as if it were authentic is fraud and a felony in every US state. Use this tool only for testing, kiosk dev, and other legitimate purposes.
Why does my parsed barcode show different fields than my real license?
DMVs may include jurisdiction-specific element codes (e.g. social-security suffix, organ-donor flag, veteran indicator) beyond the AAMVA core set. Our generator covers the universally-required fields; states like California and Texas add ZF*-prefixed proprietary codes that we don't currently expose.
What's the difference between AAMVA versions?
Version 8 (2013) added the compliance header, version 9 (2016) clarified DCF format, version 10 (2020) added document image elements. We emit a version-10 header but the payload is backwards-compatible with parsers down to v8.
Can I parse a real license I scanned with my phone?
Yes — the scanner here detects any AAMVA payload and renders the License Preview. Privacy: parsing happens entirely in your browser, never sent anywhere. You should still trust the source of any DL data you scan.
Why does the printed barcode look slightly different from my actual license?
DMV cardstock printers run at 600 DPI with specific aspect-ratio tuning. We render at the size you pick. The encoded data is identical; only the visual proportions differ. To approximate a real card, set Size to 1050 px wide and use the PDF417 column count from the form.
Does this generate ID-card barcodes too (non-driver IDs)?
Yes — pick Identification Card in the Document Type dropdown. The subfile designator changes from DL to ID; everything else is the same.