How the compressor works
The browser decodes the selected image, draws it to a Canvas 2D surface, and exports a new Blob with canvas.toBlob(). The selected output MIME type controls whether the result is JPEG, PNG, or WebP.
- JPEG and WebP quality encoding is lossy. Lower quality can reduce file size by discarding image detail and can introduce visible artifacts.
- PNG output may not shrink. Re-encoding a PNG can keep or increase file size depending on the source image and browser encoder.
- No reduction percentage is guaranteed. The result can be smaller, similar in size, or larger. The page reports the measured source and output sizes after encoding.
- Transparency depends on format. JPEG does not support alpha transparency; use PNG or WebP when transparency must remain.
- Input limit is 10 MB. Very high pixel dimensions can still exhaust browser memory even when the compressed file is under that limit.
When to use another workflow
Use a dedicated batch optimizer or build pipeline when you need automated resizing, responsive variants, deterministic encoder settings, metadata policy, AVIF generation, CDN integration, or many files at once. Keep the original asset when later crops or higher-quality exports may be needed.