HEIC converter

Nothing you choose here leaves your browser. There is no server to send it to — the reading and the converting both happen on your own device, and nothing is uploaded, stored or seen by anyone. That is not a promise about what we do with your photographs; it is a statement that we never receive them.

…or drop files anywhere on this page.

What this page actually did

Two separate things, and they are worth keeping apart because only one of them works everywhere.

It read the file. A HEIC is a container — a set of labelled boxes holding an image, a thumbnail, the camera's notes, sometimes a depth map. Reading that structure needs nothing but arithmetic, so the table above is filled in on every browser, every time, for every file.

It asked your browser to decode the picture. That is a different job, and your browser can only do it if the operating system underneath it has an HEVC decoder it is allowed to use. Apple's do. Most Android and macOS builds of Chrome do. Firefox, and Chrome on Windows, generally do not — and when they cannot, this page says so rather than showing you a broken image.

What is actually inside a HEIC

More than a picture, which is why the table above has so many rows. The file is an ISO container — the same family as an MP4 — and the photo is one item in it among several.

The image is usually in tiles. iPhones store a large photo as a grid of smaller squares rather than one big image, because it decodes faster and in less memory. If your file is a grid, the table says how many tiles and in what arrangement. The tiles are an implementation detail you would never otherwise see.

The orientation is in the container, not the picture. The pixels are stored the way the sensor read them and a rotation is recorded alongside. This page reads that rotation and then checks whether your browser applied it, by comparing the size the container claims against the size the decoder returned. If those disagree, the table says so.

The camera's notes ride along as EXIF — make, model, lens, shutter, aperture, ISO, the date, and on most phone photos the latitude and longitude. All of that is read here and none of it is sent anywhere. It is shown because you should know it is in there.

Your location is probably in that file

If the table above shows coordinates, then every copy of that photo you have ever sent to anybody carried the exact spot it was taken. Most people do not know this. It is the single most useful thing this page can tell you, and it is the reason the reading half runs even when the converting half cannot.

Converting to JPG here keeps the EXIF only if the browser's encoder keeps it, and in practice it does not: drawing the picture to a canvas and re-encoding it throws the metadata away. So the JPGs this page gives you have no location in them. That is a side effect rather than a feature, but it is a useful one, and it is stated here rather than claimed as a privacy tool.

Where to go next

Two more that read a file or a code rather than calculate something:

What this does not do

It does not convert to HEIC, only from it. It does not decode the picture on browsers whose operating system has no HEVC decoder — on those you still get everything the container says, and a plain sentence explaining why there is no image.

It does not upload anything, so it cannot work on a file that is not on the device you are using. If the photos are on your phone and you are at a desktop, this page has to be open on the phone.

It does not strip or edit metadata in place, it does not read a Live Photo's video half — that is a separate file the phone keeps alongside — and it does not recover anything from a damaged file. If the container will not parse, it says which box it failed on rather than guessing.