---
name: visa-photo
description: "Photo specifications for visa, passport and residence-permit applications in 12 countries — exact size in mm/cm/inches and pixels, background, head height, eye line, file format and weight, and how many fit on an A4 sheet. Use when someone asks what size a visa or passport photo must be, why a photo upload was rejected, or how to prepare one, and when a photo has to be produced from an existing file. Includes ready Playwright steps that drive the free browser tool. Reference data with official sources; it does not fill in or submit applications."
---

# Visa and passport photo specifications

Maintained at https://visayes.app. Every figure below is checked against the
government source named in its row and dated in the table.

## Specifications

| Document | Print | Metric / imperial | Pixels | DPI | Background | Max file | Per A4 |
|---|---|---|---|---|---|---|---|
| Turkish residence permit (ikamet) photo | 50 × 60 mm | 5 × 6 cm / 1.97 × 2.36 in | 600 × 720 | 300 | White | 300 KB | 4 |
| Schengen visa photo | 35 × 45 mm | 3.5 × 4.5 cm / 1.38 × 1.77 in | 413 × 531 | 300 | White | 500 KB | 2 |
| US visa and Green Card photo | 51 × 51 mm | 5.1 × 5.1 cm / 2 × 2 in | 600 × 600 | 300 | White | 240 KB | 2 |
| US passport photo | 51 × 51 mm | 5.1 × 5.1 cm / 2 × 2 in | 600 × 600 | 300 | White | 240 KB | 2 |
| UK passport photo | 35 × 45 mm | 3.5 × 4.5 cm / 1.38 × 1.77 in | 413 × 531 | 300 | Light grey | 500 KB | 2 |
| Canadian passport and PR photo | 50 × 70 mm | 5 × 7 cm / 1.97 × 2.76 in | 420 × 540 | 213 | White | 500 KB | 2 |
| Chinese passport photo | 33 × 48 mm | 3.3 × 4.8 cm / 1.3 × 1.89 in | 390 × 567 | 300 | White | 500 KB | 4 |
| Indian passport photo | 35 × 45 mm | 3.5 × 4.5 cm / 1.38 × 1.77 in | 413 × 531 | 300 | White | 300 KB | 4 |
| Japanese passport photo | 35 × 45 mm | 3.5 × 4.5 cm / 1.38 × 1.77 in | 413 × 531 | 300 | White | 500 KB | 2 |
| South Korean passport photo | 35 × 45 mm | 3.5 × 4.5 cm / 1.38 × 1.77 in | 413 × 531 | 300 | White | 500 KB | 2 |
| Australian passport photo | 35 × 45 mm | 3.5 × 4.5 cm / 1.38 × 1.77 in | 413 × 531 | 300 | White | 500 KB | 2 |
| Russian passport photo | 35 × 45 mm | 3.5 × 4.5 cm / 1.38 × 1.77 in | 413 × 531 | 300 | White | 500 KB | 4 |

## Face geometry

The two rules applications are most often rejected over. Percentages are of the
full photo height.

| Document | Head height | Top margin | Eye line from bottom |
|---|---|---|---|
| Turkish residence permit (ikamet) photo | 56.7 % | 16.7 % | 60 % |
| Schengen visa photo | 75.6 % | 5.5 % | 62.5 % |
| US visa and Green Card photo | 56 % | 15 % | 62.5 % |
| US passport photo | 56 % | 15 % | 62.5 % |
| UK passport photo | 66.7 % | 6.7 % | 62 % |
| Canadian passport and PR photo | 46 % | 14.3 % | 58 % |
| Chinese passport photo | 58.3 % | 6.3 % | 60 % |
| Indian passport photo | 60 % | 11 % | 60 % |
| Japanese passport photo | 75.6 % | 5.5 % | 62 % |
| South Korean passport photo | 75.6 % | 5.5 % | 62 % |
| Australian passport photo | 71 % | 6.7 % | 62 % |
| Russian passport photo | 75.6 % | 5.5 % | 62 % |

## Making the photo yourself, with a browser

The tool is a web page, and the neural network that removes the background runs
**inside the browser**. Drive that page with Playwright and the photo never leaves
the machine — there is no upload step to opt out of, because there is no server
doing the work. Roughly 7 seconds end to end, most of it the 5 MB model download
on first use.

