HEIC to JPG: The Complete Guide — Why Systems Reject iPhone Photos and Three Ways Through
The "unsupported format" moment
You photograph a document with an iPhone, upload it to a registration portal, and it bounces back with "JPG only" — the densest pain point for HEIC users: exam sign-ups, visa materials, government uploads, bank onboarding. Anywhere the system skews old, the whitelist stops at JPG and PNG.
What HEIC is, and why iPhone uses it
HEIC is the image container of HEIF, encoding with H.265 (HEVC); it has been the default iPhone capture format since iOS 11. The motive is blunt: roughly half the size of JPG at comparable quality, which adds up to tens of GB a year on a 128GB device. Technically it is progress — the problem is ecosystem: JPG is nearly 30 years old and the greatest common divisor of every system; HEIC has native support only on newer platforms (macOS 10.13+, Windows with the extension installed), while plenty of government and enterprise file whitelists never left the JPG era.
Three paths, chosen by scenario
Path one: capture as JPG (set and forget)
Settings → Camera → Formats → "Most Compatible". Every shot lands as JPG. The cost is doubled storage — right for people who upload ID photos constantly, wrong for storage-strained photo power users.
Path two: convert on transfer (the hidden iPhone mechanism)
Settings → Photos → Transfer to Mac or PC → "Automatic". AirDrop and cable transfers convert to JPG on the fly while originals stay HEIC. Good for occasional sharing — but note some paths (certain cloud-drive direct uploads) bypass this conversion.
Path three: conversion tools (after the fact)
Batch-convert existing HEIC to JPG. Three sub-paths:
- Online converters: mind privacy — running ID photos through an online tool means uploading originals to a stranger's server; prefer implementations that process locally (our HEIC to JPG decodes in-browser via libheif, files never upload, works offline).
- macOS: Preview exports directly, or
sips -s format jpeg *.heicbatch-converts in one line. - Windows: install the HEIF Image Extensions, then save-as via Paint/Photos, or script it in PowerShell.
Quality trade-offs when converting
HEIC → JPG is a lossy re-encode: quality 85-90 is visually identical at reasonable size; pushing 100 only bloats the file without recovering what HEIC already discarded. For ID photos the question barely matters — keep the required resolution (295×413 for many registrations) and quality 90 passes every review. For aggressive compression, converting to WebP saves another 25-35% over JPG; transparency needs PNG.
Implementer's note
Decoding HEIC in the browser rides on heic2any — a WASM packaging of libheif — and one implementation detail is worth recording: the decoder is not small (several MB of wasm), so the converter loads it via dynamic import on demand; visitors who never touch HEIC pay no first-screen cost for it. The quiet advantage of the pure-frontend approach is that decoding never leaves the machine, unlike some online services whose conversions queue server-side. If the output JPG must fit a portal's size cap (commonly 30-100KB), pair it with the image compressor as a second step: convert the format first, then squeeze the size.