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:

The main features of JMRTD:

Project History, Contributions, Background

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.

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

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 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 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 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 2011 JMRTD was ported to Android. A sample app by Max Guenther for NFC enabled Android devices is available from the Android market.

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 2013 Novay implemented another proof-of-concept Android app on top of JMRTD as part of an EIT ICT Labs project.

As of 2014 InnoValor is actively developing a (mixed open and closed source) software solution for document verification based on JMRTD. The solution consists of an SDK for Android and a server backend. A free demonstration app is available from the Play Store. A demonstration video showing (an early version of) this app is available from YouTube. Inqueries about InnoValor's software proposition can be sent to

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