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?
| Tool | Says it runs locally? | Photo bytes sent | Third-party trackers |
|---|---|---|---|
| IDPhotoSnap | Yes | 0 | Google Analytics, GTM, Yandex Metrica |
| Passport Photo Snap | Yes | 0 | Google Analytics, GTM, Clicky, Cloudflare |
| ID Photo Maker (ours) | Yes | 0 | none |
| PhotoGov | No | 269,088 | DoubleClick, Facebook, Google Ads, GA |
| VisaPics | No (see below) | not tested | Facebook, Google Analytics |
| PixelVault / Foto MX | — | — | these 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:
fetch()XMLHttpRequest.prototype.send()navigator.sendBeacon()WebSocket.prototype.send()<form>submit events, for non-JavaScript multipart uploads
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.
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."
- pixelvault.com contains no mention of passports, visas or ID photos.
- fotomx.com is a Spanish-language Mexican photography studio.
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.
| IDPhotoSnap | Passport Photo Snap | ID Photo Maker (ours) | |
|---|---|---|---|
| Photo stays local | yes | yes | yes |
| Third-party trackers | GA, GTM, Yandex | GA, GTM, Clicky | none |
| Head-height guide | no (rule-of-thirds only) | no | crown and chin lines |
| Print sheet | A4 only | A4 | 4×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
- It is a snapshot. We tested on 2026-09-15. Any of these sites can change.
- We tested the default flow. A tool might upload only in a path we did not walk — a human-review upsell, an account feature, a different document type.
- "No upload" is not "no network." Every tool here, ours included, makes requests: fonts, scripts, models, analytics. The narrower and more useful question is whether your photo's bytes leave.
- We did not audit compliance. Whether any of these tools produces a photo your government will accept is a separate question, and no browser tool can promise it.
- Local processing is not the only privacy property that matters. A tool that keeps your photo local while loading four trackers has made a real but partial promise.
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.
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.