Passport Photo HQ

How We Verify Output Quality

If a passport photo is rejected, you lose money and time. So we ran our own pipeline through an end-to-end validation against the official specs published by five government authorities. This page documents what we measured, how we measured it, and what we found.

We picked the five countries because they account for the majority of our users: the United States, France, the United Kingdom, Germany, and Canada.

What we test

For each spec, we take a photo through our full pipeline (background removal, auto-crop, white composite, JPEG export at 300 DPI), then run an independent script that measures the output against the official specification. The script does not trust our own code — it re-detects the face from scratch using Google’s MediaPipe Face Landmarker and computes geometry from those landmarks.

Seven checks per output:

CheckWhat it measures
Pixel dimensionsExact width and height in pixels (e.g., 600×600 for US, 531×708 for UK)
DPI metadataOutput is tagged at 300 DPI for print correctness
Background uniformityFour corners (40×40 px each) sampled; mean RGB ≥ 245, max channel std ≤ 8
Face detectionA face is actually present in the output
Head height ratioHead-top to chin distance, as a percentage of frame height, falls inside the official spec band
Eye-line positionVertical position of the eye line from the bottom of the frame, as a percentage of frame height, falls inside the official spec band
CenteringHorizontal midpoint of the face is within 5% of the frame center

We use three synthetic faces (generated by thispersondoesnotexist.com, no real people involved) so the test is reproducible and contains no personal data.

Results, by country

🇺🇸 United States — Passport (2×2 in / 600×600 px)

check_circle3/3 PASS

Spec source: U.S. Department of State — Photo Requirements. Head height target 50–69%, eye line 56–69% from bottom.

US passport photo sample
Pipeline output
US passport photo with measurement overlay
Annotated: head top, chin, eye line, center

🇹🇷 France — Passport / National ID (35×45 mm / 531×708 px)

check_circle3/3 PASS

Spec source: service-public.fr — ID Photo Standards. Head height target 44–59%, eye line 50–64% from bottom.

French passport photo sample
Pipeline output
French passport photo with measurement overlay
Annotated

🇬🇧 United Kingdom — Passport (35×45 mm / 531×708 px)

check_circle3/3 PASS

Spec source: GOV.UK — Rules for Digital Photos. Head height target 44–59% (29–34 mm of the 45 mm photo), eye line 50–64% from bottom.

UK passport photo sample
Pipeline output
UK passport photo with measurement overlay
Annotated

🇩🇪 Germany — Passport / Personalausweis (35×45 mm / 531×708 px)

check_circle3/3 PASS

Spec source: Bundesdruckerei — Photo Template. Head height target 44–59%, eye line 50–64% from bottom.

German passport photo sample
Pipeline output
German passport photo with measurement overlay
Annotated

🇨🇦 Canada — Passport (50×70 mm / 591×827 px)

check_circle3/3 PASS

Spec source: Government of Canada — Photo Specifications. Head height target 46–57% (31–36 mm), eye line 52–64% from bottom.

Canadian passport photo sample
Pipeline output
Canadian passport photo with measurement overlay
Annotated

Summary

Across 5 countries and 3 reference faces, all 105 individual checks passed: dimensions, DPI, background uniformity, face detection, head height, eye position, and centering. The output of our pipeline matches the published government spec on every measurable axis we tested.

Limitations — what we don’t test

Honesty matters more than marketing copy here. Things our QC does not guarantee:

Bottom line: If you upload a clear, well-lit photo, our tool will produce output that meets the published numerical specs for the country you select — we’ve tested that directly. We can’t guarantee acceptance, because that decision belongs to the government. We can guarantee that the failure modes we control for are actually controlled.

How to reproduce this

The validation script (qc_validator.py) is independent of the production pipeline and runs the seven checks above against any output image. We re-run it on each pipeline change. The next scheduled QC pass is monthly.

Found a problem? Email hello@passportphotohq.com — we’ll investigate.