HEIC to JPG for photos that left an iPhone
Use heic to jpg when a phone saved HEIC and the place you are sending the picture wants a JPEG. The decoder is heic-to, under LGPL, shipped as a separate unmodified chunk that loads the first time you need it. It decodes the HEIC to PNG, and that PNG is then re-encoded to JPEG. Quality starts at 85. Live Photos become stills. The paired video is not included. EXIF is stripped on the JPEG encode. The file stays in this tab.
Loading tool…
or drop / paste
How to turn heic to jpg
- Add one or more HEIC photos. Drop, paste, or Choose files. Up to one hundred can share one quality. The first run may pause while the heic-to chunk loads. Later runs reuse it.
- Leave JPEG quality at 85 unless you have already judged a sample. The range on the control starts at 40 and stops at 100. Higher keeps more detail and usually makes a larger JPEG.
- Expect a still image. If the HEIC was a Live Photo, the moving half is not in the download. There is no control to extract that video.
- Do not look for an EXIF toggle. The JPEG encode strips metadata. Camera, date, and GPS from the HEIC are not written into the JPEG.
- Press Convert to JPG and download the JPEG, or a ZIP when more than one file is ready. The warning about Live Photos is part of the result, not a failure.
HEIC to JPG options explained
The decoder is heic-to. It is LGPL, loaded as its own unmodified chunk on first use, and it is not mixed into the other image codecs. The decode target inside that step is PNG.
The PNG is then encoded as JPEG. Quality defaults to 85, not the 80 used on the ordinary converter. That second encode is where EXIF is stripped. You do not get a remux of the HEIC container.
Bulk is supported, up to one hundred files, one quality for the batch. Each file is decoded and encoded on its own. A ZIP is offered when more than one JPEG is ready.
Live Photos become stills. The paired video is not included and is not offered as a second download. If you needed the motion, this page cannot supply it.
The separate heic-to chunk
HEIC is the one image job on this site that needs its own library. heic-to is loaded the first time you convert, as a separate unmodified chunk, because of its LGPL terms. The JPG, PNG, and WebP tools do not pull that code in. If you never open a HEIC, you never download it.
The first photo in a session can take longer for that reason. The chunk comes from this site, not from a file host you have to sign in to. After it is cached, a repeat convert of the same picture should not need the network. That repeat is also the check that the HEIC was not uploaded.
PNG in the middle, JPEG at the end
The decoder writes a PNG, and the image encoder turns that PNG into a JPEG at the quality you set. You do not download the middle PNG from this page. heic to png is the page that stops at PNG and has no quality slider.
Quality 85 is the default because a phone photo can show bruises at the lower default used elsewhere. You can still move it. One hundred is allowed and spends more bytes to stay closer to the decode. It is still a new JPEG, not the original HEIC bytes.
Stills, video, and stripped notes
A Live Photo is a still plus a short video. This tool keeps the still. The paired video is not included, and the result says so. There is no switch to merge them or to export the motion.
EXIF is stripped on the JPEG encode. Do not expect to read GPS back from the download, and do not expect remove exif data to be required afterwards for a file this page just wrote. This page also does not rotate by a typed angle. If the still looks sideways after decode, use rotate image on the JPEG.
Limits, formats and output
| Accepted input | HEIC |
|---|---|
| Files per batch | 1–100 |
| Soft size warning | 50 MB each |
| Hard stop | 500 MB total in memory |
| Output | The chosen image format, or a ZIP for a batch |
| Account | None. The tool runs in this tab. |
Your file never leaves your device
This HEIC file is decoded and saved by code in this browser tab. The work runs in a Web Worker in this tab, using WebAssembly for the heavy parts, and the result comes back as a local blob. This site does not upload the file, store it, or log its name.
To verify: load the page, turn on airplane mode, and drop the file again. It still finishes. Or open DevTools, choose Network, and watch the run: there is no upload. The architecture is described on How it works.
Frequently asked questions
What library decodes the HEIC?
heic-to. It is LGPL and is loaded as a separate unmodified chunk the first time you run a convert. It decodes to PNG. A second step encodes that PNG as JPEG. The other image tools do not embed this chunk.
Why is quality 85, not 80?
This page defaults to 85 for the JPEG encode. You can set it from 40 to 100. The ordinary JPG and WebP converter defaults to 80. Here the source is a phone photo, and 85 is the starting point.
Where is the Live Photo video?
It is not in the download. Live Photos become stills. The paired video is not included. The result warns you about that. There is no second file and no way to request the motion on this page.
Is EXIF copied to the JPEG?
No. EXIF is stripped on the JPEG encode. Camera, date, and GPS from the HEIC do not come along. If you needed those notes in the JPEG, this tool will not keep them.
Can I convert a burst of HEIC files?
Yes, up to one hundred, at one quality. The first file may wait on the heic-to chunk. Download a ZIP when more than one JPEG is ready. A failure on one file does not upload the others. They stay in the tab.
Does the network stay quiet?
The HEIC bytes are not uploaded. The first visit downloads the page and, on first use, the heic-to chunk from this site. After that cache exists, you can turn the network off and convert again. That is the check.
Last updated 2026-09-26. By Tam.