Convert HEIC to JPG
Turn an iPhone photo into a JPEG that everything can open.
How it works
HEIC is the common extension for HEIF, the High Efficiency Image File Format standardised as ISO/IEC 23008-12. HEIF is only a container: it borrows the box structure of ISOBMFF, the same layout MP4 uses, and the picture inside is a still frame coded with HEVC — H.265, the video codec. That is the whole trick.
A modern intra-frame video coder, with 64×64 coding units, 35 intra prediction directions and a deblocking filter, compresses a photograph far better than JPEG's 8×8 DCT from 1992. Apple switched the iPhone camera to HEIC in iOS 11 and roughly halved what a photo library costs in storage at the same visual quality.
Why the royalties block decoders
The reason you are on this page is patents. HEVC royalties are administered by several competing pools: Access Advance, Via LA, and a number of holders who license independently. The per-unit fees apply to decoders, not only encoders. A browser is shipped to billions of devices, so Chrome and Firefox never built HEVC still decoding in.
Windows does not decode HEIC out of the box either; Microsoft sells the HEVC Video Extensions package in its store for about a dollar. Plenty of older desktop software and most upload forms report a corrupt or unsupported file. Apple pays the licence for its own hardware, which is exactly why the photo looks fine on the phone that took it and nowhere else.
Ten bits down to eight
Converting to JPEG is not free. An iPhone writes HEIC at 10 bits per channel in the Display P3 colour space; baseline JPEG carries 8 bits per channel. Quantising 1024 levels per channel down to 256 is what produces visible banding in a clear sky or a plain studio backdrop, and P3 holds a noticeably wider red and green than sRGB can.
The encoder here writes plain image data with no ICC profile attached, so a P3 capture is read as sRGB by whatever opens it and the most saturated colours can look slightly muted. On an ordinary snapshot none of this is perceptible. On a sunset gradient or a neon sign, it is.
Because HEVC compresses harder than JPEG, a JPEG that looks identical is often larger than the HEIC it came from. The byte delta will say so.
Bursts, depth maps and EXIF
A HEIF container can hold more than one picture, and phones use that. A burst writes several frames; Portrait mode adds a depth or disparity map; HDR captures add a gain map; there are usually thumbnail derivatives too. A Live Photo is the still plus a short QuickTime movie kept as a separate file beside it, so the motion is not in the .heic at all.
This tool decodes the primary item (the one the container marks as the cover image, and the one Photos shows you) and discards the rest, because a JPEG has nowhere to put a depth map or an alternate exposure. Metadata goes the same way: EXIF, the capture timestamp and any GPS coordinates are not written to the output.
Questions
Is my photo uploaded to a server?
No. Open your browser's developer tools, switch to the Network tab, and convert a file. You will see same-origin GET requests for the page's own code and for the libheif WebAssembly module, and nothing else. No request carries your photo. The decode and the JPEG encode both run in a Web Worker on your machine.
Why can't Windows or my browser open a HEIC file already?
Licensing, not difficulty. HEVC decoding carries per-unit patent royalties owed to several pools at once, which is untenable for software distributed free at browser scale, so Chrome and Firefox omit it. Windows leaves the codec out of the base install and sells it separately. Apple ships the licence with the device, so the file opens on the phone that made it and fails almost everywhere else.
What happens to Live Photos, depth maps and EXIF?
The primary image is converted and everything else is dropped. The Live Photo's video half is a separate .MOV file that a browser never receives when you pick the .heic. Burst frames, Portrait depth maps and HDR gain maps have no JPEG equivalent. EXIF, timestamps and GPS coordinates are not copied across either. That cuts both ways: the JPEG you send someone does not carry where the photo was taken.
Is there a size limit, and why do large photos struggle on a phone?
Files over 100 MB are refused at selection with an explanation rather than crashing the tab. The real constraint is memory rather than the file: a 12 MP photo is 2–3 MB on disk but decodes to about 48 MB of uncompressed RGBA (12 million pixels × 4 bytes), and resizing or encoding needs a second buffer alongside the first. A desktop absorbs that easily; a mobile browser works to roughly a 250 MB budget, so a 48 MP capture on an older iPhone can run out of room. Convert one file at a time there, and set a maximum width to cut the working set.