ReadoutKit

Image compressor

Shrink photos without uploading them. The file never leaves your device.

Runs entirely in your browser. Nothing you enter is uploaded.

Written and maintained by ReadoutKit / Takashi Yamazaki

How this works

Resize first, then compress

The single biggest saving usually has nothing to do with the quality slider. A photo straight from a modern phone is often 4,000 pixels across. Displayed at 800 pixels wide on a web page, three quarters of every dimension is thrown away by the browser anyway — you paid to transfer pixels nobody ever saw.

File size scales with area, not with width, so halving the longest edge quarters the pixel count. Here is that effect measured: one 1280 × 992 screenshot (91.4 KB as PNG), written out at a fixed quality of 0.75 with only the longest edge changing.

FormatLongest edgePixelsSizevs original
JPEG12801280 × 99267.9 KB76.3%
WebP12801280 × 99238.7 KB43.5%
JPEG12001200 × 93056.3 KB63.2%
JPEG900900 × 69839.7 KB44.6%
JPEG640640 × 49622.9 KB25.7%
WebP12001200 × 93032 KB36%
WebP900900 × 69821.8 KB24.5%
WebP640640 × 49612.3 KB13.8%

Dropping the longest edge from 1280 to 900 — a change most viewers would not notice on a page that displays the image at 600 — takes the JPEG from 76.3% of the original to 44.6%, and the WebP from 43.5% to 24.5%. Reaching the same saving with the quality slider alone means going to a setting where the artefacts are visible.

A practical order of operations:

  1. Decide the largest size the image will ever be displayed at.
  2. Resize the longest edge to about twice that, for high-density screens.
  3. Then, and only then, adjust quality.

What the quality setting actually does

Lossy formats work by discarding detail the eye is bad at noticing — fine colour variation especially, since human vision is far more sensitive to brightness than to hue. The quality number controls how aggressively that discarding happens. The same image again, at full size, with only the quality changing:

FormatQualitySizevs original
JPEG0.95128.6 KB144.6%
JPEG0.8585 KB95.6%
JPEG0.7567.9 KB76.3%
JPEG0.655.1 KB61.9%
JPEG0.444.3 KB49.8%
WebP0.9574.9 KB84.2%
WebP0.8550.2 KB56.5%
WebP0.7538.7 KB43.5%
WebP0.634.5 KB38.8%
WebP0.428.8 KB32.4%

Two things stand out. The curve is steep at the top and flat at the bottom: going from 0.95 to 0.85 removes a third of the JPEG, while going from 0.6 to 0.4 removes only a fifth of what is left, and that last step is where the damage becomes obvious. And WebP is smaller than JPEG at every single setting — at quality 0.75 it is 43% of the original where JPEG is 76%.

As rough guidance: 0.9 and above is for archiving, 0.75 to 0.85 is the usual web choice, 0.6 to 0.75 starts showing artefacts in gradients such as skies, and below 0.6 is thumbnails only.

Compression is not reversible. Each save at a lossy setting discards detail permanently, so repeatedly editing and re-saving the same JPEG degrades it a little each time. Always compress from the original, not from a previously compressed copy.

When compressing makes the file bigger

Look at the top row of the quality table again: JPEG at 0.95 is 144.6% of the PNG it came from. The “compressed” file is half again as large as the original, and it looks worse. This is the most common way image compression is used wrongly, and it happens whenever a screenshot or a flat graphic is pushed through a high-quality JPEG.

The reason is that the two formats are built for opposite kinds of picture. PNG stores runs of identical pixels cheaply, which is exactly what a screenshot is made of. JPEG assumes smooth gradients and spends its bits on the sharp edges around text, which is exactly what a screenshot has most of. Feed each format the picture it was designed for and both do well; swap them and both do badly.

Re-encoding losslessly is not the answer either:

Written asSizevs original
Original PNG89 KB100%
PNG132.4 KB148.7%
WebP(lossless)281 KB315.8%

Both lossless outputs are larger than the file they came from — the browser's PNG encoder is an honest but plain one, not the heavily optimised encoder that produced the original. This is a real limit of doing the work in a browser tab, and it is worth stating plainly: if your PNG has already been through an optimiser, this tool cannot beat it losslessly. What it can do is get you to a much smaller lossy file, or to a smaller size.

