PhotoToJpgA PictureEditor.com tool

HEIC to JPG

Decoding and encoding both happen on this computer.

Somebody sent you a .HEIC, or there are forty of them on a laptop that will not open one. Put them here and take JPGs away. The decoder loads the moment a file crosses the panel, so the wait happens while you are still dragging.

Drop the files you want as JPGHEIC, PNG, WebP, AVIF, TIFF, BMP and GIF are all accepted. Pasting works too.

Nothing to hand?

The format your phone chose, and why it is in the way

HEIC is High Efficiency Image File Format holding a picture coded with HEVC. Apple made it the camera default in 2017 for a straightforward reason: it stores the same photograph in about half the bytes of the JPEG the phone used to write. On the phone this is invisible. Photos opens it, AirDrop moves it, and sharing into most apps converts it on the way out without mentioning it.

The trouble starts when the file itself travels. A HEIC dropped into a Windows folder needs a codec from the Microsoft Store, and on older builds of Windows there is no codec to install. A HEIC attached to a job application is refused by the upload form. A HEIC handed to a print shop, a council portal, an insurance claim or a school website is a file nobody at the other end can see. The job is finished when those files are JPGs, and nothing else about them needs to change.

Two hundred of them is the normal case rather than the exceptional one, which is why this page is a queue and not a single slot.

Converting a folder of them

  1. Select the photos in Finder or Explorer and drag the whole selection onto the panel above. The file picker works too, and so does pasting.
  2. Each row reads its own first bytes. A file named .jpg that is really HEIC inside — which happens when a phone or a chat app renames on the way — is treated as what it is.
  3. Leave quality at 82 unless you have a reason. It is the point where a phone photograph stops looking different from the original.
  4. Decide about the location. Metadata is carried across by default so the capture dates survive; the second switch drops the GPS coordinates and keeps everything else.
  5. Press Download all as ZIP. The queue takes one file at a time, in a background worker where the browser provides one and on the page's own thread where it does not, each row reports what it produced, and a file that fails does not stop the rest.

Live Photos, portrait mode, and what actually survives

A Live Photo is two files: a still and a short video. Only the still is inside the HEIC, and only the still can become a JPG — there is no arrangement of JPEG bytes that holds three seconds of movement. If the movement is the point, export the video from Photos as well; this converter never sees it.

A portrait-mode photograph carries a depth map alongside the picture, which is what lets the phone re-blur the background afterwards. The JPG holds the rendered result, not the depth map, so the blur becomes permanent at the moment of conversion.

Colour is the one people notice. A recent iPhone shoots Display P3, a wider set of colours than sRGB, and on newer models the file also carries an HDR gain map that makes bright areas brighter on a screen that can show it. The JPG written here holds the sRGB conversion. Saturated reds and greens that sat outside sRGB clip to the edge of it, and the gain map is discarded. On most photographs this is invisible. On a sunset, or on a photo of a neon sign, it is not.

Capture date, camera model, lens, exposure and orientation are rewritten onto the JPG as a metadata block. Orientation is written as upright, because the pixels were turned upright when the file was read — carrying the original rotation flag would tell the next program to turn them again. The block itself is found by scanning the opening megabyte of the container, which is where an iPhone puts it; a file that keeps its metadata deeper in than that still converts, and arrives with none.

Questions about HEIC

Why does my iPhone save .HEIC instead of .jpg?
Because it is roughly half the size at the same visible quality, and Apple switched the default in iOS 11 in 2017. On the phone it is invisible — Photos shows the picture, sharing to most apps quietly converts. It only becomes a problem when the file itself is moved somewhere that has never heard of it.
How do I stop getting HEIC files in the first place?
On the phone, Settings, then Camera, then Formats, then Most Compatible. Everything shot after that is a JPG. It does not change the photos already taken, which is what this page is for.
Can I convert a whole folder at once?
Yes. Select all of them in the file picker or drag the lot onto the panel. They convert one after another so the page stays usable, each row reports its own result, and above three files the button writes a single ZIP.
What happens to a Live Photo?
The still frame becomes the JPG. The movement lives in a separate video file that the phone keeps alongside the picture, and there is no version of a JPEG that can hold it. If the motion matters, the video has to be exported from Photos separately.
Some of my files failed with a message about the profile. Why?
HEIC is a container, and what is inside it can be coded in ways this decoder does not implement — some 10-bit sequences, and some of the HEIF variants Android phones produce. Exporting a JPEG from the device that took the photo is the reliable way past it.
Does the photo get sent anywhere to be converted?
No. The decoder is a WebAssembly build of libheif that downloads to this browser the first time a HEIC is opened, and it runs here. There is no upload endpoint on this domain to send a photo to.

Decoding and encoding both happen on this computer. The libheif build runs inside this tab, like every other part of the conversion.