Last updated: 11/17/2016

Our DLIDLib assembly parses and normalizes driver's license data from the PDF-417 2D bar code or magnetic stripe on most US and Canadian driver's licenses and state ID cards, plus military IDs as well as travel documents. It is not tied to any particular hardware device, and is therefore compatible with virtually any device that can read the magnetic stripe or bar code data.


  • Drivers Licenses and State ID cards
    • Magnetic Stripe version 1 (the current standard) support
    • PDF-417 2D bar code versions 1 through 8 (spec 2000 through 2013 - the most current) support
  • Military ID cards (Sponsor and Dependent)
    • Teslin versions 1, 2, and 3
    • CAC (Common Access Card)
  • Travel Documents issued in compliance with the ICAO standard (US, Canadian, many others)
    • Machine-Readable Passports
    • Passport Cards
    • Size A and B Visas
    • Type 1 and 2 Travel Documents
  • Normalization of returned data:
    • Name broken down into First, Middle, Last, Prefix, Suffix, etc.
    • Address broken down into Address, City, State, Zip
    • Gender, hair/eye color, height, weight all returned in normalized units (including both metric and imperial English)
  • Enhanced validation to detect counterfeiting:
    • Verifies data conforms to state-specific guidelines
      • Validates license / ID number scheme for the following jurisdictions:
        • Florida
        • Illinois
        • Maryland
        • Michigan
        • Minnesota (Issued before Dec '04 - new system is not coded)
        • New Hampshire
        • New Jersey 1
        • Washington
        • Wisconsin
        • Ontario
        • Quebec
      • Validation accounts for slightly different than expected license / ID numbers:
        • Numbers that contain variations to prevent duplicates when multiple people have similar or identical information
    • Recommends specific manual visual checks to make


  • Age verification (night clubs, bars/restaurants, adult stores)
  • Identity confirmation (identify building residents or employees, people on V.I.P. guest lists, state agency client identity confirmation)
  • Compare license info with credit/debit cardholder name for more secure purchases and fewer charge-backs
  • Reducing data entry errors when entering an individual's name, address, etc.


Performance is, of course, based on the system configuration and environment. During in-house testing against a database of sample data on our development machine, we have observed the following results (as of version 0.6, 9/13/2010):

  • 64,512+ licenses/IDs parsed per second
  • 16,474+ licenses/IDs parsed with enhanced validation per second

This performance level makes the library suitable for both client-side parsing, as well as server-based applications.

Availability: A 30-day evaluation version of this assembly is available upon request. This evaluation will not support being run in a server environment such as ASP or a Web Service - if you specifically need to evaluate the parser in that environment, we'll be happy to provide a server evaluation license.

Documentation: Compiled help file is available along with the evaluation version or purchased edition.

Support: Clients who purchase a license have access to a dedicated support forum, as well as a bug / issue tracker to report or monitor progress on issues and feature requests.

1 New Jersey validation support will be finalized shortly.

DLIDLib supports any jurisdictional format that adheres closely to the published AAMVA specification. However, not all jurisdictions do, and there may be some deviations that have not been addressed yet in the library. We are continuously updating the parser as new jurisdictions implement the AAMVA standard and as jurisdictions make changes to their formats. If you encounter a license that does not parse correctly, please support@blueninjasoftware.com. We have a secure, privacy-protected tool for reading these cards to decipher format deviations without exposing sensitive personal data. When such issues are reported,the parser is usually updated within 24-48 hours.

The following tables identify all recognized jurisdictions and formats in those jurisdictions that we support, and indicates which of them we have specifically tested or received confirmation of accurate parsing from our clients. Note that our software is in use in other areas as well, with no reported parsing problems.

Jump to supported country: United States, Canada, Mexico

United States and U.S. Territories

Encryption Notes:

  • North Carolina can be fully decrypted by our Decryption Add-On.
  • Georgia licenses issued through late 2009 are encrypted. Georgia can be decrypted by obtaining a license and decryption kit directly from the state of Georgia. The DLIDLib parser has a mechanism to connect to that decryption algorithm. Licenses issued from 2010 onward are not encrypted, and do not require the decryption add-on to be read.
  • Illinois has some fields encrypted, but the following are currently readable (without requiring the Decryption Add-On):
    • License number
    • Expiration date
    • Date of birth



Support for Mexico IDs is being implemented for an upcoming release. This also includes the new Consular ID cards (Matrícula Consular).

The DLIDLib parser is available in several editions. If you have additional needs or requirements, please contact us so that we may address them for you. All versions of the parser include:

  • Non-expiring usage - the parser license does not expire.
  • Free technical support for 1 year
  • Free maintenance updates within the same major version of the parser for 1 year
    • Includes updates to accommodate new or changed jurisdiction-specific formats

Single Edition

This edition allows the parser to be used on a single PC. This is designed for smaller single-site businesses using the parser themselves, rather than integrating it into a product line - for example, a night club using it on a single PC at the entrance for age verification.

Limitations: The Single Edition license is locked to a specific PC by means of a hardware configuration "fingerprint". Also, it will not operate in an ASP / web service environment.

Product Edition

This edition allows the parser to be used on any number of copies of a specific product line. There are no cumbersome hardware configuration "fingerprints" or registration codes to deal with on a per-PC basis. The license info is embedded into your application itself, and requires no effort or interaction from your customers.

Limitations: The Product Edition license is locked to a specific company name and product / application name. If you have 2 or 3 separate product lines using the parser, each requires a separate license. Also, it will not operate in an ASP / web service environment.

Server Edition

This edition allows the parser to be used in a server environment such as ASP or a web service. This allows a single server application to service any number of remote client products, and is ideal for OLTP applications.

Performance: Our internal testing yields a result of over 8,5001 IDs parsed per second. Clients are welcome to request a 30-day evaluation license to test the parser's performance in their own environment.

Limitations: The Server Edition license is locked to a specific PC by means of a hardware configuration "fingerprint", as well as a specific company name and product / application name. Note that a single server application can serve multiple client applications.

Corporate Edition

An extension of the Product Edition, this allows the parser to be used by any product line by your company. There are no cumbersome hardware configuration "fingerprints" or registration codes to deal with on a per-PC basis. The license info is embedded into your applications themselves, and requires no effort or interaction from your customers.

In cases where your company has or anticipates numerous product lines that use the parser, this edition will cap the costs of multiple Product Edition licenses. Furthermore, the Corporate Edition includes the features of the Server Edition, and can be used in a server environment such as ASP or a web service.

Limitations: The Product Edition license is locked only to a specific company name.

Pricing & Feature Chart

Edition Locked to
Specific PC
Locked to
Specific Application
Locked to
Specific Company
Supports ASP &
Web Services
Free Updates
for 1 year

Updates & Support
Contracts Available

Single Edition

Product Edition
Server Edition
* $3,499
Corporate Edition


* While the Server license is locked to a specific application, the server application can potentially serve multiple client applications.

Compact Framework Add-On

This extends your license to include the Compact Framework version of our parser, for use on hand-held devices running Windows CE or Windows Mobile.


  • Microsoft .NET Compact Framework v3.5

Cost: This add-on cost is 30% of the selected license price.

Validation and Decryption Add-Ons

The extended validation and decryption capabilities can be added to the parser license, as per the below pricing. Validation performs additional checks on the parsed license data to help detect counterfeiting. Some of the capabilities of the validator include:

  • Verifies data conforms to state-specific guidelines
    • Validates license / ID number scheme for the following jurisdictions:
      • Florida
      • Illinois
      • Maryland
      • Michigan
      • Minnesota (Issued before Dec '04 - new system is not coded)
      • New Hampshire
      • New Jersey 3
      • Washington
      • Wisconsin
      • Ontario
    • Validation accounts for slightly different than expected license / ID numbers:
      • Numbers that contain variations to prevent duplicates when multiple people have similar or identical information
  • Recommends specific manual visual checks to make

The decryption capabilities include the following:

  • Full decryption of North Carolina licenses
  • Pass-through support for decrypting Georgia licenses2
  • Decryption of encrypted data elements of partially-encrypted licenses:
    • Illinois (coming soon)
Edition Validation
Add-On Price
Add-On Price
Both Add-Ons
(~20% Savings)
Single Edition $449 $329 $599
Product Edition $899 $549 $1,149
Server Edition $1,099 $649 $1,349
Corporate Edition $1,799 $999 $2,199

Library Updates

The library is updated as new formats emerge, and as capabilities are added or enhanced. As mentioned, clients are entitled for any updates to the product for 1 year after your purchase. Updates can be applied by simply replacing the DLL - there is no need to recompile your application. Beyond that, a 1-year renewal costs 20% of the original product price.

IMPORTANT: The library will never "deactivate" due to lack of a renewal, it will continue to operate indefinitely with any updated version of the parser released within a year of the license issue date. The renewal simply extends your license to include another year of updates to any new formats, as states periodically update their data format.

Support Contracts

If you are interested in a priority support contract, we offer yearly plans for 15% of your license price. This includes:

  • Assistance integrating the parser into your application.
  • Technical support for any questions/issues that arise with the parser or its use.
  • Phone, email and IM support:
    • During regular business hours, with a 2-hour maximum response time.
    • Outside normal business hours, with a 4-hour maximum response time.

If you have additional requirements or needs and are interested in discussing a custom price quote for your business scenario, please contact us. We also offer custom development services, and can integrate DLIDLib into your existing product, or design a new DLIDLib-enabled product for you.

1 This performance is based on internal testing against our entire collection of sample data from all tested jurisdictions, using v0.3.1 of the parser, as of May 2009. This should provide a very reliable statistical sample that covers all known formats, versions, etc. Parsing times in your application will vary depending on factors such as hardware configuration, software environment, available system resources, etc.

2 Georgia licenses issued through late 2009 are encrypted. Decryption requires a license from the state of Georgia - contact us for additional requirements. Licenses issued from 2010 onward are not encrypted, and do not require the decryption add-on to be read.

3 New Jersey validation support will be finalized shortly.

What scanner devices (magnetic stripe or barcode) is DLIDLib compatible with?

DLIDLib directly reads from no scanner, and is compatible with any scanner. The parser is device-agnostic, and will parse data from any source. It is not tied to any specific device, and can be used without an attached scanner, such as in a server-based environment. That said, the developer must read from the device and pass the data to DLIDLib.

We do have a plugin-based framework to read from several specific scanner devices, and this can be provided along with the parser to help further application development if desired. Currently, this supports numerous RS-232 serial, USB/HID, and Keyboard wedge devices from IDTech, MagTek, Symbol, and E-Seek.

What formats can DLIDLib read?

The parser reads the data from the 2- or 3-track magnetic stripe data, or from the PDF417, Micro-PDF417, or Compact PDF417 barcode on state non-driver IDs, driver licenses, permits, and similarly compliant cards, as called for by the AAMVA specification. However, the parser does not decode the barcode image itself, but reads the decoded data from the barcode. Therefore, the parser will read properly formatted data from other sources as well. This enables it to be used in a server-based environment, as well as to read data "drop files" created by some hardware devices or image decoders.

Can DLIDLib read scanned image files?

Not directly. Barcode scanners typically decode the data into a stream of bytes or characters, which is what DLIDLib reads. If your application is optically scanning the barcodes into image files, then a 3rd-party library to locate and decode the barcode within that image is required. This may be provided by the hardware scanner manufacturer, or obtained from a 3rd party.

Note that in our experience, hardware readers with a built-in decoder are both faster and much more reliable at decoding the barcods than the numerous image processing libraries we've worked with so far.

What do I need to support driver photos via the Photo property?

The parser has support for decoding numerous image formats, incluging JPEG 2000, via a 3rd-party plugin. This support is provided by the FreeImage Project, an open-source image library licensed under the GPL. Use of this plugin is optional - if the two required FreeImage DLL files are present in the parser folder, photo images will be decoded automatically. If the files are not there, the raw image data is still available, along with the expected image format. Your application can use its own decoding capabilities to process the image data.

The FreeImage library is available at:


The files required to support image decoding are:

  • FreeImage.dll

  • FreeImageNET.dll

Can DLIDLib create the data for writing to a magnetic stripe or a 2D barcode?

No. The data returned from a license is Read-Only, and the classes cannot be created by the user. There is no technical reason it can't work both ways, but we're not aware of any legal reasons to create license data, as only state motor vehicle departments and federal agencies can legally create licenses and Id cards. To prevent misuse of the library for illicit purposes, we do not enable the parser to operate in reverse.

However, for the purposes of masking real licenses with fake data for testing purposes, the parser does provide methods to replace personal information in a license with phony data, while preserving the exact formatting and alignment. This uses special masking characters to replace the personal data elements, and does not allow the user to specify what data will be written to those elements.

Of course, if your organization does have a state or federally sanctioned use for such a capability, please contact us and we can discuss options.

Why does the Expiration Date not always match what's printed on the ID card?

This should never be the case when scanning a 2D barcode. However, when reading the magnetic strip, this will actually often be the case. The magnetic strip data does not contain the full expiration date - only the month and the year. It may further specify whether to use the birthdate day, the last day of the expiration month, or the first day of the month after the birthday month. These are the only three possible days that can be specified, so if the expiration date printed on the card is not one of these three days, then it will not exactly match. This is a limitation of the data available in the magnetic strip data.

11/7/2016 version 0.7.6033

12/1/2010 version 0.6

We are proud to announce the release of an update to our DLIDLib parser, version 0.6.

Parser Updates

  • The new Photo property for PDF417 licenses was not made public in the previous release. We'd been testing this property internally, but did not make it's interface public during the last build. This property is available to users. Further details below.
  • Zip Codes - We have normalized ZIP codes by adding a dash between the base zip code and the Zip 4 extension.
  • Performance - our internal tests have increased parsing performance from ~8,500 IDs per second to over 64,500!


The decryption add-on for North Carolina is now available. This will transparently decrypt any NC licenses and parse them without any further work from the developer. We have implemented pass-through support for developers who have access to the Georgia decryption algorithm, but we have no plans to implement this internally due to the prohibitive cost of the license for this algorithm. We are continuing to pursue the decryption for the partially encrypted Illinois licenses.

Compact Framework Support

We have finished development and client testing of a version of the parser which targets the Compact Framework v3.5 for Windows CE and Windows Mobile devices. We have implemented a new licensing system for it, as the system we use for the desktop version is not compatible with the Compact Framework. Furthermore, the licensing system used previously for the Desktop version of the parser was not FIPS compliant, so we have migrated both editions of the parser to this new format. Many clients have already received test copies of the parser (version 0.5) and have had their licenses updated - a further update is not necessary. Clients using version 0.3 and prior will need a new license file. The new license file will be issued to cover the remainder of the original license purchase period, so an additional purchase is not necessary if that license has not yet expired.

The feature set and code base is virtually identical, with a few exceptions:
  • Stats reporting methods and properties of the Reporter class are currently unavailable.
  • Photo decoding is not yet supported by the compact version.

Military IDs

The parser now recognizes the US DOD Common Access Card (CAC) IDs and Teslin cards (Sponsor and Dependent) used by active personnel, standby reserves, retirees, beneficiaries, etc.

Travel Documents

DLIDLib parser now recognizes several machine-readable travel documents (MRTDs), including:
  • Passport Cards
  • Size A and Size B Visas
  • Size 1 and Size 2 Travel Documents
  • Machine-Readable Passports
Contact us for assistance integrating MRZ readers with DLIDLib to read these new formats.

FIPS compliance

We have replaced the 3rd-party licensing system with our own to overcome the lack of FIPS compliance in the algorithms the previous tool used to validate the licenses. This means we will issue new license files to clients issued licenses under the previous system. Before delivering this release, we will be contacting those of you who have the previous license to go over any concerns or potential issues that may arise, such as the feasibility of updating client applications with a new license file, or updating the applications to include the new license file as a resource. Depending on the update procedure in place, a different approach may be required. We will, of course, be able to deliver updates under the previous licensing system as well, for those clients who cannot easily update at this point and who do not require FIPS compliance.


  • We now increment the AssemblyFileVersion attribute and leave the AssemblyVersion attribute fixed through the same Major and Minor version. For clients using the Strongly Named build of the parser, this preserves compatibility at least through updates to the major and minor version.
  • Additional support for some obscure formats used by some states, including: FL, CA, OH, MA (Liquor ID), HI, SN, DC, IO, IA MN
  • Better support for processing name ordering for states that use inconsistent or ambiguous schemes.
  • Better support for unusual data formats from some MagStripe Reader devices, such as additional blank lines after the data.

9/14/2010 version 0.5

We have just implemented passport capabilities to our DLIDLib parser, which has been gaining significant traction in the industry for its driver's license and ID card parsing capabilities. This new version, to be released this week, also includes enhancements to military ID card support, as well as support for new formats being issued by several states.

Furthermore, performance has been significantly improved: Parsing is ~ 760% faster, and parsing with validation is ~ 412% faster.

4/27/2010 version 0.3

We are pleased to announce the release of version 0.3 of our driver's license / ID card parsing library. Thanks to a great deal of helpful feedback from some of our initial clients, we've made dozens of changes and enhancements to improve ease-of-integration and simplicity of the interface.

Since our early adopter clients were in the process of evaluating our library for integration into their product line, this was a perfect opportunity to integrate their feedback into our own development cycle, and get these changes into place before "locking down" the interface to ensure future compatibility, and allow drop-in replacement of the DLL file for client upgrades. Going forward, enhancements to the parser will be directly compatible with the current interface and not require any code changes.

Broader Jurisdiction Support

During this process, we've expanded our testing database to include several more states, and also additional formats for states we had already tested.We also made a few enhancements to the parsing engine that not only accommodate some jurisdiction-specific deviations we have encountered, but that are likely to be applicable to future formats as well.

Simpler Is Better

We've simplified access to many properties to help minimize the code needed by developers to integrate our parser. One major change has been the replacement of exceptions to indicate invalid data for a particular element, to an enumerated constant or a shared property to represent an invalid value. This allows data to be processed and displayed with simpler If checks instead of more complex exception handling.

  • Less coding logic to simply display values: nearly every property's .ToString method returns a string suitable for display that contains the value, or whether the value was not specified, or was invalid.
  • Less coding logic to check for invalid or unspecified values: Most structures have an .Empty shared constant and an Invalid shared constant or enum to indicate unspecified or invalid data, meaning there are very few exceptions to be caught.
  • Enhanced raw data recognition: More start sentinels are recognized for magnetic stripe data coming from a wider range of MSR devices, meaning less "massaging" the data before parsing.
  • Greater usability:Interface members have been further optimized to be more productive. For example, the IsUnderAge method has been replaced with a more flexible Age property, indicating the person's years of age.

5/7/2009 version 0.3.1

We're pleased to announce that our parser has been tested successfully against these additional states: AK, DC, DE, HI, ID, KS, AL, IN, CO. A few updates were made to accommodate older licenses (pre-2000) as well as to accommodate some older issuer IDs. These changes have been rolled into the minor update v0.3.1. Our State Compatibility Matrix has been updated.

As always, current clients can see the changelog and the complete issue history database in our Issue Tracker.

1/27/2009 version 0.1

Initial release.


I-Secure provides a service to manage the complete access and entry operations of your residential property, gated community, high density building, or commercial property that brings together technology and security like never before. Their technical staff is always there to assist with any problems that may arise. With their continued efforts to be the best, you can rest assured that they will be there to take care of your every security need.

Location: Florida

Contact: Hugh Clarke

Email: fhccbeg@vfrphersy.pbz


IDPro, Inc.

Since 2003, IDPro has delivered the industry's fastest, most reliable age verification and private club membership solutions. And they've backed those solutions with responsive 24/7 customer service, ongoing compliance oversight, and expert TABC compliance consulting.

Location: Hurst, Texas


MiniCheck OCR

MiniCheck OCR was founded by Bruce Brenner in 2003 to develop cost effective, electronic solutions for check verification, data capture, ACH deposit and identity verification.

Location: Texas

Contact: Bruce Brenner



Acuant Inc. is a global technology company that provides comprehensive Identity Verification solutions to reduce fraud and increase revenue while providing a seamless customer experience. Product offerings include data capture and auto-fill software, document authentication software, and identity verification software. We meet the highest level security requirements and cover industry specific regulations such as KYC and PCI. We partner with start-ups, Fortune 500 and FTSE 350 organizations in all industries including Government, Financial, Healthcare, Hospitality and Security.

Location: Los Angeles, CA


Saltus Technologies

Saltus Technologies is dedicated solely to developing and marketing digiTICKET – an eCitation solution for Public Safety agencies. Electronic ticketing provides an excellent return on investment when replacing the process of handwriting tickets. Founded by members of the digiTICKET management team, Saltus Technologies brings with it a heritage of mobile software development dating back to 1997.

Location: Tulsa, OK


You can also open this documentation in a new window.



Date: 8/21/2009