All toolsDocuments

Image Compressor

Drop in one or more JPG, PNG or WebP photos, choose a quality level and an optional maximum dimension, then download a smaller version of each file. Every step happens in this browser tab — nothing is uploaded anywhere.

Applies to JPEG and WebP only — the browser's PNG encoder is always lossless, so this won't shrink a file kept as PNG.
Images wider or taller than this are scaled down before compressing. Set to 0 to keep the original dimensions.
Converting a PNG to JPEG drops transparency; WebP keeps transparency and usually compresses smaller than PNG.

Everything happens on this page using your browser's own canvas and image APIs — your photos are never uploaded, sent to a server, or stored anywhere. Closing or reloading this tab discards them completely.

Downloading several files at once with "Download all" may make your browser ask permission to allow multiple downloads from this page the first time — allow it once and the rest follow automatically.

Getting the most out of it

Start around 80% quality and check the size and preview before changing anything else — for most photos that's close to the point where file size drops sharply but the image still looks sharp. If the picture is going on a website or in an email rather than being printed, also capping the longest side at somewhere around 1600–2000px usually cuts the file size again with no visible loss, since few screens show a photo anywhere near its original camera resolution.

FAQ

Are my photos uploaded anywhere?
No. Decoding, resizing and re-encoding all happen inside this browser tab using the canvas and image APIs built into your browser — nothing is sent to a server. Closing or refreshing the tab discards every file straight away.
Why did my PNG barely get any smaller?
Browsers re-encode PNG losslessly, so the quality setting has no effect on it — any size drop comes only from capping the maximum dimension. For a real reduction on a photo-like PNG, switch Output format to JPEG (if you don't need transparency) or WebP (if you do); both use lossy compression the quality setting actually controls.
What quality setting should I use?
Around 70–85% is a common starting point for JPEG and WebP — high enough that compression artefacts aren't obvious, low enough to cut the file size substantially. Images with fine detail (skin tones, foliage, small text) show artefacts at a higher quality setting than simple graphics or screenshots do, so it's worth previewing a downloaded file before using a low setting on anything important.

Method

No external service or lookup table is involved — this is a thin wrapper around your browser's own image APIs. Each file is decoded with createImageBitmap() (falling back to a hidden <img> element if that API isn't available), optionally redrawn onto an in-memory <canvas> at a smaller size with drawImage(), then re-encoded with HTMLCanvasElement.toBlob() at the MIME type and quality you choose. The quality argument only changes anything for JPEG and WebP; browsers ignore it for PNG, which is always lossless. Because the actual JPEG/WebP encoder is built into your browser rather than this page, the exact output size for the same quality setting can differ a little between Chrome, Firefox, Safari and Edge. Pure client-side arithmetic and re-encoding — no external facts or figures to source.