JMRTD is an open source Java implementation of the Machine Readable Travel Document (MRTD) standards as specified by the International Civil Aviation Organization (ICAO). The electronic passport (or "ePassport"), which by now has been introduced in many countries, is an implementation of these standards.

JMRTD provides both a card side application (the "passport applet") and a host side API for accessing ePassports. The passport applet makes it possible to create your own passports (in case you're starting your own country). The applet is written in Java Card.

The host side Java API can be used in different scenarios:

Note that since version 0.5.x JMRTD focusses on delivering ICAO Doc 9303 compliant low level building blocks (card specific communication, cryptographic protocols for access and clone detection, encoding and decoding of LDS content) in a consistent and comprehensive SDK. Higher level functionality such as demonstration applications (the Java Swing UI application), trust management (LDAP CSCA Nasterlist certificate lookup), and offline verification of the results of the protocols (Passive Authentication) have been deprecated. A complete solution for document verification, based on JMRTD is InnoValor's ReadID.

The main features of JMRTD:

Project History, Contributions, Background

Since 2014 InnoValor has been actively developing a (mixed open and closed source) software solution for mobile document verification called ReadID. The solution consists of an SDK for Android and a server backend. The free ReadID showcase app is available from the Play Store. A demonstration video showing ReadID in action is available from YouTube. Inqueries about ReadID can be sent to

In 2013 Novay implemented another proof-of-concept Android app on top of JMRTD as part of an EIT ICT Labs project.

In 2011 ScanTech IT asked Novay to bring JMRTD's encoding functionality for the biometric image datagroups (which can hold images of the face, fingerprints, iris, and handwritten signature) up to a standards compliant level (e.g., compliant to ISO 19785, ISO 19794). ScanTech IT uses this functionality in their biometric enrollment stations which are used at many of the Danish Muncipalities (Kommuner) as part of the issuing process for the second generation Danish ePassport.

In 2011 JMRTD was ported to Android. A sample app by Max Guenther for NFC enabled Android devices is available from the Android market.

In 2009 Wojciech Mostowski of Radboud University created an implementation (both card applet and host side API) of the ISO 18013 eDriving License standard based on JMRTD code in a project for the Dutch national authority for road traffic, transport and vehicle administration RDW.

In 2009 some of the lower level smart card communication stuff in JMRTD's host API was abstracted away into a seperate project called SCUBA.

In 2009 JMRTD was used (again) by researchers of the Digital Security group at Radboud University in Nijmegen to test the newly introduced EAC functionality. The research was (again) sponsored by the Dutch Ministry of Internal Affairs.

In 2008 JMRTD was used at Novay (at the time known as Telematica Instituut) in a research project sponsored by NLnet foundation to find out to what extent the ePassport's PKI can be used to do online authentication with Information Cards.

In 2007 functionality for fingerprinting the Nationality of passports was added by Henning Richter of the Lausitz University of Applied Sciences while visiting Nijmegen.

JMRTD was initially developed in 2006 as part of a research project of the Digital Security group (at the time known as the Security of Systems group) at Radboud University in Nijmegen. The research was sponsored by the Dutch Ministry of Internal Affairs. In this project the host API was connected to model-based test generation systems TorX and GAST in an attempt to find vulnerabilities in the Dutch implementation of the ePassport. The applet was developed to have an independent implementation to test the model and the test-systems.

Project factoids as measured by Ohloh


Active members of the JMRTD (and SCUBA) development team are listed on our member page on You can drop the project lead (Martijn Oostdijk ATM) a mail at if you have questions or comments. Or you can leave a message on the Open Discussion forum on


Available documentation:

Most of the specifications are open (as in: can be purchased). Here's our list.

Background reading