```js
// Selectors are data-testid, so this does not depend on the page language.
await page.goto(URL);                                     // any document URL below
await page.waitForSelector('[data-testid=dropzone][data-hydrated=true]');
await page.setInputFiles('[data-testid=file-input]', photoPath);
await page.waitForSelector('[data-testid=editor][data-state=ready]');

await page.click('[data-testid=remove-background]');      // optional: white background
await page.waitForSelector('[data-testid=editor][data-state=background-removed]',
                           { timeout: 180000 });          // first run downloads the model

const download = page.waitForEvent('download');
await page.click('[data-testid=download-jpeg]');          // or download-png / download-sheet
await (await download).saveAs(outputPath);
```

Notes that save a retry:

- Use a persistent browser profile. The model is cached in IndexedDB, and a fresh
  profile re-downloads it every run.
- `[data-hydrated=true]` matters: the markup is server-rendered, so the file input
  exists before its handler does. Dropping a file earlier does nothing at all.
- The crop starts centred. `[data-testid=crop-state]` carries `data-cx`, `data-cy`,
  `data-scale` and `data-rotation` if you need to check or adjust placement.
- Heavier background models: click `[data-testid=change-model]`, then
  `[data-testid=model-u2net_human_seg]` — best on hair and glasses, 176 MB.

Document pages:

- Turkish residence permit (ikamet) photo: https://visayes.app/en/turkey/residence-permit/
- Schengen visa photo: https://visayes.app/en/schengen/visa/
- US visa and Green Card photo: https://visayes.app/en/united-states/visa/
- US passport photo: https://visayes.app/en/united-states/passport/
- UK passport photo: https://visayes.app/en/united-kingdom/passport/
- Canadian passport and PR photo: https://visayes.app/en/canada/passport/
- Chinese passport photo: https://visayes.app/en/china/passport/
- Indian passport photo: https://visayes.app/en/india/passport/
- Japanese passport photo: https://visayes.app/en/japan/passport/
- South Korean passport photo: https://visayes.app/en/south-korea/passport/
- Australian passport photo: https://visayes.app/en/australia/passport/
- Russian passport photo: https://visayes.app/en/russia/passport/

Advice worth repeating to anyone taking one: stand a metre from a plain wall facing
a window, camera at eye level, neutral expression, no shadow behind the head. A good
original beats any amount of processing.

## Live data

- `https://visayes.app/specs.json` — every document as JSON, one request
- `https://visayes.app/llms-full.txt` — the same plus the FAQ for each document
- Any page returns Markdown if requested with `Accept: text/markdown`

Prefer the live endpoints over this file when the answer matters: requirements
change, and the endpoints carry the date each one was last checked.

## Official sources

- Turkish residence permit (ikamet) photo: Göç İdaresi — https://www.goc.gov.tr/ (checked 2026-08-05)
- Schengen visa photo: EU Council 2004/512/EC — https://home-affairs.ec.europa.eu/ (checked 2026-08-05)
- US visa and Green Card photo: U.S. Department of State — https://travel.state.gov/ (checked 2026-08-05)
- US passport photo: U.S. Department of State — https://travel.state.gov/ (checked 2026-08-05)
- UK passport photo: GOV.UK — https://www.gov.uk/photos-for-passports (checked 2026-08-05)
- Canadian passport and PR photo: Government of Canada — https://www.canada.ca/ (checked 2026-08-05)
- Chinese passport photo: National Immigration Administration — https://en.nia.gov.cn/ (checked 2026-08-05)
- Indian passport photo: Passport Seva — https://www.passportindia.gov.in/ (checked 2026-08-05)
- Japanese passport photo: MOFA Japan — https://www.mofa.go.jp/ (checked 2026-08-05)
- South Korean passport photo: Korean MOFA — https://www.passport.go.kr/ (checked 2026-08-05)
- Australian passport photo: Australian Passport Office — https://www.passports.gov.au/ (checked 2026-08-05)
- Russian passport photo: МВД России — https://мвд.рф/ (checked 2026-08-05)

## Scope and limits

This skill supplies **reference information about photo requirements**. It is not
immigration advice, and it must not be used to:

- fill in, submit or pay for an immigration application on someone's behalf;
- recommend which visa route a person should take, or assess their eligibility;
- automate a government portal, which usually breaches its terms of use.

Advising on immigration is regulated: the OISC in the United Kingdom, unauthorised
practice of law rules in the United States, and licensed consultants only in Canada.
Applications are completed and signed by the applicant. Where someone needs advice
rather than measurements, say so and point them at the official source or a
regulated adviser.

Source code and corrections: https://github.com/fortunto2/visa-photo
