keptlocal
Files never leave your browser

Compress Image

Drop one or more images, choose a compression level, and download the smaller files instantly. Nothing is uploaded to a server.

Drop images here, or

JPG, PNG, WebP · Multiple files supported · Files never leave your browser.

Upload images to get started.

How to compress an image

  1. Drop your images into the zone above, or click to browse. JPG, PNG, and WebP files are all accepted — you can select several at once.
  2. Choose a compression level: Light for the best visual quality with moderate size reduction, Balanced for a good trade-off between quality and file size, or Aggressive for the smallest possible files.
  3. Click Compress. Each image is processed in turn — you can watch the before and after sizes appear as each one finishes.
  4. Click Save next to any image to download it individually. If you compressed more than one, a Download ZIP button appears to grab them all at once.

Everything runs in your browser using browser-image-compression. No file is ever sent to a server — open DevTools (F12) → Network while compressing to confirm zero upload requests.

When to compress an image

  • Attaching to an email — most email providers cap attachments at 10–25 MB. A phone camera can produce 8–15 MB JPGs; compressing them to 1–3 MB makes the message reliably deliverable without visual degradation that recipients will notice.
  • Uploading to a website or CMS — page load speed is a Google ranking signal and a direct driver of bounce rate. Images are typically the largest assets on any page. Serving a 200 KB hero image instead of a 2 MB one reduces time-to-first-paint dramatically on mobile connections.
  • Submitting to an online form with file size limits — insurance claim portals, government submission systems, and HR platforms commonly enforce limits of 500 KB or 2 MB per upload. Aggressive compression can bring images within these limits without needing a separate desktop application.
  • Storing a large photo archive — thousands of full-resolution phone photos can consume hundreds of gigabytes. Batch-compressing with the Balanced preset typically cuts storage by 50–70% while keeping images sharp enough for screen display.
  • Sending images in messaging apps — apps like WhatsApp re-compress images automatically, often introducing visible degradation. Compressing beforehand with your own quality settings gives you control over the trade-off.
  • Sharing screenshots — screenshots captured on high-DPI (Retina) displays can reach 3–6 MB even at screen resolution. Compressing to Light quality typically brings these under 300 KB with no perceptible difference.

Choosing the right compression level

Light (85% quality) produces output that is visually indistinguishable from the original for most images. File sizes typically reduce by 30–50% for JPGs that were not heavily compressed already. Use this for product photography, portfolio images, and anything where print-level quality matters.

Balanced (75% quality) is the default because it hits the point where human perception starts to plateau — most people cannot tell a 75% JPEG from an 85% JPEG on a typical screen at typical viewing sizes. Savings are typically 55–70%, making it the right choice for web images, email attachments, and general sharing.

Aggressive (55% quality) produces the smallest files. Compression artifacts become visible at this level when zooming in, but at normal viewing distances and sizes — a thumbnail, a social media preview, a form upload — the difference is hard to spot. Use this when the size limit is strict and quality is secondary.

How it works under the hood

The tool uses the browser-image-compression library, which re-encodes the image using the browser's built-in canvas drawing and export pipeline. When you compress a JPG, the library decodes the original into a pixel buffer via the Canvas API, then re-encodes it as a JPEG at the target quality level using the canvas.toBlob() method.

For PNG files, compression behaves differently. PNG is a lossless format — every pixel is stored exactly. There is no "quality" setting in the same sense as JPEG. The library handles PNGs by reducing resolution when the image exceeds the maxWidthOrHeight threshold for the chosen preset. A 4000 × 3000 PNG fed into the Balanced preset is scaled down to fit within 2560 × 2560, which reduces file size significantly for large-dimension images. For PNGs that are already small in dimensions, the size reduction will be modest.

If you need maximum PNG compression, consider using the Convert Image tool to convert to WebP — WebP achieves similar visual quality at roughly 25–35% smaller file sizes than PNG for photographic content.

The compression runs on the browser's main thread (not a Web Worker) to ensure compatibility across browsers when loading the library from a CDN. For typical images up to 20 MB, this takes under two seconds. Larger images or batches of many files will take proportionally longer — the status indicator updates as each file completes.

Limits and what to expect

  • Format support: JPG, PNG, and WebP. HEIC files (iPhone Live Photos, newer Apple formats) are not supported — convert them to JPG first using the Convert Image tool.
  • Animated GIFs and WebP: the tool processes only the first frame and outputs a static image. Animated files should be handled with a dedicated GIF optimiser.
  • Already-compressed images: if a JPG was already heavily compressed when you received it, compressing it again at the same quality setting will not reduce it further and may increase artifacts. The tool will report the sizes so you can see when re-compression is not worthwhile.
  • PNG compression limits: as described above, PNG reduction depends on image dimensions. Very small PNGs (under 500 KB) may show minimal size reduction.
  • No hard file size limit: the practical ceiling is your device's available RAM — 50 MP images and batches of 50+ photos work on most modern devices.

Privacy: what happens to your images

Your images are read into browser memory, re-encoded locally, and downloaded directly to your device. Nothing is sent to a server at any point. The compression happens entirely within the browser tab using the Canvas API.

This matters for photos that contain sensitive content — medical images, identity documents, personal photographs shared for work purposes. With keptlocal, those images do not pass through any third-party infrastructure. The tool cannot see them, log them, or store them. When you close the tab, they are gone.

Unlike most online image compressors, keptlocal does not require account creation, does not apply watermarks, and does not impose monthly limits. The trade-off is that processing is limited by your device's speed rather than a server's — for the vast majority of use cases, this makes no practical difference.

Frequently asked questions

Are my images uploaded to a server?
No. All compression runs in your browser using the browser-image-compression library. Your images never leave your device — open DevTools → Network while compressing to confirm there are no upload requests.
Which image formats are supported?
JPG, JPEG, PNG, and WebP. HEIC files (iPhone photos) need to be converted to JPG first — use our Convert Image tool.
How much will the file size be reduced?
It depends on the original image and the compression level chosen. JPG and WebP images often reduce by 50–80% with minimal visible quality loss. PNGs reduce less because the format is already lossless — compressing a PNG mainly reduces resolution for very large images.
What is the difference between the compression levels?
Light targets good visual quality at about 85% JPEG quality — suitable for photos you want to keep sharp. Balanced hits 75% quality, cutting file size significantly while remaining hard to distinguish from the original at typical viewing sizes. Aggressive targets 55% quality for the smallest possible files — noticeable on close inspection but fine for thumbnails, previews, and web-optimised images.
Can I compress multiple images at once?
Yes — drop or select multiple files in one go. Each image is compressed individually and shown with its before/after size. When more than one image is compressed, a Download ZIP button appears so you can grab them all in one click.
Will the output be a different format?
No. The tool preserves the original format — a JPG in, a JPG out; a PNG in, a PNG out. The only change is the file size.
Is there a file size or image dimension limit?
No hard limit. Very large images (50 MP+) may take a few seconds to process. The practical ceiling is your device's available RAM.
Does this work on mobile?
Yes — Chrome 90+, Safari 15+, and Firefox 90+ on both iOS and Android are supported.