How it works
- You add a JPG, PNG or WebP. The file is read into this browser tab and decoded once into an ImageBitmap — the decode happens on a worker thread, so a 40-megapixel photo does not freeze the page while it loads.
- The bitmap is drawn to an OffscreenCanvas at its original dimensions, or at a reduced size if you have set a maximum edge length. Resampling uses the browser's own high-quality path, which is the same one it uses to scale images for display.
- The canvas is re-encoded through toBlob at a target quality. The encoder runs a binary search on the quality parameter until the output lands under the size you asked for, rather than guessing once and hoping — which is why the measured result usually sits close to the target rather than well under it.
- Metadata is not carried across. EXIF, GPS coordinates and the camera's maker notes are all discarded by the canvas round-trip, so the compressed copy is stripped of location data as a side effect.
- The result is offered as a blob URL held only by this tab. The before-and-after figures come from the real byte lengths of the input and the output.
Limitations
Compression is lossy, so repeated passes on the same file visibly degrade it. Each re-encode quantises an already-quantised image, and the damage compounds fastest exactly where you notice it — around hard edges, text in a screenshot, and flat areas of sky where banding appears. Compress from the original every time. If you have already compressed a file and it is still too big, going back to the camera roll and starting again gives a better result than a second pass.
PNG is the awkward case. A PNG is losslessly compressed already, and the honest way to make one smaller is to reduce its colour palette, not to re-encode it. A screenshot with large flat regions may shrink substantially; a PNG of a photograph often barely moves, and converting it to JPEG will shrink it dramatically at the cost of transparency. The tool will tell you what it achieved rather than pretending.
Orientation can shift. Phone cameras write the image the sensor saw and add an EXIF orientation flag telling viewers to rotate it. Because the canvas round-trip drops EXIF, the orientation is baked in during the decode rather than carried as a flag — which is correct, but means a photo that displayed sideways in one app because that app ignored the flag will now display consistently everywhere, including differently from how you last saw it.
Stripping metadata is not the same as anonymising an image. The pixels are unchanged; a screenshot still shows what was on screen, and a photo still shows where it was taken if the place is recognisable.
Questions
Is there a file size limit?
No cap is enforced. The practical limit is your device's memory — the decoded bitmap is roughly four bytes per pixel, so a 50-megapixel image occupies about 200 MB before anything is encoded. Files over roughly 500 MB can fail on older phones.
Does the quality change?
Yes, by design — that is where the saving comes from. The default target is chosen to be invisible at normal viewing size and on a phone screen. Zoom to 100% on a detailed area before you replace the original, and never overwrite the original with the compressed copy.
Why did my PNG barely get smaller?
Because PNG is already lossless-compressed, and if the image is a photograph there is little redundancy left to remove. Converting it to JPEG will shrink it by an order of magnitude, but you lose the alpha channel. For screenshots and flat graphics, PNG usually does compress well.
Is my location data removed?
Yes, as a side effect. The canvas re-encode does not carry EXIF across, so GPS coordinates, the camera model and the timestamp are all gone from the output. That is useful before posting a photo publicly, but the visible content of the image is unchanged.
Do I need an account?
No. There is no sign-up, no email step and no usage counter. The tool is paid for by the ads on this page.
When people use it
The deadline case is a form that will not accept the photo. Passport applications, job portals and insurance claims routinely cap uploads at 200 KB or 1 MB, and a phone photograph is between five and fifteen times that. There is no way to negotiate with the form, so the file has to change.
The slower case is a website. Images are usually the largest thing a page loads, and an uncompressed hero photograph is the difference between a page that renders in under two seconds on a phone and one that does not. Compressing before upload is the cheapest performance work available to anyone maintaining a site, and it does not need a build pipeline.
If the images are already inside a document rather than loose on disk, Compress PDF does the same re-encode on the pictures embedded in a PDF without touching the text layer.
How it compares
Against an online compressor, the difference that matters is that a photograph of your child, your passport or your whiteboard never leaves the device — and image compression is not computationally hard enough to justify sending it anywhere. What a desktop tool such as ImageOptim, Squoosh's advanced modes or a build-time pipeline does better is format choice: encoding to AVIF or WebP with per-image tuning will beat a JPEG round-trip meaningfully, and if you are compressing hundreds of images for a site, that belongs in a build step, not a browser tab.