Convert HEIC to JPG

Convert iPhone HEIC photos to JPG right in your browser. Batch convert many photos at once, free and private, with no upload and no watermark.

🌐 Español

Drop your files here (.heic, .heif)

🔒 Private by design: your files are processed locally in your browser and never uploaded to any server.

HEVC frames in an ISOBMFF box

A .heic file is not really a new image format so much as a new arrangement of existing parts. The pictures inside it are still frames coded with HEVC, the video codec also known as H.265, and they sit in an ISO base media file format container, the same box-based structure that holds an MP4. Apple made it the iPhone default with iOS 11 in 2017.

The consequence of that lineage is efficiency: a video codec’s intra-frame compression is a generation ahead of JPEG’s, so the same photo at the same visual quality takes much less space. The other consequence is licensing. HEVC is patent-encumbered, which is a large part of why HEIC never spread beyond the ecosystem that decided to pay for it, and why Windows still asks you to buy a codec extension to preview a file your phone produces by the hundred.

So the format is technically good and practically awkward. JPEG is the opposite, and that asymmetry is the entire reason this page exists.

Converting a camera roll to JPG

  1. Drop your HEIC or HEIF files into the box above, or use Choose files. Files accumulate across drops, so you can add several folders before starting.
  2. Choose a JPG quality. Balanced (recommended) is right for sharing and uploading, High (largest file) for printing or editing.
  3. Click Convert HEIC to JPG. Each photo is decoded and re-encoded on your own device, one after another.
  4. Download each JPG. Every file keeps its original name with a .jpg extension in place of the old one.

High, Balanced and Small in real encoder numbers

The three choices are not vague labels. They set the JPEG encoder’s quality parameter to 0.95, 0.85 and 0.7 respectively, on the 0 to 1 scale the browser’s encoder uses.

Balanced at 0.85 is where almost everyone should stay. It is high enough that compression artefacts do not appear in skies, skin tones or the soft edges HEVC handles so well, and low enough that the file does not balloon. High at 0.95 is worth the extra bytes when the photo will be printed, cropped hard, or edited again, because a later edit re-encodes whatever you give it and starting closer to the source helps. Small at 0.7 is a tool for a specific problem: a form that will not accept your file. If you need to hit an exact figure rather than guess, Compress Image to Exact Size searches for the setting instead.

The decoder: libheif compiled to WebAssembly

Browsers cannot be relied on to decode HEIC. Safari on Apple hardware manages it because the platform already has the codec; Chrome and Firefox on a typical Windows or Linux machine do not. Dropping a HEIC into a plain <img> tag therefore works for some visitors and not others, which is no basis for a conversion tool.

So the decoding is done explicitly, by libheif, the open-source HEIF and HEVC decoder that most of the ecosystem is built on, compiled to WebAssembly and run inside this tab. It reads the container, decodes the primary image, and returns raw pixels. Those pixels are then handed to the browser’s own JPEG encoder to produce the file you download. The upshot is that the decode no longer depends on what your platform happens to support, and that nothing has to be uploaded for a codec your machine is missing. The encode is still the browser’s own, so two browsers given the same photo at the same preset can hand back files that differ by a few bytes.

Two lossy formats in a row

HEVC is lossy and JPEG is lossy, so a converted photo has been through two generations of compression rather than one. At Balanced or High this is not something you will see on a screen, but it is real, and it is cumulative: converting the same photo back and forth repeatedly will visibly degrade it.

Treat the HEIC as the master copy and the JPG as a distribution copy. Keep the originals on the phone or in a backup, convert when something needs a JPG, and do not convert a JPG back to HEIC hoping to recover anything. If you would rather not add a second lossy pass at all, HEIC to PNG writes the decoded pixels losslessly, at the cost of a much larger file. The trade-offs are laid out at length in what changes when you convert HEIC to JPG.

What the JPG does not inherit

Because the conversion goes through raw pixel data, none of the file’s metadata makes the journey. GPS coordinates, camera model, lens, exposure settings and the capture timestamp are all absent from the JPG, as is any colour profile the original carried.

For most people that is a bonus, and it means running the output through Remove EXIF Data from Photos afterwards would find no metadata left to strip, while still costing the picture another lossy JPEG save. It does mean a photo library that sorts by capture date will fall back to the file’s creation date instead, so if that ordering matters, keep the originals. Everything else in this family is on the image tools hub.

Frequently asked questions

What do High, Balanced and Small mean in encoder terms?

They map to JPEG quality 0.95, 0.85 and 0.7 on the browser's own encoder scale. Balanced at 0.85 is the default because it is the point where most photographs stop showing compression artefacts on a screen. High is for a photo heading to a printer or into further editing, and Small is for beating an upload size limit.

My HEIC came from a burst or has a portrait depth map. What gets converted?

The primary image, and only that. A HEIC container can hold several coded images plus auxiliary data such as a depth or alpha map, and the decoder here asks for the main picture, so the extras stay behind in the original file. A Live Photo behaves the same way, so you get the still and the short video clip remains on your phone.

Why is the JPG larger than the HEIC it came from?

Because HEVC, the codec inside a HEIC, compresses a still image considerably better than JPEG does. Apple chose the format for exactly that reason. Converting therefore usually costs file size, sometimes a lot of it, which is the price of a format everything can open. Choose Small if the destination has a strict limit.

Do the location and camera tags come across into the JPG?

No. The decoder produces raw pixel data and the JPG is encoded from that, with no path for EXIF to travel along, so GPS coordinates, the device model and the capture time are absent from the output. That is convenient if you were going to strip them anyway, and worth knowing if you were relying on the date field to sort your archive afterwards.

Does a .heif file work as well as a .heic one?

Yes, both extensions are accepted and both are decoded the same way. HEIF is the container standard and HEIC is the common name for a HEIF file whose images are coded with HEVC, which is what an iPhone writes. Renaming a file between the two extensions changes nothing about its contents.

What are my converted files called?

The original name with the extension swapped, so IMG_4021.HEIC downloads as IMG_4021.jpg. Nothing is inserted into the name, because the format change is already obvious from the extension, and your originals are untouched on disk either way.

Related tools