Compress image
Makes JPEG, PNG and WebP files smaller without sending them anywhere.
Drop a photo and get a lighter copy in seconds, with the exact saving shown in kilobytes. Everything happens on your own device — the image is never uploaded, which matters when it is a photo of your ID, your child or your home.
Runs entirely in your browser. Your images are never uploaded — open DevTools, Network tab, and you will see the page fetch nothing while it compresses.
How to use it
- Drop one or more images onto the box above, or click it to choose files.
- Set quality, maximum size and output format — the defaults are right for most photos.
- Each image shows its size before and after. Press Download on a row, or Download all.
What this tool does
Two things make an image file heavy: how many pixels it has, and how loosely those pixels are encoded. This tool works on both. The size slider scales the image down so its longer side fits the limit you set — a 4000×3000 photo becomes 2000×1500 at the default setting, and an image that is already small is left alone, never stretched up. The quality slider then controls how aggressively the pixels are re-encoded into JPEG or WebP.
You can add several images at once, or keep dropping more — they line up in a queue and are processed one after another. Every finished row shows the original size, the new size, and the percentage saved, so you can judge the trade-off before downloading anything. If a particular image comes out larger than the original — it happens with files that were already compressed hard — the row says so plainly and recommends keeping the original.
One side effect is worth knowing about, because it is useful: the output is a brand new file drawn from pixels alone. Camera model, capture date, editing software and GPS coordinates are not copied into it. If you are about to post a photo publicly, that metadata is exactly what you want gone.
There is no server resizing farm behind this page, so there is also no file counter, no daily quota and no premium tier. The work is done by the same machine the photo is already on.
Picking quality and size
Quality 80% is the sweet spot for photographs — side by side with the original, most people cannot point to a difference, and the file is typically two to four times smaller. For images heading into email, chat or a ticket attachment, 60–70% is fine; artifacts only start showing in smooth gradients like skies. Below 50% the savings keep growing but the blockiness becomes visible, so go there only when the size limit is strict.
Screenshots with a lot of text are the exception. JPEG smears sharp edges, so letters get fuzzy halos at lower settings. Either keep quality at 90% or switch the output to WebP, which handles hard edges much better at the same size.
The size slider usually saves more than the quality slider does. Halving both dimensions removes three quarters of the pixels before encoding even starts. As a rule of thumb: 2000 px is plenty for full-screen viewing on almost any display, 1200 px is enough for a blog or listing photo, and 4000 px only makes sense if the image is headed for print. Tick “Keep original dimensions” when you need every pixel and want to squeeze the encoding only.
Examples
| Input | Settings | Typical result |
|---|---|---|
| 12 MP phone photo, 4.8 MB JPEG | Defaults: 80%, 2000 px | Around 600–900 KB, looks identical on screen |
| Scanned document, 8 MB PNG | JPEG, 85%, 2000 px | Around 500 KB, text still crisp |
| Screenshot with text, 1.2 MB PNG | WebP, 90%, keep dimensions | Around 150–300 KB, edges stay sharp |
| Logo on transparent background | WebP, 90% | Smaller file, transparency preserved |
| Already-compressed web image, 90 KB | Any | Little or no saving — the tool tells you to keep the original |
What usually goes wrong
- HEIC photos will not open. Browsers cannot decode Apple’s HEIC format, so those files are rejected with a clear message. Export the photo as JPEG on the phone first — sharing it by mail or messenger converts it automatically.
- A transparent logo gets a white background. JPEG simply has no transparency, so transparent pixels are filled with white. Pick WebP as the output format and the transparency survives.
- An animated GIF stops moving. The canvas sees only the first frame, so the output is a still image. This tool is not the right one for animations.
- The file got bigger. Images that were already optimized — most pictures saved from websites — cannot be squeezed twice. The row turns the result red and says the original is the better choice.
- A huge file makes the tab freeze for a moment. Decoding a 50 MB image takes real memory. The tool warns you above that size but still tries; on a phone, patience or a smaller source file helps.
Doing it without this tool
Windows. Right-click a photo and choose “Resize pictures” if you have PowerToys installed, or open it in Photos and use Resize image. Both change dimensions well, but give you little control over JPEG quality.
macOS. Preview does both jobs: Tools → Adjust Size for the pixels, then File → Export with the Quality slider for the encoding. It is the closest offline equivalent of this page, one image at a time.
Command line. ImageMagick does everything in one pass: magick photo.jpg -resize 2000x2000 -quality 80 out.jpg. The -resize 2000x2000 part is a bounding box, so proportions are kept — the same behaviour as the slider above. For a folder of files, wrap it in a loop.
Online compressors. Most of them upload every photo to their servers, hold it there for some retention period, and cap the free tier at a handful of images or a few megabytes. If the photos are of documents or family, that upload is the part worth avoiding — and it is the one thing this page never does.
Privacy: your files never leave your browser
The whole pipeline — decoding, scaling, re-encoding — runs inside your browser on your own machine. There is no upload step. Open the network panel in DevTools before you drop a file and watch it while the tool works: you will see no requests at all, because there is nothing to send and nowhere to send it.
That is the practical difference between this page and a compression service. A service processes your photo on its servers and asks you to trust a retention policy; here there is no copy to retain and nothing to delete. It also means the tool keeps working with the connection switched off once the page is loaded.
Related tools
Frequently asked questions
No. Browsers cannot decode HEIC, so this tool cannot read those files. On the phone, share or export the photo as JPEG first — iOS does this automatically when you send a photo by mail or messenger — then compress the JPEG here.
No. Every image is decoded, resized and re-encoded by your own browser. Nothing is sent to a server, which is also why there is no file count limit and no waiting queue.
Yes. Re-encoding through a canvas writes a brand new file that carries only pixels — camera model, capture date and GPS coordinates are all gone. If you are posting a photo publicly, that is a feature.
Because it would usually make files bigger, not smaller. PNG is lossless, and a browser re-encode of a photo into PNG typically produces a larger file than the JPEG you started with. To actually shrink an image, JPEG or WebP is the way.
JPEG has no transparency, so transparent areas become white in JPEG output. Choose WebP to keep transparency — it compresses well and preserves the alpha channel.
Only its first frame. A canvas sees one frame of a GIF, so the output is a still image. For animations, use a dedicated video or GIF tool instead.
Add as many as you like — they are processed one after another in a queue. Files over 50 MB trigger a warning because decoding them takes a lot of memory, but the tool still tries.