Skip to main content
PulsarKit

HEIC to PNG

Convert iPhone HEIC photos to lossless PNG when the next step is editing, such as background removal, layering or print, rather than sharing.

Drop your files here

.heic, .heif, .hif · up to 100 MB

How to Convert to PNG

  1. 1

    Drop your HEIC photos

    Up to 30 at a time. The limit is lower than the JPG converter's on purpose: a PNG of a 12-megapixel photo is 15 to 30 MB, and a bigger queue runs a browser tab out of memory.

  2. 2

    Choose an optimisation level

    Level 2 is the default and a good balance. Level 6 finds a smaller lossless encoding of the exact same pixels but takes several times longer on a full-resolution photo.

  3. 3

    Download the PNGs

    One photo comes back as a single .png, several as pulsarkit-heic-to-png.zip. Nothing about the image is lost along the way; only the file size changes.

When PNG is the right choice for a phone photo, and when it is not

PNG is lossless: the pixels that come out of the decoder are the pixels that end up in the file, byte for byte. That matters when the photo is an input to something else: cutting out a background, compositing layers, feeding a print workflow, or any process that would compound JPEG artefacts with every save. It matters much less when the photo is going straight to a website or a message, where a JPG at quality 90 looks the same and weighs a tenth as much. If you are about to email the result, convert to JPG instead; the switch is one step away in the pipeline below.

Orientation, transparency and bit depth

Rotation in a HEIC file can live in the container as an irot property or in the EXIF Orientation tag, and applying the wrong one leaves the photo sideways, which is the single most common defect in HEIC converters. Here both are read, whichever has not already been applied is baked into the pixels, and because PNG has no orientation tag of its own, that step is not optional. Transparency, if the container carries an alpha channel, is preserved; JPG cannot hold it at all. The bit depth switch writes a genuine 16-bit PNG for workflows that require one, though it is worth knowing that the HEIC decoder available in browsers hands over eight bits per channel, so a 16-bit file here is a faithful promotion of those values rather than extra precision recovered from the source.

What the optimisation level actually does

It does not change a single pixel. PNG compression works by predicting each pixel from its neighbours and then packing the differences, and there are many valid ways to make those choices. A higher level spends more processor time searching for the combination that packs smallest. Level 0 skips the search entirely and is fastest; level 2 is the sensible default; level 6 typically finds another few percent at several times the cost. Whichever you pick, decoding the result gives back exactly the same image. That equivalence is checked by a test that compares every pixel of a level 6 file against a level 2 one.

The decoder, and the licence it comes with

The HEIC half of this page is libheif 1.19.8, the reference open-source decoder, under the LGPL-3.0. That licence asks for two things: the component must stay separately replaceable rather than be fused into the rest of the code, and its source must be available. The WebAssembly module is therefore fetched as its own file from /libheif/ and never bundled, the licence text is at /libheif/LICENSE, and the unmodified sources of this exact version are at https://github.com/catdad-experiments/libheif-js/tree/v1.19.8 and https://github.com/strukturag/libheif. It is the same module HEIC to JPG uses, so if you arrive here from that tool it is already cached and there is nothing more to download.

Your photos never leave your device

The HEIC decoder and the PNG encoder are WebAssembly modules that run inside your browser tab. Photo bytes are read from your disk into memory, converted there, and handed straight back to you as a download. Nothing is uploaded, nothing is queued on a server, and closing the tab clears it all.

Frequently asked questions

When is PNG better than JPG for an iPhone photo?

When the photo is going to be edited further. PNG is lossless, so removing a background, adjusting layers or re-saving repeatedly does not add compression artefacts. For sharing or uploading, JPG is the better choice: same appearance, a fraction of the size.

Why is the PNG so much bigger than the HEIC?

Because HEIC is a lossy format that throws away detail your eye barely notices, and PNG is not allowed to throw away anything. A 2 MB HEIC photo routinely becomes a 20 MB PNG. That is the price of losslessness, not a fault in the conversion.

Is transparency preserved?

Yes, when the HEIC file actually carries an alpha channel. Most camera photos do not, but images exported from design tools sometimes do. If there is transparency it survives into the PNG; if you would rather flatten it, turn the transparency switch off.

What is a 16-bit PNG for?

Some print and colour-grading workflows insist on 16 bits per channel. This tool can write one, and the file is a genuine 16-bit PNG. Be aware that the browser HEIC decoder outputs 8 bits per channel, so the extra bits carry a precise promotion of those values rather than new detail, and the file is about twice as large.

Is the capture date and GPS location preserved?

Yes. The EXIF block is repacked into the PNG's eXIf chunk, so the date, camera and settings travel with the file. Turn the switch off if you would rather the result carried nothing at all.

Why is my .heic file sometimes actually an AVIF?

Some tools save AV1-compressed data in a HEIF container while keeping the .heic extension. The format here is read from the file's own first bytes, so those are recognised and decoded as AVIF automatically instead of failing.

How many photos can I convert at once?

Up to 30 files, 100 MB each and 500 MB combined. The limit is deliberately lower than the JPG converter's because PNG output is far heavier. Files are processed one at a time and a failure skips only that file.

Do my photos get uploaded to a server?

No. Everything happens inside your browser tab using WebAssembly codecs. There is no upload, no server-side copy and nothing left behind once you close the page.

Guides

Related tools