Homeโ€บValidatorsโ€บSecurityโ€บAAMVA Barcode Validator

AAMVA Barcode Validator

Security

Validate the AAMVA 2D barcode data from a US/Canada driver's licence. Checks the PDF417 barcode header, subfile structure, and mandatory data elements. Free, client-side.

What is a AAMVA?

The AAMVA Barcode Validator checks the raw data string encoded in the PDF417 2D barcode found on the back of every US state and Canadian provincial driver's licence and government-issued ID card. AAMVA โ€” the American Association of Motor Vehicle Administrators โ€” publishes the specification that all North American jurisdictions follow when encoding identity data into these barcodes, and this validator confirms that a given data string conforms to that specification.

Every US driver's licence issued since the early 2000s carries a PDF417 barcode that stores the cardholder's full name, date of birth, address, licence number, eye colour, height, weight, and jurisdiction metadata in a compact, machine-readable format. When a bartender scans your licence, when a TSA officer checks your ID, or when a rental car company verifies your age, their system is decoding this exact AAMVA data structure.

The validator accepts the raw string output from a PDF417 scanner and checks the compliance indicator, file type indicator (ANSI), issuer identification number, AAMVA version number, jurisdiction version, subfile designator (DL or ID), and the presence of mandatory data elements defined by the AAMVA DL/ID Card Design Standard. Validation runs entirely in your browser โ€” no data leaves your device.

This is a format and structure validator, not a live government lookup. Passing validation means the barcode data is correctly formed; it does not confirm the licence is genuine, currently active, or belongs to the named person. If you are also checking the licence number format for a specific US state, the US Driver's License Validator covers pattern matching for all 50 states. For validating FCC wireless device authorisation IDs, see the FCC ID Validator.

How to use this AAMVA calculator

  1. Obtain the raw barcode data by scanning the PDF417 barcode on the back of a US or Canadian driver's licence with a PDF417-capable scanner or scanning SDK. The output should be a multi-line string starting with @.

  2. Paste the full raw scan output into the AAMVA Barcode Data textarea. Ensure you paste the complete string โ€” the typical length is 200 to 800 characters. Partial pastes are the most common cause of validation failures.

  3. Click Validate to run the structural check. The validator processes the string client-side instantly.

  4. Review the Result field โ€” a green Valid badge confirms the barcode string is structurally compliant with the AAMVA DL/ID Card Design Standard. A red Invalid badge indicates a structural problem.

  5. Check the details panel (shown on failure) for a breakdown of which specific checks failed โ€” header format, subfile structure, or missing mandatory data elements. Use this information to pinpoint whether the issue is a scanner configuration problem, a truncated string, or a non-AAMVA document.

  6. Use the result to decide next steps: if the barcode is structurally valid, proceed to parse the individual data elements using your application's AAMVA parsing library. If invalid, diagnose the root cause before attempting any downstream parsing.

Formula & Methodology

The AAMVA DL/ID Card Design Standard defines a precise byte-level format for the PDF417 barcode payload. The validator checks each structural layer in sequence.

Header format (mandatory):
@ LF RS CR ANSI [IIN:6d] [AAMVA version:2d] [jurisdiction version:2d] [num entries:2d]
Where:
- @ = compliance indicator (0x40)
- LF = line feed (0x0A)
- RS = record separator (0x1E)
- CR = carriage return (0x0D)
- ANSI  = file type identifier (literal, 5 chars including trailing space)
- IIN = 6-digit issuer identification number
- AAMVA version = 2-digit version (01โ€“10 for versions 1 through 10)
- jurisdiction version = 2-digit jurisdiction extension version
- num entries = 2-digit count of subfile entries

Subfile designator format:
[type:2c] [offset:4d] [length:4d]
Where type is DL or ID, offset is the byte position of the subfile start, and length is the byte count.

Data element format (within the DL/ID subfile):
Each element is a 3-character data element identifier (e.g., DAC, DCS, DBB) followed by the field value, terminated by a carriage return.

Valid example:
@  ANSI 636001090002DL00410278ZC03190024DLDAQD12345678 DCSSMITH DACJOHN DBB19800101 DBC1 DAG123 MAIN ST DAIANYT OWN DAJCA DAK902100000 DBA20280101 DCF83D9BN217QO
This string passes all checks: correct compliance indicator sequence, valid ANSI header, numeric IIN (636001 = California), AAMVA version 09, jurisdiction version 00, two subfile entries, DL subfile with all mandatory elements present.

Invalid example:
ANSI 636001090002DLDAQD12345678 DCSSMITH
This fails because the compliance indicator sequence (@\n\x1e\r) is missing, the subfile designator block is absent, and multiple mandatory data elements (DBB, DAC, DBC, DAG, DAI, DAJ, DAK, DBA, DCF) are not present.

