Works on Windows and Android
Neither ships a HEIC decoder by default, which is why iPhone photos arrive as unopenable attachments. Converting in the browser fixes that without installing codec packs.
An HEIC to JPG converter that opens iPhone photos and saves them as ordinary JPG files, on your own device.
Loading tool…
The tool is loading its code on your device. This happens once and is cached for later visits.
Processed entirely on your device
Overview
Convert HEIC and HEIF photos from iPhones to JPG entirely in your browser using a WebAssembly libheif decoder. No upload, no iCloud round trip, no watermarks.
Since iOS 11, iPhones have saved photos as HEIC: half the size of JPG for the same detail, and completely unopenable on most machines that are not Apple's. The photos arrive by WhatsApp, email or USB stick and double-clicking does nothing. An HEIC to JPG conversion closes that gap without installing anything, and this HEIC to JPG converter runs the entire decode in your browser tab.
HEIC is a container around HEIF, which stores images encoded with HEVC — the same video codec family as H.265. That is why it compresses so well and why it needs a real decoder rather than a rename: every HEIC to JPG conversion starts with a genuine decode of those HEVC bytes. Here the decoder is libheif compiled to WebAssembly, running in your tab at near-native speed.
If the photo is really a screenshot of a document, a diagram or anything with sharp edges and flat colour, convert to PNG instead — lossy JPG rings around text edges. For photographs, HEIC to JPG is the right destination and the smaller file, which is why it is the default iPhone workflow.
Every converted photo gets a row carrying its real pixel dimensions and both file sizes, so IMG_2291.heic reads something like 4032 × 3024 · 2.4 MB → 4.1 MB. The output keeps the original filename with a .jpg ending; a file whose name cannot be used falls back to photo.jpg. Above the download buttons a summary strip totals the run — photos decoded, size before, size after, and the change between them, coloured so a batch that grew is obvious at a glance.
Those dimensions are measured from the decoded image rather than taken from anything the HEIC container asserts about itself, which is what makes an HEIC to JPG result trustworthy. That is worth more than it sounds: a photo whose header disagrees with its pixels is reported as it actually is, and a file the decoder could not measure at all shows sizes only — which is itself a warning worth noticing before you send the result anywhere important.
Two causes account for almost every HEIC to JPG failure. A burst saved as a HEIC sequence stores several photographs in one container with an index rather than a single image track, and a file renamed to .heic from something else entirely has no HEVC payload to find. Both are refused with a message naming the likely cause, and in both the fix is the same: open the photograph in the app that produced it and export a JPG.
Detection runs on bytes rather than on the name attached to the file. The format is read from the ISO-BMFF brand in the header, and heic, heix, heim, heis, hevc, hevx, mif1 and msf1 all resolve to this decoder, alongside avif and avis. A mislabelled file is therefore identified as what it contains, and an AVIF from a recent Android arrives here just as happily as an iPhone photo.
Every image tool here retries a failed decode through this WebAssembly decoder when the bytes say HEIC, HEIF or AVIF — the same engine that powers this HEIC to JPG converter. The image resizer, the image compressor, the format converters and the PNG to SVG wrapper will all open an iPhone photograph as a result, even though their file pickers do not advertise the format, because each of them re-encodes from decoded pixels. Come to this page when you specifically want a JPG out; use those when you want something else done to the photo and would rather not convert it twice.
The privacy story of an HEIC to JPG conversion is short because there is nothing to tell: the HEIC bytes are decoded by WebAssembly libheif in your tab, the JPG is encoded by the same tab, and the download is a local blob that dies with the page. There is no upload endpoint, no account and no size ceiling beyond the 40 MB per file and twenty files per run the decoder can comfortably handle. Holiday albums, family photographs and documents photographed for a claim stay on the device they were opened on — which is the whole point of doing HEIC to JPG in the browser instead of mailing the photos to a converter website.
Step by step
Drop your .heic or .heif photos onto the upload area, or click it to browse.
Set the JPG quality — 92% is a good default for photos straight off an iPhone.
Press Convert to JPG; the WebAssembly decoder runs locally, so large batches are fine.
Download the JPGs individually, or take the whole batch at once from the result list — up to twenty photos per run, each up to 40 MB.
Why use it
What this tool is good for, and what it deliberately does not try to do.
Neither ships a HEIC decoder by default, which is why iPhone photos arrive as unopenable attachments. Converting in the browser fixes that without installing codec packs.
HEIC collections are often personal — holidays, family, documents photographed for a claim. The libheif decoder runs as WebAssembly in your tab, so nothing is uploaded anywhere. It is loaded lazily too: the decoder is fetched only once a HEIC file actually lands on the page, so nobody who never converts one pays for its weight.
Drop a folder of HEIC photos and each one converts in the same pass, keeping its original filename with a .jpg ending. The ceiling is twenty files per run, because WebAssembly decoding is memory-hungry; anything past that is listed by name as refused rather than quietly dropped.
Questions
Short, honest answers about quality, limits and privacy.
Guides & tutorials
Practical walkthroughs, settings, and troubleshooting for your next step.