About heic-to.io
Every iPhone shoots photos in HEIC by default. Almost everything else — Windows, older Android phones, most web upload forms, plenty of desktop software — still cannot open it. The usual fix is a converter website, but nearly every one of them works the same way: you upload your photo to their server, they convert it, and you download the result. Your photos pass through a stranger’s infrastructure to solve a problem that has nothing to do with them needing to see your photos.
heic-to.io exists to remove that step entirely. We built the whole conversion pipeline — decoding, resizing, re-encoding to JPG/PNG/WebP/PDF/AVIF/GIF, ZIP packing — to run directly in your browser tab. Your photo is decoded, converted, and downloaded without ever being transmitted anywhere. We built a whole page showing you exactly how to verify that in your own browser’s DevTools, because we think "trust us" is not good enough for something as personal as your photo library.
What makes this different
- No upload, ever. Photos are converted on your device; a strict content-security policy blocks third-party connections, and you can check every request yourself in DevTools.
- No daily limits or watermarks. Because conversion runs on your device, not a metered server, there is no daily quota to ration; how large a batch can run depends on your device’s memory.
- Full format coverage. JPG, PNG, WebP, PDF, and (in beta) AVIF and GIF — most privacy-first tools stop at JPG.
- iPhone-aware details. GPS/EXIF stripped by default, orientation baked in correctly, Live Photo pairs detected.
- No ads, no tracking cookies, no account. Just the tool.
How it's built
The converter uses libheif compiled to WebAssembly (via the LGPL-3.0-licensed heic-to library) to decode HEIC/HEIF
(browsers that can decode HEIC themselves use their own decoder instead), the Canvas API to resize
and re-encode JPG and PNG (and WebP where the browser supports it), WebAssembly encoders for AVIF
and as the WebP fallback (for example in Safari), and a small JavaScript encoder for GIF — all running
in a pool of Web Workers so your browser tab stays responsive even on large batches.
Feedback
Found a bug, or a format we should add? Tell us. We read every message.