Image Compressor
Compress JPG, PNG, and WebP images in your browser — batch up to 20 files, no upload.
Processed locally in your browserYour images never leave your browser. Compression runs entirely on your device via the Canvas API — no uploads, no third-party CDN calls.
Drag & drop images here, or
JPG, PNG, WebP, BMP, GIF · up to 50 MB each · 20 of 20 slots remaining
Stronger compression for smaller targets.
Downscales width and height to this pixel cap.
0.8 is the sweet spot for most photos.
WebP gives ~30% smaller files at the same quality.
Need to embed an image into HTML or CSS instead? Try the Image to Base64 tool.
Unlock the full toolkit
Batch processing, no ads, higher limits, and API access.
How to Use
1. Drop your images on the upload zone or click to browse — up to 20 at once. 2. Tune the three sliders: target max size (smaller = stronger compression), max dimension (downscales huge photos), and quality (0.8 is a good balance). 3. Pick an output format — Same as input keeps JPG as JPG; switch to WebP for ~30% smaller files at the same quality. 4. Click "Compress all" and watch the per-file progress. 5. Download a single result or hit "Download all (.zip)" for the whole batch. To prepare an image for embedding instead of compressing, see Image to Base64.
Features
- ✓Drag & drop or pick up to 20 images at once (JPG, PNG, WebP, BMP, GIF)
- ✓Three controls: target max size (MB), max dimension (px), quality (0.1-1.0)
- ✓Convert format on the fly — JPG ↔ PNG ↔ WebP, or keep original
- ✓Per-file before/after preview: bytes saved, dimensions, percentage shrink
- ✓"Already optimized" badge when compression would inflate the file
- ✓One-click download per file or bulk download as a single .zip
- ✓Fully client-side — your images never leave the browser, no third-party CDN calls
Frequently Asked Questions
- Is this image compressor lossy or lossless?
- It is lossy by default — the underlying canvas re-encoder discards perceptual detail to shrink the file, which is why JPG and WebP outputs get dramatically smaller. PNG output is lossless, so for PNGs the wins come mainly from removing metadata and downscaling the dimensions. If you need true lossless compression for screenshots and UI assets, keep the format as PNG and rely on the "Max dimension" control rather than the quality slider.
- Should I use JPG, PNG, or WebP?
- Use JPG for photographs and complex imagery — it has been the web standard for decades and every browser, mail client, and CMS handles it. Use PNG when you need transparency or pixel-perfect screenshots of text, charts, or UI. Use WebP when you can — at the same visual quality it produces files roughly 25-35% smaller than JPG and 50% smaller than PNG, and is now supported by every modern browser. The "Output format" selector lets you convert between all three in one click.
- Are my images uploaded to your server?
- No — all compression runs locally in your browser via the Canvas API. Your files never touch our servers, are never logged, and nothing is transmitted over the network during compression — not even to a third-party CDN. You can verify this by opening DevTools → Network tab while compressing: you will see no image-related outbound requests. Safe to use with screenshots, photos containing personal information, and confidential design assets.
- Why is my "compressed" file bigger than the original?
- You probably uploaded a file that was already aggressively compressed — most commonly a WebP downloaded from a CDN, or a JPG that has been through TinyPNG / Squoosh before. Re-encoding an already-optimized image often produces a slightly larger file because the new encoder cannot reproduce the previous one's exact decisions. When this happens we show an "Already optimized" badge so you know not to use the result. For maximum savings, always compress from the original camera/screenshot file, not from a previously compressed version.
- How do I choose the right quality value?
- Start at 0.8 — it is the sweet spot most photographers and tinypng-style services target, dropping file size by 60-80% with virtually no perceptible loss. Go down to 0.7 for thumbnails and hero backgrounds where artefacts will be hidden by overlays. Drop to 0.5 only for tiny avatars or low-priority listing thumbnails. Stay at 0.9+ for product photography, portfolio images, or anything a user might zoom into. The before/after preview lets you eyeball the result before downloading.
- Why are HEIC and AVIF not supported?
- HEIC (the format iPhones use for photos) requires patented decoders that browsers do not ship by default — there is no clean client-side path without bundling a 2 MB+ WebAssembly decoder, which would slow the tool down for the 95% of users on JPG/PNG. AVIF input is similarly limited in many browsers. Both are on our roadmap for the premium tier where the larger bundle is justified. For now, convert HEIC → JPG via your phone's share menu before uploading, or use macOS Preview's "Export As" → JPEG.
- Can I compress more than 20 files at once?
- Twenty is a soft cap to protect your browser tab from running out of memory — each decoded image takes 4 bytes per pixel in RAM, so a 20 MP photo holds ~80 MB while being processed. If you hit the limit, compress in batches of 20: download each batch as a .zip, then upload the next set. The premium tier removes the limit and adds queue-based background processing for hundreds of files.