Why iPhone Photos Are HEIC and How to Open Them
What is actually inside a .heic file, why Windows and Chrome refuse to open it, and how to convert a batch of iPhone photos to JPG without uploading anything.
You email a photo to someone on Windows and they write back saying the file won’t open. Nothing is broken. The iPhone saved it as HEIC, and their machine has no decoder for it.
Apple made HEIC the camera default in September 2017, with iOS 11. The reason was storage: the same picture at the same visible quality takes roughly half the space of a JPEG. On a phone that’s thousands of extra photos. The cost is compatibility, and years later it’s still a cost.
What is actually in a .heic file
HEIC is a container, not a compression method. The wrapper is HEIF, standardised as ISO/IEC 23008-12, and it uses the same nested-box layout as an MP4. The picture inside it is a single HEVC (H.265) keyframe, the same codec used for 4K video.
That’s the whole problem in one sentence. HEVC sits under patent pools and the licence costs money per device. Apple pays it, so Safari opens HEIC without blinking. Microsoft sells the Windows decoder as a separate Store add-on. Google and Mozilla left it out entirely, which is why Chrome and Firefox refuse a .heic even on a Mac where the operating system underneath could handle it perfectly well.
Open a 12 MP iPhone photo in a hex editor and there’s a second surprise: it isn’t one image. It’s a mosaic of 512 × 512 tiles, eight columns by six rows for a 4032 × 3024 frame, plus a tiny grid box explaining how to stitch them back together. The phone decodes tiles in parallel, which is part of why scrolling the camera roll feels instant. It’s also why a few older desktop viewers report an iPhone photo as 512 × 512: they read the first tile’s header and stop there.
Three ways out
Change the phone. Settings → Camera → Formats → Most Compatible. Everything shot after that is JPEG. Photos already on the device stay HEIC.
Let the Mac handle it. AirDrop, Mail and Messages quietly convert to JPEG on the way out, which is why plenty of iPhone owners have never hit this problem at all.
Convert the files yourself. Drop them into HEIC to JPG Converter, pick JPG, PNG, or WebP, and download them one at a time or as a single zip. It uses your browser’s own decoder, so nothing is uploaded — worth knowing, because a camera HEIC carries GPS coordinates and you may not want those on someone else’s server. On Windows and Linux you’ll need Safari on another device, or the phone-side setting above; the tool will tell you plainly when the browser has no decoder rather than failing in silence.
Your JPG will be bigger. That’s normal.
Usually two to four times bigger. A 2 MB HEIC turning into a 5 MB JPG surprises people, but it’s just the generation gap between the two compression schemes showing up as bytes. Dropping the quality slider to around 80 recovers most of it with no visible difference on a photograph. WebP does better still, around 25–30% below JPG at matching quality, if whatever you’re uploading to accepts it. For an existing JPG that needs to get under an upload limit, the Image Compressor is the better tool.
The metadata goes away
Converting through a canvas keeps the pixels and discards everything else: camera model, lens, shutter speed, capture date, GPS. Handy when you’re posting publicly, irritating when you were relying on capture dates to sort a folder. Copy anything you need out of the file first. If stripping metadata is the actual goal and you want to keep the original format, use the EXIF Metadata Remover instead.
One thing that doesn’t get lost: Live Photos. The video half lives in a separate .mov file in the phone’s library, so it was never inside the .heic to begin with.
Got a folder of .heic files to deal with? Convert them to JPG here — all of them at once, straight in the browser.