Frequently Asked Questions

AAMVA stands for the American Association of Motor Vehicle Administrators, the standards body that defines the data format encoded in the 2D PDF417 barcode on US and Canadian driver's licences. The barcode stores structured identity information including full name, date of birth, address, licence number, physical descriptors, and jurisdiction metadata. Each state or province encodes this data using the AAMVA standard, ensuring interoperability across agencies and border points.
The validator checks the structural integrity of the raw barcode data string: the compliance indicator (@), data element separator, record separator, file type indicator (ANSI), issuer identification number (IIN), AAMVA version number, jurisdiction version, and the presence of required DL subfile data elements. It confirms the header is properly formed and that mandatory fields such as DBA (expiry date), DBB (date of birth), DAC (first name), DCS (last name), DAG (address), DAJ (city), DAK (postal code), and DBC (sex) are present. The validator does not query any government database and cannot confirm whether the licence is real, active, or revoked.
No. This is a format validator only โ€” it confirms that the barcode data string follows the AAMVA structural specification. A barcode that passes validation means the data is well-formed; it does not mean the licence belongs to a real person, is currently active, or has not been suspended. Only a government DMV database query can confirm active status.
No. All validation runs entirely in your browser using client-side JavaScript. The barcode string you paste is never transmitted to any server, logged, or stored. You can safely validate sensitive licence data without privacy risk.
PDF417 is a stacked linear 2D barcode format capable of storing hundreds of characters in a compact area. Driver's licences use it because it can hold the full set of AAMVA identity data elements in a machine-readable form that survives physical wear on a wallet card. PDF417 was adopted by AAMVA as the primary encoding format for driver's licences beginning with the DL/ID Card Design Standard in the 1990s, and all US states and Canadian provinces now use it.
The IIN is a six-digit number embedded in the barcode header that identifies which jurisdiction issued the licence. For example, 636001 identifies California and 604426 identifies Ontario. The IIN is used by scanning systems to apply the correct jurisdiction-specific parsing rules and to verify that the subfile data is consistent with the declared issuer. The AAMVA Barcode Validator checks that the IIN field is present and numeric, but does not validate it against the official AAMVA IIN registry.
The validator checks the AAMVA version number field present in the header and validates the data structure according to the core mandatory elements common across AAMVA versions 1 through 10 (covering all licences issued since the early 2000s). Jurisdiction-specific optional subfiles (ZC for California, ZV for Virginia, etc.) are identified by their subfile designator but their internal fields are not fully validated, as these vary by state.
You need a PDF417 barcode scanner โ€” either a dedicated hardware scanner (commonly used at liquor stores, dispensaries, and car rental counters) or a barcode scanning app on a smartphone that outputs raw string data. Consumer QR scanner apps typically will not work because they are optimised for QR codes, not PDF417. Some developer-focused scanning SDKs and kiosk software expose the raw scan output that you can copy and paste into this validator.
First confirm that the full raw scan output was copied without truncation โ€” PDF417 data strings are typically 200 to 800 characters long and incomplete pastes are the most common cause of failure. If the full string is present, the barcode header or subfile structure does not conform to the AAMVA specification, which may indicate a malformed barcode, a proprietary format variation, a non-AAMVA document, or a corrupted card surface affecting the encoded data.
The AAMVA standard is used by all 50 US states, the District of Columbia, and Canadian provinces and territories. Mexico issues driver's licences but does not use the AAMVA barcode standard. Other countries โ€” including India, the UK, and EU member states โ€” use their own national identity document formats that are entirely different from AAMVA. This validator is designed exclusively for AAMVA-compliant US and Canadian driver's licences.
A US passport book contains a Machine Readable Zone (MRZ) โ€” two lines of text at the bottom of the photo page โ€” rather than a 2D barcode, and follows the ICAO Doc 9303 standard. US passport cards use a RFID chip and do not have a 2D barcode. The AAMVA standard and PDF417 barcode are specific to state-issued driver's licences and ID cards. To check a US passport number format, use the [US Passport Number Validator](/us-passport-validator/).
This validator confirms that the barcode data is structurally valid and that the date-of-birth field (DBB) is present in the expected format. It is appropriate for confirming a barcode is well-formed before attempting to parse the DOB for age calculation. However, building a compliant age verification system requires additional legal, privacy, and security considerations beyond format validation โ€” including verifying the licence is genuine and not expired.
Also known as
AAMVA barcode checkdriver licence barcodeDL barcode validatorPDF417 licenceUS DL barcode