Converter · No upload

HEIC to JPG, without uploading anything

Drop in iPhone photos and download JPGs. The conversion runs entirely inside your browser — there is no server to upload to, the network meter below proves it live, and it keeps working with your wifi switched off.

Statusidle Files OutputJPG Network since file read

How this converter works

When you choose a file, the browser's File API hands this page the bytes in memory — no transfer is involved, because the file is already on your machine. A WebAssembly build of libheif, the same open-source decoder used across the industry, decodes the HEIC's HEVC-compressed image into raw pixels inside this tab. Those pixels are drawn to a canvas and re-encoded as a JPG at the quality you chose, and the result is handed back as a download link. Every step runs in the tab; a server is never part of the pipeline because this site doesn't have one.

You don't have to take that on trust. The readout's network meter arms the instant your first file is read and counts every network request the page makes from that moment — the number stays at zero, in green, and would flip red if a single request left the page. Independently: open your browser's developer tools on the Network tab and watch it stay silent, or switch on airplane mode and convert anyway — after one visit the page and decoder are cached and the whole tool works offline. The methodology page walks through each check.

The honest limits: decoding happens in RAM, at roughly four bytes per pixel — a 48-megapixel photo needs about 200 MB while converting, so very large batches on a low-memory phone are better done a few files at a time. Ten-bit and HDR captures are tone-mapped down to standard 8-bit color, because that's what JPG can hold. And re-encoding strips all metadata — including GPS location, which most people are glad to lose, but also the capture timestamp, which you should note if you need it. Orientation is applied during decode, so photos come out upright.

Frequently asked questions

Is my photo uploaded anywhere?
No. The file is opened with your browser's File API, decoded to pixels by a WASM decoder running inside this tab, re-encoded to JPG on a canvas, and handed back as a download link — all in memory, on your device. The readout's network meter shows live that zero requests leave the page once your file is read, and the methodology page shows two independent ways to verify it.
Does the JPG keep the photo's location and other EXIF data?
No — and for a change that's good news. Re-encoding through a canvas strips all EXIF metadata, including GPS coordinates, device model, and timestamps. The pixels survive; the tracking data doesn't. If you need the capture date, note it before converting.
Why is the first conversion slower than the rest?
The HEIC decoder — a 1.4 MB WebAssembly build of the open-source libheif library — downloads once, before your file is read. After that it's cached, conversions run at full speed, and the page even works offline.
Will converting to JPG lose quality?
Slightly, by design: JPG is a lossy format, and HEIC-to-JPG is a re-encode. At the default 0.92 quality the difference is invisible for photos; raise the slider to 1.00 for maximum fidelity at a larger file size. Expect the JPG to be noticeably bigger than the HEIC — HEIC's better compression is the reason Apple uses it.
My HEIC file produced several JPGs. Why?
A HEIC file is a container that can hold more than one image — burst shots and some Live Photo exports store several. This tool converts every top-level image it finds and numbers the downloads, so nothing hiding in the container is silently dropped.

Related tools