AAMVA Barcode Format Guide: Header, Subfiles and Data Elements
The American Association of Motor Vehicle Administrators (AAMVA) publishes the card design standard used by US and Canadian driver licenses and ID cards. The data is stored in a PDF417 barcode. This guide explains how that data is organised, which helps when you build or test software that reads it.
1. The compliance header
The data starts with a fixed header: a compliance indicator @, a data element separator, a record separator, a segment terminator, then the file type ANSI . After that come:
- The 6-digit Issuer Identification Number (IIN) of the issuing jurisdiction.
- The 2-digit AAMVA version number.
- The 2-digit jurisdiction version number.
- The 2-digit number of entries (subfiles) that follow.
2. Subfile designators
Each subfile has a designator giving its type (for example DL for driver license or ID for identification card), the offset where it starts and its length.
3. Common data element IDs
| ID | Meaning |
|---|---|
DAQ | Customer ID / license number |
DCS | Family (last) name |
DAC | First name |
DBB | Date of birth |
DBA | Expiration date |
DBD | Issue date |
DBC | Sex |
DAY | Eye colour |
DAG | Street address |
DAI | City |
DAJ | State or jurisdiction code |
DAK | Postal code |
DCF | Document discriminator |
DCG | Country |
Date formats and which elements are mandatory depend on the AAMVA version and the jurisdiction, so always check the standard version your target region uses.
4. Why structure matters for testing
Most parsing bugs come from wrong offsets, unexpected separators or missing mandatory elements. Testing with correctly structured sample barcodes lets you confirm that your scanner and parser handle valid input before you test edge cases.
Generated barcodes are for software testing and education only and must not be used to create or alter identity documents.