How browser-based HEIC conversion works
Browsers can't open HEIC on their own. The format uses the HEVC codec that Chrome, Firefox, and most desktop browsers don't ship a decoder for, so this page brings its own. A compiled-to-WebAssembly build of libheif, the same open-source library that powers most HEIC tooling, loads the first time you hit Convert and does every decode locally. Here's the four-step pipeline, all of it inside your tab.
- You drop one or more HEIC or HEIF files. The page reads each one as a Blob in memory, so nothing is copied to a server or written to disk.
- On your first conversion, the libheif WebAssembly decoder downloads once (about 1.3 MB) and stays cached. Later conversions skip the wait entirely.
- libheif decodes the HEVC-compressed image into raw pixels, then re-encodes them to JPG or PNG. For JPG, the quality slider maps straight to the encoder's compression setting; PNG output is always lossless.
- You get a thumbnail and file size for each result, a per-photo download button, and a single ZIP for the whole batch. The ZIP is built in memory with fflate, an 8 KB library that runs in the tab.
Why convert HEIC to JPG?
- HEIC is an Apple default, but it's a wall everywhere else. Windows needs a paid codec pack to even preview it, plenty of web upload forms reject it outright, and older photo software treats it as a broken file. JPG opens on literally everything.
- Your photos stay private. A medical photo, a client's property, a passport scan: none of it should pass through a stranger's cloud converter. Here the decode happens in your browser, so the image never leaves your device.
- Batch conversion saves real time. A weekend of photos can be a few hundred HEIC files. Drop the lot, hit Convert once, and grab a single ZIP instead of running them through a converter one at a time.
- You keep control of quality and size. The slider lets you trade a little detail for a much smaller JPG, which matters when you're emailing a batch or uploading to a CMS that caps file size.
Common applications
HEIC conversion comes up any time an iPhone photo has to go somewhere that doesn't speak Apple's format. Three patterns we see constantly.
- Sharing iPhone photos with Windows or Android users. Airdrop keeps HEIC, but the moment a photo lands on a non-Apple device or an older email client, it won't open. Converting to JPG first means it just works for everyone.
- Uploading to web forms and marketplaces. Job portals, government sites, eBay, insurance claim uploads: many still reject HEIC. A quick JPG pass turns a rejected upload into an accepted one.
- Prepping photos for editing or print. Some older versions of Photoshop, Lightroom, and print services choke on HEIC. Converting to PNG keeps full quality for editing, or JPG for a smaller file the print shop will accept.
A worked example: a camera roll to a shareable ZIP
Say you came back from a trip with 40 HEIC photos and your family all use Windows laptops. Here's the fastest way to get them something that opens.
Drop all 40 files into the upload zone at once. Leave the output on JPG and set quality to 0.85, which keeps the photos looking sharp while cutting the file size well below the HEIC originals. Hit Convert all. The decoder loads once, then chews through the batch, usually a second or two per photo. When it's done, click Download .zip to get every JPG in one archive you can email or drop in a shared folder. The whole run happens in your browser; the only network traffic is the page itself and the one-time decoder download. Your photos never touch a server.
Why can't my browser open HEIC already?
HEIC stores its pixels with HEVC (H.265) compression, a codec that's patent-encumbered and rarely shipped in browsers. Apple bakes it into iOS and macOS, but Chrome, Firefox, and most Windows software don't include an HEIC decoder out of the box. That's why a HEIC file usually shows a broken-image icon or just refuses to open. This tool sidesteps the problem by loading its own decoder, a WebAssembly build of the open-source libheif library, so the conversion works regardless of what your browser ships natively.
Do my photos get uploaded anywhere?
No. Every decode and re-encode happens inside your browser tab using the libheif WebAssembly engine. No photo data is sent to a server, there's no temporary upload, and there's no cloud round-trip. You can confirm it yourself: open DevTools, switch to the Network panel, and run a conversion. The only requests you'll see are the initial page load, the one-time decoder download, and ad calls. Nothing photo-shaped leaves the tab.
Should I pick JPG or PNG?
Pick JPG for photographs — it's the universal default, the quality slider lets you keep files small, and it's what email, social media, and most upload forms expect. Pick PNG when you need a lossless copy, for example if you're going to edit the image further and don't want compression artifacts baked in, or if the photo has sharp edges and flat colour regions like a screenshot. PNG files are larger because they're lossless, so for ordinary photos JPG at quality 0.85 is almost always the better trade.
What about Live Photos and multi-image HEIC files?
Some HEIC files, including Live Photos, bursts, and certain Apple exports, contain more than one image inside a single container. When the decoder finds several frames, this tool converts each one and names them with a numeric suffix (photo-1.jpg, photo-2.jpg, and so on) so you don't lose any of them. If a particular file is corrupt or uses a codec variant libheif can't read, that one file is flagged with an error and the rest of your batch keeps going. A single bad photo never stops the whole run.
Drop your iPhone photos, pick JPG or PNG, convert. Everything runs in your tab. No upload, no account, no waiting on a server queue.