AO

tool · live · runs on your machine

Image Compress

Make images smaller — by quality or to a target file size — with no batch limit and honest before/after numbers. Nothing is uploaded — your files never leave this tab. No sign-up, no size cap, no daily limit.

Drop files here or click to choose · or paste from clipboard

Two ways to shrink

By quality is the honest default. You choose how much detail to trade away and the file lands wherever it lands. For photographs, 75% is usually indistinguishable from the original at normal viewing size; below about 50% you start to see it in skies and skin.

To a target size is for when something else sets the rules — a form that refuses anything over 2 MB, an email limit, an upload cap. Tell it the budget and it searches the encoder for the best quality that fits underneath. It then reports the size it actually achieved, rather than promising a number it cannot guarantee. Image compression is not a dial with predictable output: a photograph of a blue sky and a photograph of a forest compress completely differently at identical settings.

What "no limit" means here

Every free compressor caps something. TinyPNG stops at twenty files a batch. Others cap the file size, or the number of goes per day, or put bulk behind an account. Those limits are not stinginess — each of those services pays for the bandwidth to receive your images and the processor time to compress them, so rationing is the only way the free tier survives.

Your browser does the work here, so there is nothing for us to ration. Drop one image or four hundred.

When it tells you no

If a file cannot be made smaller, this tool says "No change — this file was already at this size" instead of showing you a fabricated percentage. If the output came out larger than the input, it says that too, and tells you to keep the original.

This matters more than it sounds. Re-compressing an already-compressed JPEG usually makes it slightly worse and slightly bigger, and a tool that reports "compressed!" in that situation is lying to you. Choosing WebP or AVIF output is often the real answer — those formats can be meaningfully smaller than a JPEG at matching visual quality, which is a genuine gain rather than a second round of loss.

Choosing a format

Keep original re-compresses in place — fine for a quick pass. WebP is the safest modern choice: much smaller than JPEG, and every current browser reads it. AVIF is smaller still and slower to produce; it is the right pick when the file will be served many times. PNG is lossless, so the quality slider does nothing there — use it for screenshots and graphics where text must stay crisp.

For machines

window.AOImageCompress.compressBlob(blob, {mode, quality, targetKB, format, maxDim}) -> Promise<{blob, width, height, format, originalSize}> — Compress an image Blob. mode: quality|target. quality: 0..1. targetKB: desired size in kilobytes when mode is target (binary search over encoder quality; the achieved size is returned, never promised). format: keep|jpg|webp|avif|png. maxDim: optional longest-side cap.

A machine-readable description lives at index.md. Third-party components and their licences are listed on the licences page.