An automated cropper does not know what a country is. It reads a parameter set: output pixel dimensions, a head-height band, an eye-line band measured from the bottom of the frame, a background colour and a maximum file size. Face detection finds your chin, crown and eye centre in the original photo, and the tool then solves for the one crop box that lands both your head height and your eye line inside their bands at the country's aspect ratio. The bands are the reason a single photo cannot serve two countries. The US allows a head filling 50 to 69% of the frame, the Schengen visa demands 71 to 80%, and those two ranges do not overlap at any value. SpecSnap carries 46 of these parameter sets across 20 countries and runs the whole solve on the phone.
A country rule is a parameter set, not a picture
The phrase "country-specific requirements" sounds like a library of example photos. It isn't. Every automated tool that handles more than one country stores each document as a row of numbers, and the cropping engine reads those numbers rather than the government web page they came from.
SpecSnap carries 46 document specs across 20 countries, and each one is the same struct:1
- Output width and height in pixels. These also fix the aspect ratio the crop box must use.
- Head height as a fraction of frame height, with a minimum, a target and a maximum. Measured chin to crown, hair included.
- Eye line as a fraction of frame height, measured from the bottom, again with a minimum, a target and a maximum.
- Background colour, as an actual RGB value.
- Maximum file size in bytes, plus the JPEG quality to start from.
- Validation thresholds: how many degrees of head turn and tilt are tolerated, how open the eyes must read, how much smile is too much, and a blur floor.
Everything the tool does downstream is arithmetic on those fields. That is worth stating plainly, because it explains both the strength and the limit of automated cropping. It is extremely good at hitting a number. It has no opinion about anything nobody wrote down as a number.
What the cropper actually solves for
Start with the measurements the detector produces from your original photo: the chin position, the crown position and the eye centre. Crown is the harder one. A face detector gives you a bounding box that stops around the hairline, so the crown gets found a different way: after the background is removed, the topmost pixel that isn't background, searched in a strip around the face centre, is the top of your head. Hair included, which is what the specs mean.
From there the solve is short.
Step one, scale. The frame height is chin-to-crown divided by the spec's target head fraction. Say your face measures 900 pixels chin to crown in the original. A US passport photo targets a head at 60% of frame height, so the crop box has to be 900 / 0.60, which is 1500 pixels tall. A Schengen visa targets 77%, so the same face wants a box 900 / 0.77, or 1169 pixels tall. Smaller box, same face, tighter crop.
Step two, position. The box slides vertically until your eyes sit on the target line. US passport puts the eye centre at 62% of frame height measured up from the bottom; Schengen puts it at 68%. So the top of the crop box is the eye position minus the remaining fraction of the frame above it.
Step three, width. Multiply the frame height by the spec's aspect ratio. US is square, so 1500 x 1500. Schengen is 413 x 531, an aspect of 0.778, so 1169 tall becomes 909 wide. Horizontal centring uses a blend of the face detector's centre and the centre of the whole head-and-shoulders silhouette, weighted toward the silhouette, so a turned shoulder doesn't drag the crop sideways.
Then the box is cut, resized to the spec's exact output pixels with a Lanczos filter, and sharpened by the amount that spec asks for.
When the two bands fight
Head height and eye line are separate constraints on the same box, and they can pull against each other. Someone with a tall forehead or a lot of hair volume has more distance between their eye line and their crown than the target combination allows. Position the eyes at 62% and the crown ends up above the top edge, cut off.
A good cropper resolves this rather than shipping a decapitated photo. The frame grows until the crown fits with a small margin, capped at the largest box that still keeps the head above the spec's minimum head fraction, and the eye line is then allowed to drift down toward its own minimum. Both constraints end up satisfied at the edge of their bands instead of at the comfortable centre.
That is the real answer to how automated tools handle differing rules: they don't aim at the legal limit, they aim at the middle of each band and keep the slack in reserve for exactly this. A photo cropped to the exact minimum head size passes today and fails the moment a landmark estimate moves two pixels.
If the crop box runs past the edge of your original photo, the missing area gets filled with the spec's background colour. That is only safe sideways and below. If the top of your head was already clipped when you took the shot, there are no hair pixels to recover, and padding would invent a flat-topped skull. Tools that check for this reject the input instead.
Why one photo cannot pass two countries
Here are the head-height bands, as fractions of frame height, for four common documents:2345
| Document | Output pixels | Head band | Eye line from bottom | Background |
|---|---|---|---|---|
| US passport and visa | 600 x 600 | 50% to 69% | 56% to 69% | White |
| Schengen visa | 413 x 531 | 71% to 80% | 62% to 74% | White |
| UK passport | 600 x 771 | 64% to 76% | 55% to 66% | Light grey or cream |
| India passport (Passport Seva) | 630 x 810 | 80% to 85% | 62% to 74% | White |
Look at the US and Schengen rows. The US band tops out at 69%. The Schengen band starts at 71%. There is no head size that satisfies both, so there is no crop, however clever, that produces one image valid for both applications. The tool isn't choosing between them. The arithmetic has no solution.
India's passport band is tighter again at 80 to 85%, and it doesn't overlap the US band either. The UK band, 64 to 76%, does overlap Schengen between 71 and 76%, but the UK output is 600 x 771 and Schengen is 413 x 531, and the UK wants a grey background where Schengen wants white. Same 35 x 45 mm print size on paper. Different image.
"35 x 45 mm" is not one output
That last point catches people out constantly, because print size is the number that gets quoted and it is the least informative one.
Sixteen of SpecSnap's 46 specs print at 35 x 45 mm. They resolve to four different digital canvases: 400 x 514 for Singapore's ICA uploads, 413 x 531 for Schengen, Australia, Thailand, Japan and Taiwan, 600 x 771 for the UK, and 630 x 810 for India's Passport Seva portal.1 Between them they carry six different head-height bands. A file that is correct for one is wrong for the others on pixel dimensions before anyone looks at the face.
The 2 x 2 inch group has the opposite problem. Ten specs share it, and all ten output 600 x 600 pixels. Identical canvas. But Indonesia's passport wants a head at 70 to 80% of that square, while the US, Mexico, the Philippines and India's visa want 50 to 69%.1 Two photos with the same pixel dimensions, and neither will pass as the other. Pixel dimensions matching is not compliance. It is the first of several gates.
The parameters that aren't geometry
Cropping gets the attention, but a country rule carries three other fields that decide acceptance.
Background colour is not always white. Nine of the 46 specs are something else. The UK and New Zealand want light grey; Thailand's e-visa the same. Malaysia's Employment Pass wants light blue. Indonesia's passport is red. The Philippines passport is royal blue.1 Indonesia's KTP identity card takes it furthest: red background if you were born in an odd-numbered year, blue if even. A tool that hardcodes a white background produces a rejected photo for all of them, and no amount of good cropping fixes it.
The byte cap is a separate axis from the crop. Fourteen distinct file-size limits sit across those 46 specs. Within the identical 600 x 600 geometry, the US visa upload caps at 240 KB, India's regular visa at 300 KB, the US passport renewal at 10 MB and the India OCI form at 20 MB.651 Same crop, four different encodes. The way to hit a tight cap is to search JPEG quality downward until the file fits, keeping the full pixel dimensions. The wrong way, and the common way, is to shrink the picture, which trades a size rejection for a resolution rejection.
Strictness varies by document. Border-control documents get harsher tolerances. Where a general ID photo might accept 15 degrees of head turn, 10 degrees of tilt and a modest smile, the Schengen visa and the US DS-160 profiles tighten that to 10 degrees of turn, 5 degrees of tilt and near-zero smile.1 Glasses are a per-document flag too, banned outright on the US passport, the UK passport, the Indonesian passport and the Philippines passport.
What automation still cannot do for you
Automated cropping solves the geometry problem completely and honestly. It does not solve the capture problem.
If your original has the crown clipped, the shot is unrecoverable. If the light behind you throws a shadow, the background removal has to guess at a boundary that isn't there. If the photo is soft, no crop sharpens it into a pass. And there is a hard line worth knowing about in 2026: the US State Department tells applicants not to alter the photo with computer software, phone apps, filters or artificial intelligence.2 Cropping, resizing and background replacement to the required colour sit on the allowed side. Retouching your face does not.
Where SpecSnap fits
SpecSnap runs the whole sequence on your phone: face detection, background removal, the crop solve, encoding to the document's byte cap, and the compliance check against that document's bands. Nothing is uploaded, so your biometric photo stays on the device.1 The compliance readout is the useful part. It reports your actual head percentage and eye-line percentage against the spec's range, so a marginal photo is visible as marginal before you pay anything. Export is $0.99 for a single photo, or $4.99 a year for unlimited.7
If you are applying to more than one country, that is where the per-spec model earns its keep. One good capture, re-solved against each document's parameters, gives you a correct file for each. See visa photos for multiple countries for how that workflow runs, and passport photo head size for a deeper look at where the head-fill bands come from.
FAQ
How does an automated tool know what each country requires?
It stores each document as a parameter set rather than as an example image: output pixel dimensions, a head-height band, an eye-line band measured from the bottom of the frame, a background colour and a byte cap.1 Face detection supplies your chin, crown and eye positions, and the cropper solves for the box that places your head inside those bands at the required aspect ratio. Nothing in the process reads a government web page at runtime, which is why a tool is only as current as the last time someone updated its numbers.
Can I use the same photo for a US passport and a Schengen visa?
No, and not for a fixable reason. The US wants your head to fill 50 to 69% of the frame height, and the Schengen visa wants 71 to 80%.24 The two ranges do not overlap, so no single crop satisfies both. The output shapes differ too, 600 x 600 square against 413 x 531 portrait. You need two exports, though both can come from the same original capture if it has enough resolution.
My photo is the right pixel size but was still rejected. Why?
Pixel dimensions are the easiest check to pass and the least meaningful. Ten different documents share the 600 x 600 canvas while disagreeing about head size, background colour and file size.1 The usual culprits are a head sized for the wrong country's band, an eye line sitting too low in the frame, a background that is white when the document wanted grey or blue, or a file compressed below the portal's minimum in an effort to clear its maximum.63
Sources
Footnotes
-
SpecSnap: 46 document specs across 20 countries, each stored as output pixel dimensions, head-height and eye-line bands with minimum, target and maximum, a background RGB value, a byte cap and per-document validation thresholds; on-device face detection, cropping, encoding and compliance checking with no upload. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9
-
U.S. Department of State, Passport Photos: the 2 x 2 inch format, the 1 to 1 3/8 inch (25 to 35 mm) head-height band, the eye-line placement, and the instruction not to change the photo using computer software, phone apps, filters or artificial intelligence. ↩ ↩2 ↩3
-
GOV.UK, Photos for passports: the plain light grey or cream background, the 29 to 34 mm head height within a 35 x 45 mm frame, at least 600 x 750 pixels, and 50 KB to 10 MB. ↩ ↩2
-
EU Visa Code, Regulation (EC) No 810/2009, Annex II: the legal basis for the Schengen 35 x 45 mm photograph and its ICAO-aligned face-fill requirement. ↩ ↩2
-
Indian Visa Online, photo instructions: the square format for Indian visa photos and the 300 KB file-size ceiling on the regular visa application. ↩ ↩2
-
U.S. Department of State, Digital Image Requirements: JPEG only, 240 KB or less, square, 600 x 600 to 1200 x 1200 pixels for visa photo uploads. ↩ ↩2
-
SpecSnap on the App Store: Single Photo Export at $0.99 and Annual Unlimited at $4.99 a year. ↩