The practical rule that falls out of all three tables: for photographs, reach for WebP or JPEG and resize before you touch quality. For screenshots, diagrams and anything with text or flat colour, keep PNG or use WebP, and reduce the pixel count rather than the quality.

Choosing a format

WebP is the default worth reaching for. It compresses better than JPEG at the same perceived quality, supports transparency, and works in every current browser. The main reason to avoid it is a system elsewhere in your workflow that will not accept it.

JPEG remains the safest interchange format. Anything that reads images at all reads JPEG. It cannot store transparency, which is why this tool fills transparent areas with white when you convert to it — otherwise they would come out black.

PNG is lossless. That makes it the correct choice for screenshots, logos, charts and line drawings, where lossy compression smears the sharp edges into visible mush. It is the wrong choice for photographs, where it often produces a file several times larger than the JPEG it replaced.

Why local processing is the better arrangement

Most compression sites work by uploading your file, processing it on a server, and returning a download link. That means a copy of your image existed on someone else's machine, subject to their retention policy, their access controls, and their breach history. For a holiday snapshot that may not matter. For a passport scan, a medical document, or an unreleased product photo, it very much does.

Browsers have been able to decode, resize, and re-encode images natively for over a decade. Sending the file away was never technically necessary — it was just easier to build. Processing locally is also faster, because there is no upload wait and no queue, and it works with several files at once without a size cap imposed by someone's bandwidth bill.

Common questions

Why did my file get bigger after compressing it?
Almost always because a screenshot or flat graphic was written out as a high-quality JPEG. Measured on a 1280 × 992 screenshot that was 91.4 KB as PNG: JPEG at quality 0.95 comes out at 144.6% of the original, and it looks worse. PNG stores flat colour cheaply and JPEG does not, so the format that was meant to shrink the file inflates it instead. Either lower the quality substantially, switch to WebP, or reduce the pixel dimensions and stay on PNG.
Should I use WebP or JPEG?
WebP, unless something downstream cannot read it. On the measured screenshot WebP is smaller than JPEG at every quality setting — at 0.75 it lands at 43.5% of the original where JPEG is 76.3%, roughly a 43% saving for the same setting. WebP also keeps transparency, which JPEG cannot. The remaining case for JPEG is compatibility: some older editors, print workflows and email clients still refuse WebP.
Is resizing better than lowering quality?
Usually, yes, and by a wide margin. Size scales with area, so halving the longest edge quarters the pixel count. Measured on the same screenshot at a fixed quality of 0.75: at full width the JPEG is 76.3% of the original, at a 900-pixel longest edge it is 44.6%, and at 640 it is 25.7%. Reaching 25% with the quality slider alone means going below 0.4, where the artefacts are plainly visible. Resize to about twice the display size, then adjust quality.
Is my photo really not uploaded?
Really not. The compression uses your browser's own image encoder through a canvas element — the same code that renders every image you see on the web. You can confirm it: open your browser's network inspector, compress a file, and watch that no request is made. Disconnect from the internet after the page loads and the tool still works.
Which format should I choose?
WebP for almost everything on the web — it is typically 25–35% smaller than JPEG at matching visual quality and is supported everywhere that matters. JPEG when something downstream will not accept WebP. PNG only for screenshots, diagrams, and anything with sharp edges or transparency, where lossy compression leaves visible artefacts.
Why did my PNG get bigger?
PNG is lossless, so re-encoding a photograph as PNG stores every pixel exactly and often produces a larger file than the JPEG you started with. If a photo grows, switch the output to WebP or JPEG. PNG is the right choice for flat graphics, not for photographs.
What quality setting should I use?
Around 75 is the usual sweet spot: most people cannot see the difference from the original at normal viewing size, and the file is a fraction of the size. Below 60, edges and gradients start to show blocking. Above 90, the file grows quickly for very little visible gain.
Does compressing remove EXIF data?
Yes, as a side effect. Redrawing through a canvas keeps only the pixels, so camera settings, timestamps and — importantly — GPS coordinates do not survive. That is usually welcome before posting a photo publicly, but do keep an original if the metadata matters to you.

Sources

The formulas and rates used by this tool come from the documents below. Rules change; when a figure here disagrees with the source, the source is right.

Figures checked against the sources below on September 1, 2026.

Other tools