Do online image compressors upload your photos?

Most of them say your files never leave your device. We tested fifteen with a photo carrying a hidden marker, and watched every request each page made. Exactly two sent the entire file to a server. Seven did not.

Measured 4 October 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 16fd7e80a37e0988544a678263f945c87cb9c08a57a580dbff5a173ece97c61c.

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

ToolLargest thing it sentWhere it wentResult
TinyPNGThe whole file — 341,529 bytes, marker matched 3×/backend/opt/storeUploads
iLoveIMGThe whole file — 341,729 bytes, marker matched 4×https://api22.iloveimg.com/v1/uploadUploads
SquooshNothing the size of a photo—Stays in your browser
CompressJPEGNothing the size of a photo—Stays in your browser
ImageCompressorNothing the size of a photo—Stays in your browser
JPEG OptimizerNothing the size of a photo—Stays in your browser
Private Image CompressorNothing the size of a photo—Stays in your browser
LocalPhotoTool (this site)Nothing the size of a photo—Stays in your browser
compressimage.netNothing the size of a photo—Stays in your browser
LocalPhotoTool (this site)Nothing the size of a photo—Stays in your browser
FreeConvertNothing measurable—Not determined
CompressPNGNothing measurable—Not determined
iLoveIMG (JPG page)Nothing measurable—Not determined
BulkCompressorNothing measurable—Not determined
imagecompress.comNothing measurable—Not determined
resizeimage.netNothing measurable—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 seven that do not

Squoosh, CompressJPEG, ImageCompressor, JPEG Optimizer, Private Image Compressor, compressimage.net 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.

The six we could not reach a verdict on

Six of the fifteen never ran under automation: FreeConvert, CompressPNG, iLoveIMG's JPG page, BulkCompressor, imagecompress.com and resizeimage.net. Each one either never displayed the file in a way our script could drive, or no longer serves the address we tested — resizeimage.net did not resolve at all, which is its own answer about the tool, not about its traffic.

These rows are blank on purpose. A tool we failed to start is not a tool that respects your privacy, and filling the cell with a guess would turn this into the kind of claim we set out to check. If you want these six tested, the script takes one site id at a time and the raw JSON shows exactly where each run stopped.

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.

  1. Open the compressor, then open developer tools (F12, or Ctrl+Shift+I) and switch to the Network tab.
  2. Reload the page so the list starts clean, then add your photo and start the compression.
  3. 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.
  4. 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 (MIT), 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, compressimage.net 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?

Fifteen tools, one run each, one file, one browser, on one date. Six of the fifteen never ran under automation and are reported as not determined rather than guessed at, so the eight real verdicts carry more weight than the raw count suggests. 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.

What happened to the compressors with no verdict?

FreeConvert, CompressPNG, iLoveIMG's JPG page, BulkCompressor, imagecompress.com and resizeimage.net. Our script could not drive any of them: they never showed the file in a way automation could use, and one address no longer resolves. We left those rows blank. A tool we failed to start is not evidence of anything either way, so it is not evidence of privacy.