PhotoSpec

How it works

Five steps, none of which involve a server.

  1. You pick a document

    The format decides everything downstream: photo size in millimetres, print resolution, the allowed head height and where the eye line has to sit.

    32 – 36 mm45 mm35 mm
    Photo size
    35 × 45 mm
    Print resolution
    600 dpi
    Exported file
    827 × 1063 px
    Head height
    32 – 36 mm
    Eye line from bottom
    27 mm
    A format is a set of numbers, not a country name — these are the ones every later step works from.
  2. The face is detected

    A model finds the eyes and the chin on a downscaled copy of your photo. The top of the head is calculated from face proportions, because detectors see faces rather than hair.

    top of headeyeschinestimateddetecteddetected
    Filled points are measured, the hollow one is calculated: the detector stops at the hairline, and the crown has to be inferred from it.
  3. The crop is calculated

    The frame is rotated until the eye line is level, scaled so the head lands in the middle of the allowed range, and positioned so the eyes sit at the required height.

    1. Rotate

      until the eye line is level

    2. Scale

      head height into 32 – 36 mm

    3. Position

      eyes at 27 mm from the bottom

    Three operations on one frame. The tilt is exaggerated here — real handheld shots are off by two or three degrees.
  4. Everything is measured

    Head height, eye line, centring, tilt and resolution are compared with the requirement and shown with the numbers, so you can check them yourself.

    Head height34.2 mm

    allowed 3236 mm

    Eye line from bottom27.1 mm

    allowed 2628 mm

    Head tilt0.4 °

    allowed 03 °

    Output resolution827 × 1063 px
    The band is what the format allows. A value at the edge of it passes too — but it is worth retaking.
  5. The file is written

    A JPEG of the exact pixel size, with the correct print density written into its header — plus a 10×15 cm sheet if you want to print at a kiosk.

    One file for the form

    Pixels
    827 × 1063 px
    Print density
    600 dpi in the header
    Format
    JPEG

    germany-id-card-827x1063.jpg

    One sheet for the kiosk

    germany-id-card-print-sheet-10x15.jpg

    Online forms want the file, counters want paper. Both come out of the same crop.

Photos never leave your device. There is no upload step to skip and no server to trust — the site is static files, and the processing happens in your browser. See the privacy policy.

What it does not do

No retouching, no beautifying, no background replacement by default. An over-edited photo with a hard synthetic edge is treated worse by some offices than an honest shot against a light wall.