Image Compressor

Reduce file sizes without losing quality — runs entirely in your browser.

Drop images to compress them

Fast. Private. No uploads.

JPEG · PNG · WebP · HEIC — up to 50MB each · before/after sizes shown

How this compares

TinyPNG, Squoosh, Compressor.io and friends are well-loved tools. Here's where this one lands on the same feature checklist — same browser-side speed Squoosh has, same batch flow TinyPNG has, but no monthly count, no upload, no signup.

FeatureWebToolVerseTinyPNGSquooshCompressor.ioiLoveIMG
Files leave your deviceNeverUploadNeverUploadUpload
Free file size50 MB5 MBBrowser memory10 MB25 MB
Free monthly countUnlimited20 / monthUnlimited50 / dayUnlimited
Batch upload
Output: JPG / PNG / WebP
Output: AVIF
Compress to target size
Resize while compressing
Per-image before/after slider
Strip EXIF metadata
Login requiredAfter 20

Free-tier features as of May 2026. Competitor feature sets change often; check their sites for the most current limits.

Runs entirely in your browser. No uploads. Your files stay private.

How The Browser-Side Image Compressor Actually Works

Image Compressor uses the browser-image-compression library, which orchestrates a Canvas re-encode loop inside a dedicated Web Worker. Your file is decoded into a bitmap, drawn onto an OffscreenCanvas (or a regular Canvas on Safari, which still lacks full OffscreenCanvas support outside Workers in older versions), and re-encoded with the browser's JPEG, WebP, or PNG encoder. The worker keeps the encode off the main thread so the page never freezes, even on 50 MB camera RAW exports.
Quality is controlled through two complementary modes. Quality mode passes a 0-1 quality factor straight to the encoder; lower values give smaller files at the cost of more visible JPEG artefacts in flat colour areas. Target size mode runs a binary search across quality values, encoding the image multiple times until it lands within roughly 5 percent of the size you asked for, which is how you can hit a strict 200 KB or 1 MB ceiling without manual fiddling.
JPEG and WebP are lossy and benefit most from compression: JPEG drops to 30-50 percent of the original size at quality 0.8 with no visible difference, and WebP at the same setting is usually another 25-35 percent smaller still. PNG is lossless and only benefits from sub-pixel-accurate downscaling and zlib re-encoding, which trims the size modestly but never as dramatically as JPEG or WebP.
Resizing during compression is supported through a maxWidthOrHeight option. The library uses Pica-style resampling under the hood, which gives sharper down-scaling than the default Canvas drawImage path. Combine this with a quality drop to hit very small file sizes for hero images that load above the fold.
EXIF metadata handling is configurable. By default the compressor preserves the orientation tag (so phone photos display the right way up) but strips GPS coordinates, camera serial, and timestamp data, which keeps files small and avoids accidentally publishing your location with a photo. A toggle preserves all metadata if you need it for archival.
Files up to about 100 MB can be compressed in a single pass on a desktop browser; mobile Safari has a tighter per-tab memory limit and may struggle above 30-40 MP. For very large originals the right play is to resize first, since pixel count drives memory more than file size does.
Everything happens locally. The file lives as a Blob in your tab, the worker executes JavaScript bundled with the page, and the encoded output is downloaded directly. There is no upload step and no server-side compression queue, which is why the tool can promise that your images never touch external infrastructure.

Common Use Cases

01

Website and blog hero images

Compress hero photos before uploading to a CMS so the Largest Contentful Paint metric stays comfortably under the Core Web Vitals threshold.

02

Email attachment limits

Hit the typical 25 MB Gmail or Outlook attachment cap without splitting messages by re-encoding photos at quality 0.8.

03

Social media platform limits

Meet Instagram, Twitter, and LinkedIn upload limits while keeping images visually sharp by using target-size mode.

04

Mobile app screenshots

Shrink in-app screenshot exports for app store listings and marketing material without re-shooting at lower resolution.

Frequently Asked Questions

browser-image-compression, which runs the encode inside a dedicated Web Worker so the UI stays responsive. Internally it uses Canvas re-encoding plus a Pica-style resampler for the resizing step.
JPEG and WebP at quality 0.8 are visually indistinguishable from the source for almost every photo. PNG is lossless. Below quality 0.6 you start to see banding in skies and JPEG blockiness around hard edges; preview before exporting.
JPEG, PNG, and WebP are all decoded and re-encoded. AVIF input depends on your browser's decoder. HEIC from iPhones is not handled here — convert it first with HEIC to JPEG.
Up to 50 MB per file. The hard limit is your device's memory rather than an artificial license cap; mobile browsers cap out earlier than desktops because each tab has a smaller heap.
Yes. Drop several files in and they are queued through the worker sequentially so memory stays flat. Download each as it finishes or grab everything as a ZIP.
It encodes the image at a starting quality, measures the resulting size, then runs a binary search — halving the difference each time — until the encoded file is within roughly 5 percent of your target. Three or four passes is typical.
Yes. When strip metadata is enabled, the image is re-encoded through Canvas, which does not copy EXIF, GPS, IPTC, or XMP fields into the output. The orientation tag is rebuilt so photos still display the right way up.
WebP is the safest default — universal browser support and 25-35 percent smaller than JPEG at the same quality. JPEG is the older, even-more-universal fallback. PNG is for screenshots and graphics with transparency or hard edges.
No. The Web Worker is bundled with the page; the file is read into a Blob locally, encoded inside the worker, and the result is downloaded directly. No image bytes are ever sent over the network.
PNG is lossless, so the only savings come from down-scaling and zlib re-encoding. If the file size matters more than transparency or hard edges, convert to JPEG or WebP using the format selector.

Step-by-step guide

How to compress images without losing quality

Walk through every step with screenshots, format-specific tips, and the platform-by-platform limits you need to know.

Advertisement