What a conversion looks like
The table converts a 2000 x 1333 HEIC photo, 618 KB, to JPEG at quality 90. The JPEG came out at 588 KB. Decoding the HEIC took 375 ms and the whole job 1.1 s in the Node benchmark. HEIC is built to be smaller than JPEG at the same look, so a converted JPEG is often larger than the file it came from. That is the price of opening everywhere.
| Test image | HEIC | JPEG | Pixels | Fidelity (PSNR) | HEIC decode | Total time |
|---|---|---|---|---|---|---|
| Photo | 618 KB | 588 KB | 2000 x 1333 | 44.1 dB | 375 ms | 1.1 s |
The HEIC file was written from the test photo with pillow-heif at quality 60. Phone HEIC files vary a lot, and a JPEG is often larger than the HEIC it came from. Decoding uses libheif compiled to WebAssembly. Timings: one thread of WebAssembly on Node v22.23.4, Intel(R) Xeon(R) Processor @ 2.10GHz, 2 cores, measured 2026-10-31. Other devices will differ.
Why a HEIC will not open
iPhones save photos as HEIC by default. Many Windows setups need an extension to show them, and plenty of websites and forms reject the format. A JPEG avoids both problems.
How the conversion runs
HEIC is decoded by libheif compiled to WebAssembly. The code is about 2 MB and downloads only when you drop a HEIC file, then stays cached for offline use. The photo itself never leaves your device. Only the first image in the file is read. The first conversion in a session is the slowest, because the decoder has to download and start. After that, each photo takes the decode time shown in the table plus the time to encode the JPEG.
Colour and location
Many iPhone photos use a wide-gamut colour profile. The tool keeps that profile for HEIC input even when metadata removal is on, because without it colours would look dull. GPS location and camera details are not copied into the JPEG.
Live Photos and large batches
A Live Photo includes a short video, which is a separate file and is not converted. Very large photos use a lot of memory. On an older phone, convert a few at a time. You can also set a longest side in the resize tool to shrink them as part of the same step.
Quality and size for sharing
- Quality 90 is the default and keeps the detail of most photos.
- For messaging and social apps, quality 80 is usually enough and the files are much smaller.
- For email, set a longest side of 2000 pixels, or a size target such as 100 KB.
- Phone sensors give large pixel counts. A longest side of 3000 pixels is plenty for screens.
Converting many photos
A camera roll export of hundreds of photos will not fit the free limit of 10 images a day, and a batch takes 100 files at most. For a handful of photos, drop them together and download them as one ZIP.
Questions
Do I need to install anything?
No. The decoder loads in the page when needed.
Will the JPEG keep the location?
No. GPS and other camera details are left out, which is useful before sharing.
Why is my JPEG larger than the HEIC?
HEIC is more efficient. Lower the JPEG quality or set a size target to shrink it.
Does it handle several photos?
Yes, within the daily limit of 10 images.