Do online image compressors upload your photos?
Most of them say your files never leave your device. We tested nine with a photo carrying a hidden marker, and watched every request each page made. Two sent the entire file to a server. Six did not.
Measured 25 September 2026 · one run per tool · method and raw data below
How the test works
Marketing copy is not evidence, so we did not take any of it at face value. We built a 333.52 KB JPEG and hid a unique marker inside its EXIF data — a random string that exists nowhere else on the internet. If that string shows up in a request leaving the browser, then bytes from that file left the browser. There is no way to argue with it.
The probe photo is 341,529 bytes, 1600 × 1200, saved at quality 88 with GPS coordinates in its metadata, so it behaves like a real photograph rather than a test pattern. Its SHA-256 is f97c47b18f4a1a35c23a33822ce1e2afa833c114f545a1690085121ca6e5e209.
Then, for each tool: load the page in a headless browser, hand it the photo, press whatever button starts the work, and record every outbound request. We record from inside the page rather than from the browser's debugging protocol, because the protocol quietly drops large and streamed request bodies — using it made one upload look like a 1,144 byte request with nothing in it.
We also ran the whole thing against our own compressor as a control. A test that cannot show a file staying home is not fit to show one leaving.
Results
| Tool | Largest thing it sent | Where it went | Result |
|---|---|---|---|
| TinyPNG | The whole file — 341,529 bytes, marker matched 3× | /backend/opt/store | Uploads |
| iLoveIMG | The whole file — 341,729 bytes, marker matched 1× | https://api10.iloveimg.com/v1/upload | Uploads |
| Squoosh | Nothing the size of a photo | — | Stays in your browser |
| CompressJPEG | Nothing the size of a photo | — | Stays in your browser |
| ImageCompressor | Nothing the size of a photo | — | Stays in your browser |
| JPEG Optimizer | Nothing the size of a photo | — | Stays in your browser |
| Private Image Compressor | Nothing the size of a photo | — | Stays in your browser |
| LocalPhotoTool (this site) | Nothing the size of a photo | — | Stays in your browser |
| FreeConvert | Nothing the size of a photo | — | Not determined |
The two that upload
TinyPNG sent the complete file — all 341,529 bytes — and our marker was found in the request body three times. iLoveIMG sent the file to an upload endpoint as well, and the marker was found there too.
Neither is doing anything wrong. Both are server-side compressors by design: that is how the product works, and both are upfront about it. What it changes is where your photo physically goes. If the photo still carries GPS coordinates, those go with it.
The six that do not
Squoosh, CompressJPEG, ImageCompressor, JPEG Optimizer, Private Image Compressor and this site each showed our file's size in their own interface and produced a smaller version, while sending nothing large enough to have contained it. For those tools the claim checks out.
One tool, FreeConvert, we could not get to run under automation — it never displayed our file, so we recorded no verdict rather than invent one. Absence of evidence is not evidence of privacy.
What this test cannot tell you
- It is one run. One file, one browser, one day. Any of these tools can change their behaviour without saying so.
- It only sees what the page sends. What a server does with a file after receiving it — how long it keeps it, who can read it — is outside what this method can observe.
- Server-side is not the same as unsafe. Plenty of people are fine with uploading a holiday photo. This matters for contracts, medical images, ID documents and anything you would not post publicly.
- A "stays local" result is for that page on that day. Re-run it yourself before trusting it with something that matters.
Checking a compressor yourself
This takes about ten seconds and needs no tools beyond the browser you already have.
- Open the compressor, then open developer tools (F12, or Ctrl+Shift+I) and switch to the Network tab.
- Reload the page so the list starts clean, then add your photo and start the compression.
- Watch the Size column. If the biggest request is a few kilobytes, your photo was processed on your machine. If one request is about the size of your photo, it was uploaded.
- Click that large request and open Request or Payload. If you can see your image in there, it left the browser.
The full walkthrough, including what to do about it, is on our compress without uploading page.
Re-running the measurement
The probe generator and the measurement script are in the project repository, along with the raw per-site JSON this page was built from. Publish a correction if you find one — the point of writing the method down is that it can be checked.
Frequently asked questions
Does TinyPNG upload my photos?
Yes. In our test the full file — all 341,529 bytes — was sent to TinyPNG's own backend, and our marker was found in the request body three times. That is not a defect: TinyPNG is a server-side compressor by design, and it says so. It does mean your photo, including any GPS coordinates still in it, travels to their servers and is briefly stored there while it is processed.
Does iLoveIMG upload my photos?
Yes. Our file was posted to an iLoveIMG upload endpoint and the marker was found in the request body. iLoveIMG is also server-side by design, and the compression happens on their infrastructure.
Which compressors actually keep the file on my device?
In this test: Squoosh, CompressJPEG, ImageCompressor, JPEG Optimizer, Private Image Compressor and LocalPhotoTool. For each of these the tool displayed a before-and-after size for our file while sending nothing that could have contained it.
How can I check a compressor myself?
Open your browser's developer tools, go to the Network tab, then compress a photo. Look for a request roughly as large as your file. If the largest request is a few kilobytes, the image was processed locally; if one is about the size of your photo, it went to a server. We wrote up the exact steps at compress images without uploading.
Does "uploads" mean the tool is unsafe?
No. Uploading is a legitimate architecture, and it is how most of these services work. What it changes is where your photo physically goes and who could technically see it. If you are compressing anything sensitive, that difference is the whole point.
How reliable is this test?
It is one run, one file, one browser, on one date. Tools change their code without announcing it, and a result here says nothing about what a server does with a file after receiving it. We publish the method and the raw per-site data so you can re-run it rather than take our word.