Convert HEIC to JPG — in your browser, nothing uploaded

Drop an iPhone HEIC and get a JPG back without sending the photo to anyone. It works wherever your browser can decode HEVC — and when it can't, it says so honestly instead of handing you a broken file.

Your photo never leaves your device — conversion runs in your browser. 0 bytes uploaded.

Drop a HEIC / HEIF photo file hereTap to choose a HEIC / HEIF photo file

Decodes the HEVC photo in your browser — the native codec on Safari, a bundled WASM codec everywhere else — and re-encodes it as JPG. Nothing is uploaded.

100% in your browser. 0 bytes uploaded — open DevTools → Network and watch. Your file is read, never sent.

In short

This converts a HEIC (or HEIF) photo to a standard JPG entirely on your machine. Drop the file and the tool asks your browser's own decoder to render the picture; if it can, the pixels are re-encoded to JPG at high quality and offered as a download. It is deliberately honest about one thing most converters gloss over: HEIC photos are HEVC-coded, and not every browser can decode HEVC. Where yours can, you get a real JPG. Where it can't, you get a clear explanation and a route that will — never a fake result. Nothing is uploaded, and if the file turns out to be damaged rather than just un-decodable, the tool points you to repair.

Why HEIC is different from JPG

HEIC is the container Apple has used by default since iOS 11. Inside it, the photo is stored as an HEVC-coded image (the same codec as H.265 video), wrapped in an ISO base-media box structure — the same kind of box layout as an MP4. That is why HEIC files are roughly half the size of an equivalent JPG at similar quality: HEVC is a far more modern compressor. The trade-off is decode support. JPG has been universally decodable for thirty years; HEVC is patent-encumbered, so many platforms don't ship a decoder. A JPG opens everywhere; a HEIC only opens where something can decode HEVC.

This converter does the honest thing: it hands the file to the browser'screateImageBitmap decoder — the same native path a <img> tag would use — and only claims success when that decoder actually returns pixels. There is no bundled HEVC decoder pretending to do the job; the conversion is real or it doesn't happen.

Where it works, and where it won't

Converts here

  • Safari on macOS and iOS — HEVC decoding is built in
  • iPhone and iPad browsers — the photo decodes natively
  • Windows with the HEVC Video Extensions codec installed — Chrome and Edge can then decode it

Falls back honestly

  • Most Chrome and Firefox builds on Windows without the codec, and on Linux — no HEVC decoder, so no JPG is produced
  • Rather than a broken download, you get a plain message and are pointed to a device that can decode it
  • If a structural scan finds real damage, you're sent to repair the HEIC first

The most reliable path when your browser can't decode HEVC is simply to open the photo on the device that took it — an iPhone or iPad can export JPEG directly from the share sheet — or to reopen this page in Safari on a Mac.

What the JPG will and won't keep

Converting HEVC to JPG is a re-encode, not a copy, so a little quality is always lost; we encode at 0.92 to keep that minimal and imperceptible in normal viewing. JPG cannot store transparency, so any alpha is flattened onto a white background. Because HEIC compresses more efficiently, the resulting JPG is frequently larger on disk than the HEIC it came from — that's expected, not a fault. The still image converts; extras that a JPG can't hold — depth maps, auxiliary images, or a Live Photo's paired movie — do not carry over. If you need a pixel-exact copy, don't convert: keep the HEIC and use the HEIC viewerto look at it.

Why "no upload" is verifiable, not a slogan

Almost every "HEIC to JPG" site on the web uploads your photo to a server to convert it there. This one doesn't. The file is read with the browser's file APIs, decoded by the browser, and re-encoded on a canvas — all on your device. The page makes no request that carries your bytes. Don't take it on faith: open DevTools, select the Network tab, drop a file, and watch that nothing leaves. It's the same zero-upload principle as the rest of IntactFile, applied to conversion — which matters most for exactly the private photos people are wary of uploading.

If the file is damaged, not just un-decodable

There's a real difference between "my browser can't decode HEVC" and "my HEIC is broken." The first is a codec gap — the file is fine and opens on an Apple device. The second is structural damage: a truncated transfer, an interrupted iCloud sync, or a recovery tool that guessed the file's boundaries can leave the container corrupt so no decoder can reach the picture. Conversion can't fix that, because there's nothing decodable to convert. When the tool's structural scan spots damage it stops pretending and links you straight torepair the HEIC container first — re-anchoring offsets and salvaging the surviving tiles — after which conversion becomes possible again.

FAQ

How do I convert a HEIC to JPG here?

Drop the photo above (or tap to choose one). The tool reads it in your browser and asks the browser's own image decoder to render the HEVC picture; if that succeeds, it re-encodes the pixels to JPG and gives you a Download button. Nothing is uploaded at any point — you can watch the Network tab stay empty.

It says my browser can't decode HEVC — why?

HEIC wraps an HEVC-coded image, and HEVC decoding isn't shipped by every browser. Safari and Apple devices decode it, and Windows can once the free HEVC Video Extensions codec is installed, but most Chrome and Firefox builds elsewhere can't. When the browser declines, we won't fake a JPG — we tell you plainly and point you to a device that can decode it. The honest workaround is to open the photo on the iPhone or iPad that took it (they export JPEG directly) or use Safari on a Mac.

Is the JPG identical to the original HEIC?

No — and no converter can make it so. JPG is a lossy format, so re-encoding always discards some data; we encode at high quality (0.92) to keep the loss small. JPG also has no transparency, so any alpha is flattened onto white. HEIC often stores photos more efficiently than JPG at the same quality, so the JPG may be a larger file. If you need a lossless copy, keep the HEIC and use the viewer instead.

Does converting upload my photo anywhere?

No. The conversion runs entirely in your browser using the browser's decoder and canvas — 0 bytes leave your device. Unlike upload-based converters, your private photos never touch a server. Open DevTools, switch to the Network tab, drop a file, and confirm nothing carries it.

The converter fails and the photo won't open anywhere — now what?

Then the HEIC itself may be damaged rather than merely un-decodable. A truncated transfer, an interrupted iCloud sync, or a data-recovery tool can leave the container broken so no decoder can reach the picture. In that case conversion can't help — the structure has to be repaired first. When the tool detects damage it links straight to the HEIC repair page.

Can it convert Live Photos or the depth data?

It converts the primary still image only. A HEIC can carry extras — an auxiliary depth map, an alternate image, or a paired Live Photo movie stored separately — but a JPG holds a single flattened frame, so those extras don't survive the conversion. That's a limit of the JPG format, not a bug.

Related: just want to look at it — HEIC viewer · file won't open at all — repair HEIC · broken JPG — repair JPG