Free HEIC to JPG Converter — iPhone Photos in Seconds
Convert HEIC photos from iPhone to JPG in your browser — no upload, no signup. Works on Windows, Mac, and Linux.
Drop HEIC files here or click to select
HEIC and HEIF files — drag & drop or click to select
How to convert HEIC to JPG
- Drop your HEIC files from iPhone onto the converter above — or click to browse and select multiple files at once.
- Click Convert on a single file, or Convert all to process the entire batch in one go.
- Download each JPG individually, or click Download all to save everything as a single ZIP archive.
- Note: on Chrome and Firefox the first conversion takes a few extra seconds while the HEIC decoder loads. Subsequent conversions in the same session are instant.
Your iPhone photos never leave your device
HEIC files are converted entirely in your browser — no file is transmitted to any server. The conversion uses the browser's Canvas API (Safari) or a WebAssembly decoder (Chrome, Firefox) that runs locally. Once the page is loaded, the tool works even without an internet connection.
This matters when converting personal photos, ID documents, medical images, or confidential screenshots that arrive as HEIC from an iPhone. There is no account, no temporary cloud storage, and no retention of your files at any step.
// Safari uses the native OS HEIC decoder via createImageBitmap
// Chrome/Firefox lazy-load a WebAssembly build of libheif
async function convertHeicToJpg(file) {
try {
// Safari: OS-native HEIC decode, zero library cost
const bitmap = await createImageBitmap(file)
const canvas = document.createElement('canvas')
canvas.width = bitmap.width
canvas.height = bitmap.height
const ctx = canvas.getContext('2d')
ctx.fillStyle = '#ffffff' // HEIC may have transparency; fill white for JPG
ctx.fillRect(0, 0, canvas.width, canvas.height)
ctx.drawImage(bitmap, 0, 0)
bitmap.close()
return canvas.toBlob(/* resolve */, 'image/jpeg', 0.8)
} catch {
// Chrome/Firefox: WebAssembly decoder, lazy-loaded on first use
const { heicTo } = await import('heic-to')
return heicTo({ blob: file, type: 'image/jpeg', quality: 0.8 })
}
}Why iPhone photos are HEIC — and why you need JPG
Apple switched iPhones to HEIC (High Efficiency Image Container) by default with iOS 11 in 2017. HEIC uses the HEVC codec and stores the same photo at roughly half the file size of JPG — a full-resolution iPhone photo is typically 2–4 MB as HEIC versus 5–8 MB as JPG.
The problem is compatibility. Windows 10 and 11 require a paid codec from the Microsoft Store to open HEIC natively. Most web platforms, email clients, CMS tools, and image editors still default to JPG. Stock photo platforms like Shutterstock and Adobe Stock do not accept HEIC. Instagram, Facebook, and Twitter convert HEIC automatically on upload but at unpredictable quality settings.
Converting to JPG gives you universal compatibility — every device, every platform, every app that was built in the last 30 years opens JPG without any special software or codec.
HEIC vs JPG — format comparison
| Feature | HEIC | JPG |
|---|---|---|
| Compression | HEVC — 50% smaller than JPG | Lossy, industry standard |
| File size (12MP photo) | 2–4 MB | 4–8 MB |
| Transparency | Supported | None — fills white on convert |
| Windows support | Requires paid codec | Native everywhere |
| Browser support | Safari only (natively) | All browsers |
| Web upload support | Limited — platform-dependent | Universal |
| Editing in Photoshop | CS 2023+ only | All versions |
| Best for | iPhone camera storage | Sharing, web, print, email |
When to convert HEIC to JPG
Convert to JPG when:
- Sharing on Windows — recipients without the Microsoft HEIC codec cannot open the file
- Uploading to websites — stock platforms, CMS, e-commerce, and social media all prefer JPG
- Sending by email — many email clients show HEIC as an attachment instead of an inline image
- Printing at a photo lab — most printing services accept JPG, not HEIC
- Editing in older software — Photoshop before 2023, Lightroom Classic, and GIMP need JPG
- Embedding in Word or PowerPoint — Office on Windows does not render HEIC inline
Keep HEIC when:
- Staying in the Apple ecosystem — Mac, iPhone, iPad, and iCloud all handle HEIC natively
- Saving storage — HEIC photos are 40–50% smaller; keep originals to save space on disk or cloud
- You only need it for yourself — if you will only view the photo on your own Apple devices, HEIC is fine
How the HEIC format works — technical overview
HEIC is a container format defined by the ISO Base Media File Format (ISOBMFF, ISO/IEC 14496-12). Image data is stored as HEVC (H.265) tiles inside the container — the same codec used for 4K video streaming. HEVC's advanced entropy coding (CABAC) and inter-prediction achieve roughly 2× the compression efficiency of JPEG's DCT at the same visual quality.
Because HEVC requires patent licensing from multiple patent pools (MPEG LA, HEVC Advance, Velos Media), browser vendors have been slow to implement native HEIC decoding. Safari can decode HEIC by delegating to the macOS and iOS system codecs, which already handle HEVC for video. Chrome and Firefox do not have a licensed HEVC decoder, so they rely on WebAssembly builds of libheif — an open-source library that includes a software HEVC decoder (libde265). This converter lazy-loads that library only when a HEIC file is detected, so non-HEIC pages are unaffected.
// HEIC is an ISOBMFF container — same as MP4 video
// Box types relevant to a still HEIC image:
ftyp — file type box: identifies this as HEIC ('heic' brand)
mdat — media data box: raw HEVC-encoded image data (tiles)
meta — metadata box
├─ hdlr — handler: 'pict' (picture handler)
├─ pitm — primary item: index of the main image
├─ iinf — item info: list of all image items (main + thumbnails)
├─ iloc — item location: byte offsets into mdat for each item
└─ iprp — item properties (width, height, colour info, rotation)
// A 12MP iPhone photo stores the main image as HEVC tiles
// plus a JPEG thumbnail, depth map, and gain map in the same file