Skip to content
barcoder

Standards/aamva-dl

AAMVA DL/ID

TypePDF417 Data Format
PrimaryCAUS
Completeness84%high

Overview

The AAMVA DL/ID Card Design Standard is the North American standard, published by the American Association of Motor Vehicle Administrators (AAMVA), that governs the design and machine-readable encoding of driver licenses and identification cards. Its Annex D defines the mandatory pdf417 two-dimensional bar code carried on the back of essentially every U.S. and Canadian driver license / ID card, mapping the cardholder's data elements onto that barcode [1].

The data format is a flat, cleartext, length-and-separator-delimited record: a fixed header that identifies the symbol as AAMVA-compliant, one or more "subfile" designators ("DL", "ID", "EN"), and a list of three-letter element identifiers (e.g. DCS = family name, DAQ = customer ID number) each prefacing its value [1]. The carrier symbology is mandated to be exactly pdf417 (per ISO/IEC 15438) — the Compact, Micro and Macro PDF417 variants are explicitly forbidden [1].

History

The standard began as the AAMVA DL/ID-2000 national standard for the driver license / identification card; barcodes printed before that standard's adoption are designated version "0"/"00" [1]. Each subsequent edition increments the AAMVA Version Number field encoded in the barcode header [1]:

AAMVA version Edition Date
01 AAMVA DL/ID-2000 2000
02 Card Design Specification v1.0 09-2003
03 Card Design Specification v2.0 03-2005
04 Card Design Standard v1.0 07-2009
05 Card Design Standard v1.0 07-2010
06 Card Design Standard v1.0 06-2012*
07 Card Design Standard v1.0 06-2012
08 Card Design Standard v1.0 08-2013
09 Card Design Standard v1.0 09-2016
10 Card Design Standard (2020) 2020

(*The 2020 standard lists version "06" against the dated 07-2011 edition and "07" against 06-2012 [1].) The standard continues to be revised; a 2025 edition has been published [2]. Independent parser documentation lists supported AAMVA versions 2000, 2003, 2005, 2009, 2010, 2011, 2012, 2013 and 2016, matching the header version mapping [3].

Technical specification

Carrier. The minimum mandatory machine-readable technology is the pdf417 symbology (ISO/IEC 15438). Compact PDF417, MicroPDF417 and MacroPDF417 must not be used. The symbol uses an X-dimension between 0.170 mm and 0.380 mm, a minimum error-correction level of 3 (level 5 recommended where space allows), the ISO 8859-1 (Latin-1) 256-character set, must sit in "Zone V" of the card, oriented with bars perpendicular to the card's bottom edge (≤ ±5° skew), within a maximum 75.565 mm × 38.1 mm area [1].

File header (fixed). Every compliant symbol begins with a fixed header [1]:

Field Bytes Value
Compliance Indicator 1 @ (0x40)
Data Element Separator 1 LF (0x0A)
Record Separator 1 RS (0x1E)
Segment Terminator 1 CR (0x0D)
File Type 5 ANSI␣ (ANSI + trailing space)
Issuer Identification Number (IIN) 6 identifies the issuing jurisdiction
AAMVA Version Number 2 00–99, per table above
Jurisdiction Version Number 2 00–99, jurisdiction's own revision
Number of Entries 2 count of subfile designators that follow

