Methodology
This page explains how our tools work under the hood, so you can understand the trade-offs and trust the results.
Browser-based processing
Every image is decoded with createImageBitmap(), drawn to a canvas (an
OffscreenCanvas inside a Web Worker where supported), and re-encoded with
canvas.toBlob(). This keeps the UI responsive and means files never leave your device.
EXIF orientation is applied to the pixels during decode so images stay upright.
JPEG compression
JPEG uses the browser's native lossy encoder. The quality value (0–100) controls how much high-frequency detail is discarded. We compress from your uploaded source; we cannot recover detail a previous JPEG save removed.
PNG optimisation
PNG output is lossless. To shrink PNGs we either re-encode losslessly, reduce the colour palette with a median-cut quantizer (which can band gradients), or convert to WebP. Transparency is preserved throughout.
WebP & AVIF
WebP supports lossy and lossless modes with an alpha channel. AVIF is highly efficient but slow to encode and is offered only when your browser can produce it. Both are probed at runtime before being shown.
Resizing
Resizing uses high-quality canvas resampling. Fit keeps the whole image inside a box, Fill covers the box with a centre crop, and exact/percentage modes are also available. Upscaling is off by default because it cannot add real detail.
Metadata removal
Because we rebuild the image from raw pixels, EXIF, GPS, camera and timestamp fields are not carried into the output. Some container-specific data may remain in certain formats, which we disclose rather than overstate.
Target file size
Target-size compression performs a quality binary search and, if needed, steps the resolution down, stopping at sensible floors. It returns the closest result and reports whether the target was met — it never claims an exact guarantee.
Batch processing
Multiple files are processed through a bounded queue (limited concurrency) so several high-resolution images don't all decode into memory at once. Object URLs, bitmaps and canvases are released as work completes.
Known limitations & browser differences
- Animated GIF/WebP are processed as a single frame.
- HEIC decoding is disabled by default due to inconsistent browser support.
- Encoder output differs slightly across browsers and operating systems.