Read your Passport in one Click

pyPassport (API) and ePassport Viewer (GUI) are two GPL-friendly tools that allow to read and check electronic passports. Additionally, they can save the content of a passport, export it (database, pdf file, etc.), and much more. pyPassport and ePassport Viewer can be tested on a provided sample file, but they require an RFID reader (cost about 30 euros) to work in practice. An optional optical reader can be plugged to avoid to type the MRZ of the passport. pyPassport and ePassport Viewer are compliant with Windows, Mac OS X, and Linux.


pyPassport is an API written in Python that allows to interact with electronic passports compliant with ICAO Doc9303. It provides an interface with the following functionalities:

  • Perform the Basic Access Control and Secure Messaging.
  • Perform the passive and active authentications.
  • Read the content of the ePassport, including pictures in JPEG2000 format.
  • Create "valid" auto-signed ePassport content.

pyPassport is released under GNU Lesser General Public License, Version 3 License.

  ePassport Viewer

ePassport Viewer is a GUI built on top of pyPassport. The software provides the following functionalities:

  • Read and display the results.
  • Save/Load a dump.
  • Export subset of data (Picture, Signature, Public key, Certificate).
  • Export a summary in XML or PDF format.
  • Verify the data's authenticity and integrity.

ePassport Viewer is released under GNU General Public License, Version 3 License.


Before using pyPassport, you must be sure that you are allowed to read the contactless chip of your passport, according to the laws and regulations of the country that issued it.


Files can be found on the project page:

Related softwares

  • JMRTD: A Free Implementation of Machine Readable Travel Documents (JAVA)
  • RFIDIOt: RFID tools (Python)
  • wzMRTD: ePassport API by Johann Dantant (C++)


The GSI would like to thank Jean-Francois Houzard and Olivier Roger for the initial development of this tool, then thibault Vansingle and Antonin Beaujeant for keeping it evolving. The GSI would also like to thank J.-P. Szikora, M. Oostdijk, A.Laurie, I. Etingof, Ph. Teuwen, and M. Vuagnoux for their comments and advices.