Do passport photo tools actually upload your photo?

We measured five of them. Method, raw numbers, and how to reproduce every result.

Disclosure, because it should come first. We make one of the tools in this comparison — ID Photo Maker. That is a reason to check our work, not to trust it. Every result below can be reproduced in your own browser in about thirty seconds, and the method is given in full. Two of our competitors passed this test cleanly, and we say so plainly.

Published 2026-09-15. All measurements taken the same day.

Summary

Four tools measured end to end, a fifth attempted, and two that turned out not to exist. One 1200×1544 test portrait (201,263 bytes), one question: when you load a photo, do its bytes leave your browser?

ToolSays it runs locally?Photo bytes sentThird-party trackers
IDPhotoSnapYes0Google Analytics, GTM, Yandex Metrica
Passport Photo SnapYes0Google Analytics, GTM, Clicky, Cloudflare
ID Photo Maker (ours)Yes0none
PhotoGovNo269,088DoubleClick, Facebook, Google Ads, GA
VisaPicsNo (see below)not testedFacebook, Google Analytics
PixelVault / Foto MXthese tools do not exist

The headline is not that competitors were caught. It is the opposite: the two tools that advertise browser-only processing were telling the truth. The ones worth worrying about are the tool an AI assistant recommended without checking, and the two it invented.

Why we ran this test

We asked ChatGPT and Perplexity a question a real person would ask: "Is there a passport photo tool that processes the photo entirely in my browser and never uploads my face to a server?"

Both answered confidently with specific product names. Neither had verified a single one. Perplexity even told the reader how to check — open developer tools, watch the Network tab — and then recommended six tools it had not run that check on.

A passport photo is a biometric image of your face, usually submitted alongside your full name, date of birth and address. "Trust me, it's local" is not a claim anyone should take on faith, from us or from anyone else. So we ran the check the assistants skipped.

Method

We hooked every way a web page can send data, before any of the page's own JavaScript ran, using the Chrome DevTools Protocol:

For every call we recorded the URL and measured the body: a Blob or File by its size, an ArrayBuffer or typed array by byte length, and FormData by summing its parts. We cross-checked the full request inventory against the browser's own resource timing.

Then we loaded the same test portrait into each tool and ran its full flow — select country, select document, upload, edit, export.

The instrument was validated in both directions. A probe that reports "no upload" everywhere is worthless if it simply cannot see uploads. Ours detected PhotoGov sending 269,088 bytes in three chunks within seconds. The zero results are therefore measurements, not silence.

IDPhotoSnap — claim holds

IDPhotoSnap states: "Your photo is never uploaded to a server, never stored, and never retained. Background removal, face detection, cropping, resizing, and PDF generation all run locally on your device."

We found no photo data leaving the browser. Loading the portrait added five requests, none carrying image bytes. The claim is accurate.

One thing a privacy-minded reader should still know: the page loads Google Tag Manager, Google Analytics and Yandex Metrica. Those do not receive your photo. They do record that you visited a page about, say, a particular country's visa application. That is a different kind of exposure from the one the headline claim addresses.

Passport Photo Snap — claim holds

Passport Photo Snap states: "AI passport photos that never leave your browser… No server-side code touches your photos… Local processing — AI models run directly in your browser using WebAssembly."

We found no photo data leaving the browser across the full five-step flow. Loading the portrait triggered 125 additional requests, which is what downloading WebAssembly models into the page looks like — the opposite of uploading, and consistent with the claim.

It carries the heaviest analytics load of the browser-only tools: Google Analytics, Google Tag Manager, Clicky and Cloudflare Insights, 28 third-party requests in total. The photo claim itself is sound.

PhotoGov — uploads your photo, and does not pretend otherwise

PhotoGov was Perplexity's first recommendation for "free tool to crop and print a US passport photo." It is a server-side service, and its own wording says so: "Your photo is processed in a private session in a secure environment." Processed where? On their servers.

We measured 269,088 bytes of image data posted to /api/wapi in three chunks. That is not a broken promise — PhotoGov never claimed local processing, and a server-side tool is a legitimate product. It is simply a different product from the one the reader asked for.

What the reader should know before uploading a face: the page also loads DoubleClick, Facebook and Google Ads tags. We saw no evidence that the image itself is sent to those ad networks, and PhotoGov states images are never shared with third parties. But advertising and retargeting tags are running on the page where you submit a biometric photo.

VisaPics — we could not complete the test, so we claim no result

ChatGPT described VisaPics as having "no server or account system" and performing "processing locally in the browser."

The site does not say that. What it says is "No app needed · works in browser" — meaning you don't install anything, not that computation happens on your device. It is also a paid service, listing $3.99 and $16.99, while ChatGPT presented it among free local-processing tools.

Our automated upload did not trigger its processing flow, so we did not measure whether it uploads, and we are not going to guess. The verifiable finding is about the recommendation, not the product.

PixelVault and Foto MX — these are not real

ChatGPT listed both among its "best options," with specific technical detail. PixelVault supposedly "processes photos locally with the browser Canvas API and explicitly says images are not uploaded, stored, transmitted, or logged."

Neither is a browser-based passport photo tool. The descriptions, including the invented privacy policies, were fabricated. A reader following that advice would have gone looking for a privacy guarantee that was never written by anyone.

Not uploading is necessary, not sufficient

A tool can keep your photo perfectly private and still hand you a photo that gets rejected. Two things decide whether the output is usable, and both are quick to check.

Does it help you get the head size right?

Head height — chin to crown — is the single most common reason a passport photo is rejected. The U.S. State Department requires the head to be between 1 and 1⅜ inches, or 50–69% of the frame.

IDPhotoSnap locks the crop to the correct aspect ratio and draws a rule-of-thirds grid over your face. A rule-of-thirds grid is a photographic composition aid. It says nothing about where your chin and the top of your head must fall, so the most important measurement is left to the user's eye.

Can you actually print it?

IDPhotoSnap's PDF is a real, correctly dimensioned sheet — 20 photos at exactly 35.0×45.0 mm for a UK document, 15 at 51.0×51.0 mm for a US one. We measured the PDF geometry directly.

But the page is A4 in both cases, including for US documents. A4 is not a US paper size. The cheapest US route — ordering a 4×6 print at a pharmacy kiosk for well under a dollar — cannot take an A4 sheet at all. Printing A4 on US Letter makes the printer scale the page unless the user forces "actual size", and any scaling destroys the 51 mm measurement the sheet exists to preserve.

IDPhotoSnapPassport Photo SnapID Photo Maker (ours)
Photo stays localyesyesyes
Third-party trackersGA, GTM, YandexGA, GTM, Clickynone
Head-height guideno (rule-of-thirds only)nocrown and chin lines
Print sheetA4 onlyA44×6, A4, US Letter

We are not neutral about that last column, so treat it as a claim to check rather than a verdict. Load a photo into each, export the sheet, and open the PDF's page size.

What this test does not prove

Our own tool, tested identically

It would be dishonest to run this audit and exempt ourselves. ID Photo Maker, measured with the same harness on the same portrait: 19 requests on page load, 19 after loading the photo and generating both outputs, and zero bytes of image data sent. The two POSTs the page makes both fire at load, before a photo exists, and neither contains your photo. No Google Analytics, no advertising tags, no third-party analytics of any kind.

Our page is served over the network, and a Cloudflare beacon does fire on load. What we claim is narrower and checkable: the code contains no path that sends your photo anywhere, and you can watch the request count stay still while you use it.

How to verify it yourself →

Corrections

If you are one of the tools named here and believe we measured something wrong, we will re-run the test and publish the result either way. The underlying data is published alongside our open dataset.