mdoc and ISO 18013-5: how mobile IDs work
mdoc is the ISO format behind mobile driving licences and one of two EUDI Wallet formats. How ISO 18013-5 and 18013-7 work, and what stays private.
StandardsPublished
An mdoc is a signed digital document stored on your phone, defined by the international standard ISO/IEC 18013-5. It was written for the mobile driving licence, but the same data model now underpins other identity credentials. Its defining feature is that you can show a reader a few data elements, such as ‘age over 18’, from close range without a network connection to the issuing authority.
What is ISO 18013-5?
ISO/IEC 18013-5:2021 is titled “Personal identification, ISO-compliant driving licence, Part 5: Mobile driving licence (mDL) application”. You can find it in the ISO catalogue. It describes the data structure of the credential, how a phone and a reader find each other, how they set up an encrypted channel, and how the reader checks that the data is authentic.
The standard comes from the driving licence family (ISO 18013) and was developed with licensing authorities in mind. That origin matters: it assumes an official issuer, a reader operated by a police officer, a shop or a car-rental desk, and a holder who is physically present.
How does an mdoc presentation work?
- Issuance. The issuing authority creates the mdoc, signs a summary of its contents and sends it to the holder’s wallet app. The wallet stores it and binds it to a key held in the phone’s secure hardware.
- Device engagement. The reader shows a QR code or the phone is tapped on an NFC reader. This transfers the information needed to set up a connection and exchanges public keys.
- Session encryption. Both sides derive session keys and encrypt everything that follows, so nearby devices cannot eavesdrop. The data itself can travel over NFC or Bluetooth Low Energy (the standard also covers Wi-Fi Aware).
- Request. The reader names the data elements it needs, for example
family_nameandage_over_18. - Consent. The wallet shows the request and asks the user to agree, usually with a fingerprint, face or device PIN.
- Response. The wallet returns only the approved elements, together with proof from the issuer and proof of possession of the device key.
- Verification. The reader checks the issuer signature against a trusted certificate, confirms the data was not altered and verifies that the device key matches.
What is inside an mdoc?
An mdoc is encoded in CBOR, a compact binary format, and signed using COSE structures. The key idea is the Mobile Security Object (MSO). The issuer signs a list of digests (hashes) of every data element, each combined with a random salt. When the holder reveals an element, the reader recomputes its digest and compares it with the signed list. Elements that were not sent stay hidden, yet the signature still covers them. This is the same principle that SD-JWT uses; read about it in SD-JWT explained.
Data elements sit in namespaces. The mobile driving licence defines the namespace org.iso.18013.5.1, with elements such as family_name, birth_date, portrait and the privacy-friendly age_over_NN attributes (for example age_over_18). Other credentials can define their own namespaces, which is how national or European identity attributes fit into the same format.
And what about online use? ISO/IEC TS 18013-7
ISO/IEC 18013-5 deals with in-person transactions. For presenting an mdoc to a website or app over the internet, ISO published ISO/IEC TS 18013-7, “Mobile driving licence (mDL) add-on functions”; the current edition dates from May 2025 (ISO page). In the European wallet ecosystem, online presentation of mdocs is typically combined with OpenID for Verifiable Presentations, which carries the request and the response between the service and the wallet.
Where does the EUDI Wallet use mdoc?
The EU’s Architecture and Reference Framework requires wallets to support two credential formats: ISO mdoc and SD-JWT VC. The mobile driving licence, covered on our page about the mobile driving licence, is a natural mdoc use case, and person identification data is to be available in both formats. For more on the wallet itself, see the EUDI Wallet overview.
Major phone platforms also offer wallet features for IDs based on ISO 18013-5, which means a reader built for the standard can in principle work with several wallet apps. Which countries and apps work in practice is a fast-moving subject; check the page for your country in our country guides.
What does this mean for users?
For you as a user, the main change is the action: instead of showing a plastic card, you approve a request in the wallet. You see which data the reader asks for, and you do not have to hand the phone over. A counterpart who wants to take your phone in their hand is not part of the mdoc design. What stays important is securing the device itself: a strong screen lock protects the credential, and if the phone is lost the issuer should be able to revoke it. How this works in detail depends on the national scheme.
Examples
- Age check at a shop or kiosk. The reader asks for
age_over_18only and gets a yes or no, not a birth date. - Car-rental desk. The reader requests licence categories and expiry date in addition to the name.
- Roadside check. An officer’s reader requests the licence data and verifies the issuer signature against national certificates.
Security and privacy
- Hardware-backed keys. The device key lives in the phone’s secure element or trusted execution environment, which makes cloning the credential difficult.
- Consent per request. The wallet shows what is requested; a good wallet lets the user decline individual elements.
- Reader authentication. The standard allows readers to authenticate themselves, so a wallet can show who is asking. Whether this is enforced depends on the ecosystem rules; in the EU, wallet relying parties are being registered (see What is a relying party?).
- Limits on unlinkability. As with SD-JWT, the issuer’s signature is stable across presentations. Issuers and wallets can reduce tracking risk by issuing multiple short-lived copies.
- Trust in issuer certificates. The reader must hold current trusted certificates; stale lists are a practical weak point.
Status in October 2026
ISO/IEC 18013-5:2021 is the published standard; ISO/IEC TS 18013-7:2025 is the current edition for online use, and a further revision was in preparation at ISO. The EU wallet specifications profile these ISO documents, so details of your national wallet may differ slightly from the base standard.
Frequently asked questions
What does mdoc stand for?
It stands for mobile document. The term comes from ISO/IEC 18013-5, which describes a mobile driving licence as an mdoc, but the data model is generic and can carry other credentials such as national identity data.
Is ISO 18013-5 free to read?
No. ISO standards are sold by ISO and national standards bodies. The EUDI Wallet documentation and several open-source projects explain the relevant parts, and the ISO website lists the standard and its edition.
Can an mdoc work without internet?
Yes, that is a design goal. In an in-person presentation the phone and the reader talk directly over NFC, QR code or Bluetooth. The reader needs trusted issuer certificates in advance, but no live connection to the issuer.
How does mdoc differ from SD-JWT VC?
Both hide data behind salted hashes and support selective disclosure. mdoc uses the compact binary CBOR and COSE encoding and has a defined proximity protocol; SD-JWT VC uses JSON and web-style signatures and grew up in the OAuth and OpenID world.
More in Standards
Decentralized identifiers (DIDs): what they are and do
A DID is a W3C identifier you control without a central registry. How DID documents work, how they relate to credentials, and their role in the EUDI Wallet.
FIDO2 and WebAuthn explained: the standards behind passkeys
FIDO2 combines WebAuthn and CTAP to replace passwords with phishing-resistant key pairs. How login works, what WebAuthn Level 3 adds and its EU wallet link.
Identity federation explained: one login, many services
Identity federation lets one trusted provider vouch for you across many services. How it works, the standards it uses, and how the EUDI Wallet changes it.
OAuth 2.0 explained: delegated access without passwords
OAuth 2.0 lets an app act for you at another service without your password. How the flow works, the main risks, OAuth 2.1 and where OAuth meets the EU wallet.
OpenID 2.0 explained: the original decentralised login
OpenID 1.x and 2.0 let you log in to websites with a URL you controlled. How discovery, delegation and providers worked, and why OpenID Connect replaced them.
OpenID Connect explained: login on top of OAuth 2.0
OpenID Connect (OIDC) lets an app verify who you are via a provider like Google. Learn the flow, the ID token, the risks and OIDC's place beside the EU wallet.