How to convert HEIC photos to JPG (and why iPhones use HEIC)

iPhones save photos as HEIC to halve storage, but many forms, editors and Windows apps still refuse them. Here is what HEIC is and how to get a JPG that works everywhere.

By Ranjith R, Creator & Developer of TryImagerPublished Updated 7 min read

HEIC is efficient on the phone; JPG is what most upload forms expect.

HEIC (High Efficiency Image Container) is the format iPhones and many recent phones use by default. It stores a photo using HEVC video compression, which typically produces a file around half the size of a JPG of similar visual quality. On the phone that is a real benefit: twice as many photos fit in the same storage, and features such as Live Photos and depth data travel in the same container.

The trouble starts when the photo leaves the Apple ecosystem. Government and exam portals usually accept JPG and sometimes PNG only. Older versions of Windows need an extra codec to open HEIC. Many website builders and email clients show a broken thumbnail. Converting to JPG is the most reliable way to make the photo usable everywhere.

When you actually need to convert

  • An upload form rejects the file or only lists JPG/JPEG/PNG as accepted types.
  • You are sending photos to someone on Windows or an older Android device.
  • A content management system or online editor does not show a preview.
  • You want to compress or resize the photo with tools that do not read HEIC.

If the photo only stays on your iPhone, Mac or iCloud, there is no need to convert it. You would just use more storage for the same picture.

Stopping the iPhone from creating HEIC in the first place

In Settings → Camera → Formats, choosing 'Most Compatible' makes the camera save JPG instead of HEIC. Photos shared from the Photos app by AirDrop or Mail are also often converted automatically. Both are useful, but neither helps with photos you have already taken, and 'Most Compatible' roughly doubles the storage each new photo uses.

How the HEIC to JPG tool works

Browsers cannot decode HEIC natively (Safari is a partial exception), so TryImager's HEIC to JPG page loads a decoder built from libheif compiled to WebAssembly. The decoder only downloads when you open that page — it is several megabytes, so it is deliberately not loaded anywhere else. The photo is decoded inside your browser tab, drawn to a canvas and encoded as a JPG at the quality you choose. The file is not sent to a server.

  • Open the HEIC to JPG tool and drop in one or more .heic or .heif files.
  • Choose a quality. 85–90 keeps the photo close to the original; 70–80 gives a much smaller file for uploads.
  • Convert, then check the measured output size and dimensions before downloading.

Quality and file size to expect

A typical 12-megapixel iPhone HEIC of 1.5–2.5 MB usually becomes a 2.5–5 MB JPG at quality 90. That growth is normal: JPG is the less efficient format. If you need something closer to the original size, lower the quality to around 80, or resize the photo to 2000 pixels on the long edge — most screens and forms never need more.

Limitations

  • Only the main still image is converted. Live Photo motion, depth maps and burst frames are not included.
  • HDR or wide-colour (Display P3) photos are converted to standard sRGB JPG, so very saturated colours can look slightly flatter.
  • Camera metadata such as location is not carried over, because the image is redrawn from pixels.
  • Very large files can exceed the memory available on older phones; the tool checks this and tells you rather than crashing the tab.

Troubleshooting

  • 'Unsupported file': the file may be a renamed JPG or a different container. Try opening it in the Photos app and exporting again.
  • The decoder seems slow the first time: it is downloading once; later conversions on the same visit are faster.
  • Converted JPG is too big for a form: run it through the Image Compressor with a target size, or resize first.
  • Photo appears rotated: re-export from the phone; the tool applies the orientation the decoder reports.

Tools for this