KKwikfig.

Image Compressor

Compress JPEG, WebP and PNG images in your browser — set a quality, see the exact byte saving per file, and download. Images never leave your device. Runs entirely in your browser — your numbers never leave this device.

Add images to compress
Click to browse, or drag and drop files here — it never leaves your device.
Quality — 80
10 — smallest file100 — best quality
Output format

No images yet. Add one or more above — each is decoded and re-encoded on this device, and the compressed size shown is the exact byte count of the file you will download.

How it works

Output = canvas re-encode of the decoded (EXIF-corrected) pixels in the chosen format at the chosen quality | Saving % = (1 − output bytes ÷ original bytes) × 100, both byte counts exact
The three output formats compared
FormatQuality sliderTransparencyBest for
JPEGApplies — lossyNo (white backing)Photos; the universal default
WebPApplies — lossyNo in this tool (white backing)Photos for the web; usually the smallest file
PNGIgnored — losslessPreservedScreenshots, logos, graphics with text

Compression here is re-encoding, done entirely on your device: each image is decoded in your browser (with its EXIF orientation corrected, so phone photos come out upright), drawn to a canvas at its original pixel dimensions, and encoded again as JPEG, WebP or PNG at the quality you choose. Lower quality throws away more visual detail in exchange for fewer bytes; the slider runs from 10 (smallest file) to 100 (closest to the original). Because dimensions never change, the saving comes purely from the encoder — which is why the before and after sizes can be compared byte for byte, and why the compressed figure shown is the exact size of the file you will download, not an estimate.

The formats behave differently and the tool shows it honestly. JPEG and WebP are lossy: quality controls how much detail is discarded, and WebP usually beats JPEG by a visible margin at the same quality. PNG is lossless, so it ignores the quality slider entirely — re-encoding a photograph as PNG commonly produces a file larger than the original, and the per-file readout says so in plain words instead of dressing a negative saving up as a win. JPEG and WebP output is laid over a white background, because those formats have no transparency and a transparent PNG's clear pixels would otherwise turn black.

Privacy is architectural, not a promise: your images are read from your own disk by your own browser, processed in memory, and offered back as downloads. They are never uploaded, stored, logged or sent to any server — there is no server component to this tool at all. You can verify it by loading the page, disconnecting from the network, and compressing as usual; it works identically offline.

Worked examples

A phone photo at quality 80

Input
IMG_2041.jpg — 4032 × 3024 px, 4,812,300 bytes, format JPEG, quality 80
Working
The photo is decoded, orientation-corrected and re-encoded as JPEG at quality 80, still 4032 × 3024. Recorded output: 1,204,556 bytes. Saving = (1 − 1,204,556 ÷ 4,812,300) × 100 = 75.0%.
Result
4,812,300 bytes → 1,204,556 bytes — 75.0% smaller

A screenshot converted to WebP

Input
dashboard.png — 1920 × 1080 px, 2,345,678 bytes, format WebP, quality 80
Working
The flat colours of a screenshot compress hard in WebP. Recorded output: 312,450 bytes. Saving = (1 − 312,450 ÷ 2,345,678) × 100 = 86.7%.
Result
2,345,678 bytes → 312,450 bytes — 86.7% smaller

The honest failure case: photo to PNG

Input
portrait.jpg — 800 × 600 px, 456,789 bytes, format PNG
Working
PNG is lossless, so re-encoding a JPEG photo stores every pixel exactly and the file grows. Recorded output: 987,654 bytes, which the tool reports as 116.2% larger with the advice to use JPEG or WebP instead.
Result
456,789 bytes → 987,654 bytes — PNG made it bigger

Frequently asked questions

Are my images uploaded to a server?

No — never. Decoding, re-encoding and downloading all happen inside your browser on your own device. No image (or copy, thumbnail or metadata about it) is sent anywhere, stored, or logged. Load the page, go offline, and the compressor works exactly the same, which is the proof of the design.

What quality setting should I use?

80 is the practical default for photos: visually close to the original at roughly a quarter of the size in the worked example above. Drop to 60–70 for thumbnails and previews where the image is shown small; stay at 90+ for images that will be printed, edited further, or viewed full-screen. Below about 40, JPEG and WebP artefacts — blockiness around edges, smeared text — become hard to miss.

Why did my compressed PNG come out larger than the original?

Because PNG is lossless and ignores the quality slider. A JPEG original has already discarded detail to save space; converting it to PNG re-stores the remaining pixels exactly, at full cost. The tool reports the negative saving plainly rather than hiding it — for photos, choose JPEG or WebP; keep PNG for graphics, screenshots and anything needing transparency.

Does compressing change the image dimensions?

No. The output has exactly the same pixel width and height as the decoded original — only the encoding changes. If you need different dimensions, run the file through the Image Resizer, whose output you can then compress here.

Can I compress several images at once?

Yes — add as many files as you like and each gets its own row with its original size, its compressed size, its percentage saved and its own download button. Changing the quality or format re-encodes the whole list, and the totals row sums original versus compressed across everything loaded.

Related tools

More in Image Tools · Browse all tools