Turn an iPhone HEIC into a JPEG here
Forms and Windows PCs still choke on HEIC. Decode stays on this device.
iPhones save HEIC to keep the Camera roll small. The same file is the one that fails on a government form, a Windows email, or a shop’s “JPG only” box. This page decodes HEIC with a local WASM decoder and writes JPEG — the type those boxes actually open.
If decode fails, it is often a Live Photo or burst container, not a still. Open the photo in Photos, save a still, and try again. After convert, if the form also has a 50–100 KB cap, use the compressor next. Do not email us the HEIC.
Processed in your browser. Files are not uploaded.
Supported: HEIC, HEIF. Max 25 MB, 30 files.
Related tools
HEIC to PNG
Convert HEIC to PNG locally.
JPG Compressor
Compress JPEG photos with a quality control.
Image Converter
Pick a photo, choose an output type, then convert in this browser.
JPG to PNG
Convert JPEG to PNG. PNG will often be larger.
PNG to JPG
Convert PNG to JPEG. Transparent areas become white.
JPG to WebP
Convert JPEG to WebP for smaller web images.
HEIC to JPG runs in this browser with Canvas. The file is not uploaded to imagecropx. Close the tab and the copy in memory is gone.
HEIC in, JPEG out — not the reverse
Browsers cannot write HEIC. If you needed to go back to HEIC you would use the phone, not this site. PNG output is on the HEIC to PNG page when you want a lossless-looking still without JPEG ringing on text.
How to use HEIC to JPG
- Choose a file for HEIC to JPG. It stays on this device.
- Check the preview. Nothing is sent to a server for this step.
- Process, then download. You can add more than one file if this heic to jpg lists a batch cap.
Questions about this tool
Does this work on every phone?
Modern Chromium and Safari usually work. If decode fails, the file may be a burst/live photo variant we cannot read yet.
Does HEIC to JPG upload the file?
No. This tool runs in the tab. See Privacy for decoder notes (HEIC, PDF.js worker).
What is the file size cap?
About 25 MB per file. Very large pixel counts are rejected so the tab stays responsive.