Why HEIC needs converting at all
A HEIC file is a HEIF container holding image data compressed with HEVC — the video codec also known as H.265. Apple made it the iPhone's default capture format in 2017 because it stores a comparable-looking photo in appreciably less space than JPEG. The problem is not the format's quality; it is that HEVC carries a thicket of patent licensing, which is why Windows sells the codec as a paid extension and why Chrome and Firefox decode HEIC on essentially no platform. A file your phone considers ordinary is unopenable on a colleague's laptop.
This page works around that by carrying its own decoder. On the first conversion it loads heic-to, a wrapper around libheif compiled to WebAssembly, from a CDN — after which the browser caches it. That decoder unpacks the HEVC image data into raw pixels, and the browser's own encoder writes them back out as JPEG or PNG. Your photo is decoded and re-encoded in the tab; the only thing that crosses the network is the decoder itself, once.
Files are handled one at a time with a pause between each, which keeps the page responsive on a large batch. Each result gets its own thumbnail and download button, and Download all packs them into a ZIP, renaming anything that would collide.
What conversion keeps and what it discards
| Capability | HEIC | JPEG output | PNG output |
| Colour depth | Up to 10-bit | 8-bit only | 8-bit here |
| Transparency | Supported | Not supported | Supported |
| Multiple images in one file | Yes — bursts, Live Photos, depth maps | One image only | One image only |
| Compression | Lossy (HEVC) | Lossy, re-encoded | Lossless from the decoded pixels |
| Opens everywhere | No | Yes | Yes |
| Typical file size | Smallest | Larger than the HEIC | Much larger — often several times |
The row that surprises people is the last one. Converting to JPEG almost always produces a bigger file than the HEIC you started with, because HEVC's intra-frame compression is simply more efficient than JPEG's. You are trading disk space for the ability to open the picture. And if a photo carries extras — the short video of a Live Photo, a portrait-mode depth map, a burst sequence — only the primary still image survives, since neither JPEG nor PNG can hold the rest.
Honest limitations
Re-encoding to JPEG is a second lossy pass. The HEIC was already lossy; decoding it and compressing again with a different algorithm cannot recover detail and will shed a little more. At 90% quality the difference is invisible in normal viewing, but it is real, and it is why you should always convert from the original file rather than from a copy that has been through this once already.
Memory is the practical ceiling on batch size. Decoding produces an uncompressed bitmap costing four bytes per pixel: a 12-megapixel iPhone photo needs roughly 49 MB while it is being processed, and a 48-megapixel one closer to 195 MB. Converted results are also held in memory until you press Clear. On a phone, work in batches of a few dozen rather than emptying an entire camera roll into the page at once.
Do not assume metadata survives. Capture date, camera settings and GPS coordinates are stored in the HEIC's metadata, and how much of that carries into the converted file depends on the decoder. If the timestamps matter — for a photo library that sorts by capture date, or an insurance claim — convert one file first and check its properties before running a batch. If you would rather that information were not in the file you are about to share, the EXIF remover strips it deliberately and shows you what was there.
Some files will not convert. The tool verifies each file is genuinely HEIC before decoding and reports the ones that are not, which usually means a file renamed to .heic or a partial download from a messaging app. Very old or unusual HEIF variants may also fail. And PNG output ignores the quality slider entirely — lossless compression has no quality setting.
Choosing settings, and avoiding the problem entirely
Pick JPEG unless you have a specific reason not to. PNG is lossless, but a photograph saved as PNG is frequently several times the size of the JPEG for no visible benefit — its efficiency is on flat colour and sharp edges, not on the continuous tone of a camera image. Reach for PNG when the picture is a screenshot, contains transparency, or is going to be edited further.
For JPEG, the 90% default is a good archival setting: high enough that artefacts are not visible at full size, low enough to be sensible on disk. Drop to around 80% for photos going into email, chat or a web page, where the file size matters more than pixel-level fidelity. Below about 70% you start to see blocking in skies and smooth gradients, which is exactly where compression damage is most obvious.
If you convert HEIC files regularly, the better fix is upstream: on an iPhone, Settings → Camera → Formats → Most Compatible makes the camera capture JPEG directly, at the cost of larger files on the phone. Sharing photos through AirDrop or Mail also converts them automatically in many cases, which is why some pictures arrive as JPEG and others as HEIC.
Once converted, if the files are still too large for what you need them for, PixSqueeze compresses JPEG and PNG further with a visible before-and-after, and the resizer reduces the pixel dimensions, which saves far more than any quality setting. Both run in the browser too — the whole set is on the image tools page.