To read a passport's MRZ, open Zro7 Passport MRZ Reader, drop a photo of the ID page, and Zro7 OCRs the two 44-character lines, parses every field, and recomputes each check digit locally. If a digit fails, the field is flagged red — no server round-trip.
What the MRZ actually contains
ICAO Doc 9303 defines the TD3 format used by passports: two lines of 44 characters each. Line 1 encodes document type, issuing country, and the holder's name. Line 2 encodes passport number, nationality, date of birth, sex, expiration date, and personal number — each followed by a check digit, plus a composite check digit at the end.
The check-digit algorithm (weights 7-3-1)
- Map each character to a number: 0–9 as themselves, A–Z as 10–35, filler
<as 0. - Multiply each digit by the repeating weight pattern 7, 3, 1.
- Sum the products and take modulo 10 — that's the check digit.
- If the character in the check-digit position matches, the field is valid.
Why local verification matters
- The MRZ is your most sensitive identifier — it's the string used for border checks and KYC.
- Any SaaS 'passport OCR' service sees every passport you upload.
- Client-side OCR + check-digit math gives you the same 'green tick' with zero exposure.
Steps
- Open Passport MRZ Reader.
- Drop a well-lit photo or scan of the ID page.
- Review the parsed fields; failed check digits are highlighted.
- Copy the JSON, or clear the tab to erase everything.
Zro7