📱 HEIC to JPG

Convert HEIC/HEIF photos from iPhone to JPG or PNG — no upload needed

✓ Free Forever · ✓ No Signup · ✓ No Upload · ✓ Works Offline

🔒 Your image never leaves your device. All processing happens locally in your browser using heic2any WebAssembly decoder. No upload, no server, no tracking.

Features

  • iPhone Compatible — Convert HEIC photos taken on iPhone/iPad to universally compatible JPG or PNG.
  • Batch Support — Convert multiple HEIC files at once.
  • 100% Private — Conversion happens entirely in your browser using WebAssembly.

How It Works

  1. Drop HEIC files — Select .heic or .heif files from your iPhone or iPad.
  2. Choose format — Select JPG or PNG as the output format.
  3. Convert & download — Click Convert All and download your images.

Use Cases

  • Make iPhone photos compatible with Windows and web
  • Convert HEIC to JPG before sharing via email
  • Prepare HEIC photos for website upload

Frequently Asked Questions

What is HEIC?

HEIC (High Efficiency Image Container) is Apple's default photo format since iOS 11. It offers better compression than JPG but isn't supported everywhere.

Is quality preserved?

Yes, conversion uses 92% JPEG quality by default, which is visually lossless for most photos.

Notes from Milo 🐨

2026-08-27

Someone sent me the photo that wouldn't convert, and it turned out my converter was the problem. Newer iPhones save HDR photos as a HEIC with a gain map tucked inside, and the decoder I was using — the only one I was using — flatly refuses to read those. So your perfectly good photo came back as "couldn't be converted". There are three decoders now: your browser first (Safari can do this itself, and it's instant), then the old one, then a current build of libheif that reads the HDR files. If all three somehow fail, the page now tells you what each one actually said instead of just shrugging.

2026-08-26

Someone told me the page just sat there doing nothing. They were right, and it was my fault twice over: if you picked a photo that wasn't HEIC, the page silently swallowed it, and if a file failed to decode, the Download button was still sitting there doing absolutely nothing when you tapped it. Now it tells you what happened either way — which file it skipped, and why — and the Download button only lights up when there's actually something to download.

From the blog

Related Tools

💬 Bug, idea, or just to say hi? Tell Milo 🐨 · [email protected]