Image Compressor

Add up to 20 images, set a format, size limit and quality, then download the smaller versions. Everything runs client-side — your images never leave the browser.

Drop images here

or choose files — up to 20 at once. They never leave your browser.

How the compression works

Each image is decoded with createImageBitmap, drawn onto an off-screen <canvas> at the target size, and re-encoded with canvas.toBlob(type, quality). That is the same pipeline a browser uses to render a photo, so there is no upload step and no third-party service — open your developer tools and watch the network tab stay empty. When you close the tab, every trace of the images is gone.

Resizing versus re-compressing

Two things shrink a file: fewer pixels and a lower quality setting. Halving the width and height of a photo removes three-quarters of its pixels, which usually matters far more than the quality slider. If your goal is a smaller download for the web, set a sensible maximum dimension first — 1600 px is plenty for a full-width blog image — and only then lower the quality. The tool preserves the aspect ratio and never enlarges an image, so a small source stays its original size.

Choosing a format

JPEG is the universal choice for photographs and is supported everywhere. WebP typically produces a file 20–30% smaller than JPEG at the same visual quality and is now supported by every current browser, so it is the best default for websites.PNG is lossless: keep it for screenshots, logos, line art and anything with a transparent background or hard edges, but never convert a photo to PNG expecting it to shrink — it will balloon.

Related tools

Need a scannable graphic rather than a smaller photo? TheQR code generator builds one in the browser too. Working with documents instead of images? TryPDF merge & split. And if you just need placeholder pictures while you design, generate copy with theLorem Ipsum generator.

Related tools

Frequently asked questions

Do my images get uploaded anywhere?
No. The compression happens entirely in your browser using the canvas API. The images are read from your disk, resized and re-encoded in memory, and offered back to you as downloads. Nothing is sent to a server.
Which formats can I convert between?
PNG, JPEG and WebP, in any direction. 'Keep original' re-encodes each image in its current format. WebP usually gives the smallest file at a given quality; JPEG is the safest for wide compatibility; PNG is lossless and best for graphics with sharp edges or transparency.
What does the quality slider do?
It sets the encoder quality for JPEG and WebP, from 0.1 (tiny, blocky) to 1.0 (large, near-lossless). It has no effect on PNG, which is always lossless. Around 0.7–0.85 is a good balance for photos.
Why did my PNG get bigger?
Canvas PNG encoding is not as efficient as a dedicated optimiser, and converting a JPEG photo to PNG stores every pixel losslessly, which is far larger. For photos, choose JPEG or WebP. The 'Saved' column turns red when a file grew so you can spot it.
Can it open HEIC photos from my iPhone?
No — browsers cannot decode HEIC/HEIF onto a canvas, so those rows show a notice. Convert them to JPEG first (an iPhone can export JPEG directly, or macOS Preview can), then compress here.
How do the max width and height work?
They cap the output dimensions while preserving the aspect ratio, and never upscale. Leave one or both blank for no limit. If both are set, the image is scaled to fit inside the box formed by the two.
Is there a limit on file size or count?
Up to 20 images per batch. There is no hard per-file size limit, but very large images use a lot of memory while they are decoded, so a huge batch of 50-megapixel photos may be slow on a low-end device.

Last reviewed: September 2026. Figures and formulas are checked against their published sources; see the site's data notes.