Subfile designator (fixed). After the header come one or more subfile designators. Each is Subfile Type (2 chars: DL, ID, or EN for enhanced DL; jurisdiction-specific subfiles begin with Z + the jurisdiction's first letter, e.g. ZC for California/Colorado), a 4-digit Offset (bytes from start of file), and a 4-digit Length (subfile length in bytes, including the two-character type and the trailing segment terminator) [1].

Data elements (Table D.3, mandatory). Within a subfile each value is prefixed by its three-letter Element ID; a Data Element Separator (LF) both terminates a field and signals the next field follows. The minimum mandatory elements are [1]:

ID Element Notes
DCA Jurisdiction-specific vehicle class V6ANS, DL only
DCB Jurisdiction-specific restriction codes V12ANS, DL only
DCD Jurisdiction-specific endorsement codes V5ANS, DL only
DBA Document Expiration Date F8N (MMDDCCYY US / CCYYMMDD CA)
DCS Customer Family Name (surname) V40ANS
DAC Customer First Name V40ANS
DAD Customer Middle Name(s) V40ANS
DBD Document Issue Date F8N
DBB Date of Birth F8N
DBC Sex F1N (1=male, 2=female, 9=not specified)
DAY Eye Color F3A (ANSI D-20 codes)
DAU Height F6ANS (e.g. 073 in or 181 cm)
DAG Address – Street 1 V35ANS
DAI Address – City V20ANS
DAJ Address – Jurisdiction (state) F2A
DAK Address – Postal Code F11ANS
DAQ Customer ID Number V25ANS (the license/ID number)
DCF Document Discriminator V25ANS (uniquely IDs this physical document)
DCG Country F3A (USA / CAN)
DDE Family name truncation F1A (T/N/U)
DDF First name truncation F1A (T/N/U)
DDG Middle name truncation F1A (T/N/U)

Mandatory elements with no value are encoded with NONE; if data is unavailable, unavl is encoded [1]. Optional elements (Table D.4) include DAH (street line 2) and many others. All mandatory and optional data must be unencrypted; a jurisdiction may encrypt only its own jurisdiction-specific subfile [1].

Use cases

  • Identity and age verification — bars, retailers and venues scan the pdf417 to read date of birth and name; the standard explicitly cites identity and age verification as core functions [1].
  • Law enforcement — the standard "primarily seeks to support the needs of the law-enforcement community" during traffic stops and other interactions with DL/ID documents [1].
  • Administrative automation and address verification — automating data entry and confirming address details [1].
  • Account opening / KYC — third-party software parses the barcode to auto-fill identity fields.

Implementations

  • c0shea/IdParser — C#, MIT. Parses pdf417 AAMVA-compliant driver's licenses and ID cards. ~106 stars; last pushed 2023 [4].
  • benhovinga/aamva_barcode_library — Python, MIT. Parses the barcode data on a North American DL/ID, decomposing it into file header, subfiles and subfile elements per AAMVA Annex D. ~16 stars; last pushed 2025 [5].
  • Commercial SDKs — e.g. Dynamsoft's Code Parser documents an AAMVA_DL_ID (pdf417) code type and an AAMVA_DL_ID_WITH_MAG_STRIPE variant, exposing the parsed element fields [3].

Comparison

Versus iata-bcbp: both are flat cleartext formats carried in pdf417, but AAMVA mandates a single symbology (pdf417 only, no Compact/Micro/Macro and no matrix codes), whereas BCBP permits four symbologies [1]. AAMVA uses named three-letter element IDs with separators (self-describing), whereas BCBP uses fixed-position length-delimited fields.

Versus the mobile-driving-licence (mDL, ISO/IEC 18013-5): the AAMVA pdf417 is the physical-card incarnation of the driver license — cleartext, no selective disclosure, fully revealed on every scan — while the mDL is the digital incarnation, an mdoc carrying signed, selectively-disclosable attributes engaged over a QR/NFC/BLE channel [1]. AAMVA also publishes the companion mDL Implementation Guidelines, so the two coexist: the pdf417 standard governs the plastic card, mDL governs the phone [1].

Fun facts

  • The barcode payload is deliberately unencrypted, so any scanner — including off-the-shelf phone apps — can read a person's full name, address and date of birth straight off the back of a U.S. or Canadian license [1].
  • Jurisdiction-specific subfiles are tagged by the first letter of the jurisdiction's name, which creates collisions: ZC could be California, Colorado or Connecticut, so parsers must disambiguate using the IIN or address [1].

Status

Active and near-universal in North America. The pdf417 barcode is mandatory on compliant U.S. and Canadian DL/ID cards, and the standard is actively maintained — the 2020 edition (AAMVA version 10) is widely deployed and a 2025 edition has been published [1, 2]. The companion mDL work (see mobile-driving-licence) is rolling out alongside, not replacing, the physical-card barcode.

Sources

  1. AAMVA DL/ID Card Design Standard (2020) — AAMVA, 2020
  2. AAMVA DL/ID Card Design Standard (2025) — AAMVA, 2025
  3. North America DL/ID — Supported Code Types — Dynamsoft
  4. IdParser — Parses PDF417 AAMVA-compliant driver's licenses and ID cards — c0shea (GitHub), 2023
  5. aamva_barcode_library — benhovinga (GitHub), 2025

Deployments

No country reports mention this standard by name.

source · docs/standards/aamva-dl/index.md