About ImageTools
ImageToolsis a free set of image tools that run entirely inside your web browser: convert between HEIC, PNG, JPG, WEBP, AVIF, BMP and TIFF, resize, compress, crop, rotate, and make PDFs. The HEIC converter is the flagship, because most non-Apple devices still can’t open a .heic file. The popular online tools make you upload your images to their servers, create an account, or accept a watermark. ImageTools does none of that: your images are processed on your own device and are never uploaded.
You can verify the no-upload claim yourself. Open your browser’s developer tools, switch to the Network tab, and convert a photo — you’ll see the image bytes never leave your machine. The only network request the tool makes is a one-time download of the decoding engine itself.
What it does, honestly
These tools decode your image in your browser and re-encode, resize, compress, crop, rotate, or repackage it as a standard JPG, PNG, WEBP, or PDF. They are real, full-resolution operations — not thumbnails. They do NOT preserve everything: JPG, WEBP, and PDF are lossy and drop transparency; for HEIC, depth maps, Live Photo motion, and some camera metadata are not carried into the output; resizing up cannot add detail that was never captured; and a file that is corrupt, truncated, or uses an unsupported codec or variant is reported as un-decodable rather than shown as a blank image. Your images are processed entirely on your device and are never uploaded.
How it works
When you drop in a file, the work happens in a Web Worker so the page stays responsive — and all of it runs locally. For a HEIC photo, a WebAssembly build of libheifdecodes it to raw pixels. For ordinary formats (PNG, JPG, WEBP, AVIF, BMP), your browser’s own image decoder does the reading; TIFF is decoded by the open-source UTIF.js library. The pixels are then redrawn on a canvas — resized, cropped, rotated as needed — and re-encoded to the format you chose using your browser’s own image and PDF facilities. Nothing is ever sent to a server.
Open-source libraries & licenses
The HEIC decoding is done by libheif (1.18.2), which is licensed under the LGPL-3.0. We ship its compiled WebAssembly (libheif.wasm) as a separate, self-hosted asset rather than inlining it into our own code, so it remains a distinct, replaceable component — in keeping with the LGPL. We reach it through the libheif-js npm package. Decodes HEIC/HEIF photos (HEVC-coded images, including multi-image Live Photo and burst containers) to raw RGBA pixels, entirely in the browser via WebAssembly. We ship its compiled libheif.wasm as a distinct, self-hosted asset and link it from our own first-party code rather than inlining it.
- jsPDF 2.5.2 · MIT
Builds the PDF output in the browser from decoded images (each embedded as a JPEG at your chosen quality), including merging several images into one multi-page PDF.
- fflate 0.8.3 · MIT
In-browser ZIP packaging for the "download all as .zip" batch result.
- UTIF.js 3.1.0 · MIT
Decodes TIFF (.tif/.tiff) images in the browser, since browsers have no built-in TIFF decoder. Used only by the TIFF to JPG tool, lazy-loaded on demand.
- pako 1.0.11 · MIT AND Zlib
Zlib inflate/deflate used internally by UTIF.js to read compressed TIFF data.
Test images
The decoder is tested against real HEIC files, not images produced by our own code (which would be circular):
- libheif example images (example.heic, colors-with-alpha.heic) — LGPL-3.0 (taken from the libheif repository's own examples/fuzzing corpus)
ImageTools is an independent project and is not affiliated with or endorsed by Apple. HEIC and HEIF are described here for compatibility purposes only. See our Terms.