HEIC → JPG Converter
Turns iPhone HEIC photos into normal JPGs, right in your browser — nothing is ever uploaded, and a whole folder converts in one drop.
Drop in one or more .heic/.heif photos and get back standard JPGs — orientation preserved automatically, quality adjustable, multiple files download as a single zip. The HEIC decoder (libheif, compiled to WebAssembly) is embedded directly in this one HTML file, so conversion happens entirely on your machine. No upload, no account, no subscription, works with your Wi-Fi off.
What it does
What it does: Decodes real HEIC/HEIF files (the format iPhones save photos in by default since iOS 11) using an embedded WebAssembly build of libheif, draws the decoded image to a canvas, and re-encodes it as a JPEG at an adjustable quality level. Drop one file for a single download, or drop a whole folder for a batch — multiple files download together as one zip, built by a small hand-written zip writer with no external dependencies.
Who it's for: A shop owner, real-estate agent, or anyone in a small business who gets photos from a client's or customer's iPhone and hits a wall the moment they try to upload them somewhere that only accepts JPG or PNG — a website's image field, an ecommerce listing tool, an email client that renders HEIC as a grey box, or a Windows PC that can't preview them at all.
Example scenario: A boutique shop owner gets a folder of 24 product photos from a supplier who shot them on an iPhone. Their ecommerce platform rejects every one with "unsupported file type." They drag the whole folder into this tool, wait a few seconds, and download one zip with 24 correctly-oriented JPGs ready to upload.
What it explicitly does not do:
- Converts only the primary/first image inside a HEIC container — a HEIC holding a Live Photo's motion component or a multi-shot burst yields only the primary still, not every embedded frame.
- Does not preserve EXIF metadata (camera model, GPS coordinates, capture timestamp) on the output JPEG — canvas re-encoding strips it. This is a deliberate tradeoff, not an oversight: it's also what keeps the output correctly oriented without a second rotation step (see FAQ), and if you specifically want to preserve or strip that metadata from a JPEG, that's what this line's EXIF/GPS Stripper tool is for.
- Outputs JPEG only — no PNG or WebP output option in this version.
- Does not read a folder from disk automatically — you drop or browse for the files each time (no File System Access API dependency, which is also why it works identically in Safari/Firefox, not just Chromium).
Features
- Converts
.heic/.heifphotos to standard JPG, one file or a whole batch at once - Preserves photo orientation automatically — verified against 4 known orientation values (normal, 180°, 90° CW, 90° CCW) by decoding real test files and visually confirming each rotated correctly, not just assumed
- Adjustable JPEG quality (50–100%) — genuinely changes output file size, not a cosmetic slider
- Batch conversions download as a single zip, built with no external dependencies
- Runs entirely offline: the HEIC decoder (libheif via WebAssembly) is embedded in this one file, so nothing is ever uploaded — verifiable by reading the page's own source or watching your network traffic
- Clear per-file progress and error messages for a whole batch, including files that aren't actually HEIC or are corrupted
Browser support
| Platform | Result | Notes |
|---|---|---|
| Desktop Safari (macOS) | Full | Opened and visually confirmed in the real, installed Safari app (loading → ready state genuinely observed). Full functional flow — decode, orientation-correct output, batch, zip, error handling — additionally verified via Safari's own WebKit engine through Playwright automation, not inferred. |
| Desktop Chrome (macOS) | Full | Opened and visually confirmed in the real, installed Chrome app. Full functional flow verified via Chrome's own Blink engine, including a 6000×6000px real HEIC file (281–314ms decode+encode) and a 10-file batch with correct per-file progress and a valid zip download (extracted and re-verified with the system `unzip`). |
| Desktop Firefox (macOS) | Full | Opened and visually confirmed in the real, installed Firefox app. Full functional flow verified via Firefox's own Gecko engine. |
| Edge / Brave | Not separately tested | Both are Chromium-based like Chrome, where the tool was confirmed Full; not independently installed or run on this machine. |
| Small-viewport / touch | Partially checked | Verified via Chromium's iPhone 13 device emulation (390×844, touch) — no horizontal overflow, readable text, workable touch targets. This is emulation in a desktop browser engine, explicitly not the same as a real device test. |
| iOS Safari (iPhone/iPad) | Not verified | No physical iOS device available. The APIs used (File/Blob, ``, WebAssembly, Canvas) are all standard and long-supported in iOS Safari, but this is an inference, not a test — not claimed as verified. |
| Android Chrome | Full | Tested on a real Android device in Chrome — works. |
Every "Full" result above was produced by actually decoding real HEIC files (including one genuine macOS system file and four purpose-built orientation-test files) through that engine and inspecting the output — not by reading the code and assuming it would work.
FAQ
Does my file get uploaded anywhere?
No. The entire tool is one static HTML file with the HEIC decoder embedded directly inside it (as WebAssembly). There is no server component and no network calls — you can open it with your Wi-Fi off, or read the page's own source to confirm nothing sends data anywhere. This is a real, checkable difference from free online HEIC converters: heictojpg.com, CloudConvert, Convertio, and FreeConvert.com were all checked directly against their own privacy policies or product pages for this release, and every one of them uploads your photo to a remote server to do the conversion (retention windows range from "a few hours" to 48 hours before deletion).
Why is this file so much bigger than other tools in this line?
Because it embeds a real HEIC decoder. No browser can decode HEIC natively, so this tool bundles a WebAssembly build of libheif (about 1MB on its own) directly into the HTML file — that's the entire reason the file is roughly 1.4MB instead of the 20–60KB of a tool like the EXIF/GPS Stripper. It's a real, necessary cost of doing this conversion fully offline instead of quietly uploading your photo to a server like the free alternatives do.
Does this work on my iPhone/iPad?
Almost certainly, since iOS Safari supports the same standard browser APIs (WebAssembly, Canvas, File/Blob) this tool relies on — but that has not been tested on a physical iOS device, so it isn't claimed as verified. If you try it on iOS and hit an issue, that's genuinely useful to know.
Does this work in bulk / can I convert a whole folder?
Yes — drop or select multiple files at once and they convert as a batch, with a single zip download at the end. Tested with a real 10-file batch.
Can I use this for client or commercial work?
Yes — personal and commercial use are both fine, including client deliverables and product photos.
Is there a subscription?
No. One-time purchase, yours to keep and reuse forever, fully offline.
Does this preserve my photo's location or camera info?
No — the output JPEG has no EXIF metadata at all (canvas re-encoding strips it by design). If you need to strip or check that metadata from a JPEG, see this line's EXIF/GPS Stripper.
Try it free in your browser → Open the free version of this tool — runs entirely in your browser, nothing uploaded.
- ✓ Runs 100% offline in your browser
- ✓ Single HTML file — no install, no dependencies
- ✓ No account, no telemetry, no tracking
- ✓ Buy once — yours forever
After checkout you get an instant download link. Open the file in any modern browser and it just works.
Pairs well with
✓ runs entirely on your device — Wi-Fi off? Still works.
accounts sign-ups cloud uploads none
✓ your files stay where you put them
Prefer to try before buying? The browser versions of every tool run free at tools.untracked.tools — no upload, ever.