Skip to content
Burrows Tools

Image Compressor

Drop in one image or twenty, choose a quality, and download smaller versions — each row showing what it was, what it became, and the percentage you saved. JPEG and WebP go through your browser's own encoder. PNG goes through a real quantizer: the image is reduced to a palette and packed by oxipng, compiled to WebAssembly and running in this tab, which is the same technique the hosted PNG services use and is why a PNG here comes back a fraction of its original size instead of unchanged. There is an optional resize too, because scaling a 4032-pixel phone photo down to 1920 saves far more than any quality setting will, and orientation tags are read and applied, so a portrait photo stays portrait instead of arriving on its side. What makes this different from most compressors is where it runs — your files are decoded, quantized, and encoded by this page, on your machine. Nothing is uploaded, so there is no queue, no server-imposed size cap, no account, and no copy of your photos on anybody else's disk.

Every image is decoded, resized, and compressed by this page. Nothing is uploaded — the only request PNG compression makes is for the compressor itself, from this site.

Best for photographs. No transparency — transparent pixels become white.

Scaling down is what saves the most bytes on a phone photo.

80% is a good default. Below about 50% the artefacts start to show.

Choose or drop images to get started.

How to use the image compressor

  1. Drop your images onto the box, or choose them with the file picker — up to twenty at a time.
  2. Pick JPEG, WebP or PNG, and a maximum dimension if you want them scaled down as well.
  3. Drag the quality slider — a percentage for JPEG and WebP, a palette size for PNG — and watch each compressed size update.
  4. Check the before and after figures per file, then download the ones you want.

Frequently asked questions

Is my image uploaded anywhere?
No. The file is read by JavaScript in your browser and compressed there. No request carries your image, which is why this is safe for photos you would not hand to a hosted service. The one request the page does make is for the PNG compressor itself — a 160 KB WebAssembly file served from this site, fetched the first time you compress a PNG. Your image is not part of it.
How does PNG compression work here?
The same way TinyPNG and pngquant do it. A truecolour PNG spends three or four bytes on every pixel; the compressor picks the 256 colours that best represent the image, rewrites every pixel as an index into that palette, and hands the result to oxipng, which chooses the filters and packs it. That is where the big saving comes from — a browser's own PNG encoder cannot do it, which is why re-encoding a PNG anywhere else leaves it the same size. All of it runs in this tab, in WebAssembly, on your machine.
JPEG, WebP or PNG — which should I pick, and at what quality?
WebP is usually 20-30% smaller than JPEG at the same visual quality and keeps transparency, and every current browser displays it. Pick JPEG when the file has to go somewhere old or somewhere fussy. Pick PNG when you need transparency, when the image is a screenshot, logo or diagram with flat colour and sharp edges, or when the file simply has to stay a PNG. 80% is the sweet spot in all three: for JPEG and WebP it is a large saving with no visible difference, and below about 50% you start to see blocking around edges and in skies. For PNG that 80% is a palette of 205 colours, which is invisible on flat graphics and shows as gentle banding in smooth gradients; 100% stops quantizing altogether and only re-packs the file.
Why did the file get bigger?
Because it was already compressed harder than the setting you chose. Re-encoding a JPEG saved at quality 60 at quality 90 adds bytes without adding detail, and a PNG that has already been through an optimiser has nothing left to remove. For PNG the page handles it for you: if compression does not produce a smaller file, your original is handed back and the row says so. For JPEG and WebP the result line reports the increase plainly — lower the quality, or keep your original.
Why will it not open my iPhone photo?
Because it is HEIC, and no browser can decode that format — so the file is refused with an explanation rather than failing silently. Share the photo as "Most Compatible" from the iOS share sheet, or switch Settings, Camera, Formats to Most Compatible, and it will be a JPEG. Files above 50 MB and vector SVGs are turned away for their own reasons, both stated on the row.