Why it exists
Most online image compressors upload your photos to a server, process them there and send them back. That is slow on mobile connections and means handing personal pictures (ID photos, documents, family photos) to someone else. Modern browsers can run the same professional encoders locally through WebAssembly, so Kilomill does exactly that.
How it works
- The page itself is small. The encoders are downloaded only when you add your first image, and only the ones needed for the formats you use.
- Images are decoded by your browser (or by libheif for HEIC), then rotated, cropped and resized with a Lanczos3 filter in a background Web Worker so the page stays responsive.
- For a target size, Kilomill encodes the image several times, narrowing in on the highest quality that fits, and shrinks the dimensions only if quality alone can’t reach the limit.
- The results stay in memory until you download them or close the tab.
Credits and licences
Kilomill is built on these open-source projects. Thank you to their authors.
| Component | Used for | Licence |
|---|---|---|
| jSquash (codecs from Google’s Squoosh) | WebAssembly builds of the codecs below, resizing | Apache-2.0 |
| MozJPEG | JPG encoding | IJG, BSD-3-Clause and zlib licences |
| libwebp | WebP encoding | BSD-3-Clause |
| libavif with libaom | AVIF encoding and decoding | BSD-2-Clause / BSD-3-Clause |
| OxiPNG | PNG optimisation | MIT |
| image-q | PNG colour quantisation | MIT |
| libheif via libheif-js | HEIC/HEIF decoding (loaded only for HEIC files) | LGPL-3.0; libde265 LGPL-3.0 |
| fflate | ZIP downloads | MIT |
This software is based in part on the work of the Independent JPEG Group (via MozJPEG/libjpeg-turbo).
The full licence texts are published with the site: third-party notices. libheif and libde265 are loaded as a separate, unmodified WebAssembly module, as the LGPL allows; their source is available from the projects linked above.
Contact and corrections
Kilomill is part of Toolwoven, a collection of small independent web tools. If a page contains an error, or a size limit you rely on has changed, please let us know via the Toolwoven project.