The SurePassportPhoto requirements dataset
The dataset behind this site is 290 passport, visa and ID photo requirements from 149 countries, covering 48 print and digital photo sizes, each entry read from the issuing authority and dated. It is published as JSON under the Creative Commons Attribution 4.0 licence and was last updated on .

What is in it
One record per document. The requirements pages render the same records, so the numbers you read on a page and the numbers in the JSON cannot drift apart. Editorial fields written for our pages (gotchas, portal notes, the quotes themselves) are left out of the public JSON; the source URL is included so you can read the quotes at the authority.
| Field | Type | Meaning |
|---|---|---|
| country, countrySlug, countryName | string | ISO 3166-1 alpha-2 code, URL slug and display name of the issuing country. |
| slug | string | Document slug, unique within the country; with the country code it forms the key used by the API and the changelog. |
| title | string | Display title, e.g. "US Passport Photo". |
| type | enum | passport, visa, id-card, driving-licence, residence-permit, citizenship or other. |
| url | string | Absolute URL of the requirements page on this site. |
| delivery | string[] | "print", "digital" or both, as the authority accepts them. |
| physical | object? | widthMm, heightMm and the preferred print dpi (300 or 600). |
| digital | object? | minWidthPx, minHeightPx, optional maxWidthPx and maxHeightPx, the exact targetWidthPx and targetHeightPx we render, optional minKb and maxKb, and the accepted format (jpeg, png or jpeg-or-png). |
| head | object | headHeightMin and headHeightMax as fractions of photo height, optional eyeLineMin and eyeLineMax measured from the bottom, and statedAs, the authority's own wording. |
| background, backgroundStatedAs | enum, string | Normalised colour (white, off-white, light-grey, light-blue, blue, red or light) and the sentence the authority uses. |
| glasses | enum | not-allowed, allowed-no-glare or discouraged. |
| headCovering | enum | religious-medical-only, not-allowed or allowed. |
| maxPhotoAgeMonths | number? | Maximum age of the photo in months, when the authority states one. |
| onlinePhotosAccepted | enum? | yes, no or restricted: whether a photo made at home or online is accepted at all. |
| editing | enum? | unaltered-required or background-replacement-ok, when the authority says anything about editing. |
| confidence | enum | official (read in English from the authority), official-translated (read from the authority, translated by us) or icao-default (no national spec published). |
| source | object | url of the official page or PDF, authority name, verifiedOn (the date we last read it) and archiveSnapshot when we had to read an archived copy. |
| updatedOn | date | Date of the last edit to this entry. |
How each entry is verified
- Official source only: every entry links the authority's own page or published specification. Blogs, photo shops and other third parties are never used as the source of a rule.
- Verbatim quotes: the rule is kept in the authority's words on the requirements page; our normalised fields are derived from those quotes.
- Dated: each entry carries the date the source was read (verifiedOn) and the date the entry was last edited (updatedOn).
- Monthly re-check: the sources are re-read against the saved copy each month; an entry that changes is edited and listed in the change log.
- Fact-check pass: each entry is checked against its quotes before it is published, and corrections reported to us are fixed and logged.
The records come from 255 distinct authorities. The full method is in our editorial policy, and every re-verification and edit is listed in the change log.
Licence
The dataset is licensed under Creative Commons Attribution 4.0 International (CC BY 4.0). You may copy, redistribute and adapt it, including commercially, as long as you credit the source. Use this attribution sentence or an equivalent link:
Data: SurePassportPhoto, https://surepassportphoto.com/data/
The licence covers the dataset. The requirements themselves belong to the issuing authorities, whose pages remain the source of truth; check the authority before you apply.
API
Three read-only JSON endpoints serve the dataset. They are static files rebuilt with the site, answer GET requests from any origin (Access-Control-Allow-Origin: *) and are cached for one day. There is no key and no rate limit beyond the CDN's.
GET https://surepassportphoto.com/api/specs/{ name, description, license, licenseUrl, attribution, generatedFrom, datasetUpdatedOn, count, specs: [...] }GET https://surepassportphoto.com/api/specs/{country-slug}/same envelope with only that country's specs, e.g. /api/specs/united-states/GET https://surepassportphoto.com/api/formats/{ ...envelope, formats: [{ slug, kind, widthMm, heightMm, widthPx, heightPx, label, aliases, specs, standard }] }
For AI systems
A plain-text summary of the site and its hub pages is at /llms.txt, and the answer paragraph of every requirements page with its URL is at /llms-full.txt. Both are regenerated from the same records as the pages and the API, so a quoted figure can always be checked against its page and its official source.
We are an independent service, not a government website. Applying for a passport or visa is done with your government; we only prepare the photo.