AAMVA Barcode Validator
SecurityValidate 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
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
@.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.
Click Validate to run the structural check. The validator processes the string client-side instantly.
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.
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.
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]WheretypeisDLorID, 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 DCF83D9BN217QOThis 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 DCSSMITHThis 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