FreeToolio

HEIC to PNG

Turn an iPhone HEIC photo into a real PNG in this tab — full pixel dimensions, 8-bit RGBA, written by your own browser. Nothing is uploaded and there is no quality dial to set, because a PNG does not throw pixels away.

Drop a HEIC photo here

or choose a file · .heic or .heif · one photo at a time

HEIC & HEIF stills · PNG, 8-bit RGBA · no resize · no upload · no account · no watermark

HEIC to PNG: The Pixels Arrive, the Container Doesn't

A HEIC photo converts to PNG in one step: the browser decodes the HEVC frame, writes the decoded pixels onto a canvas at their own width and height, and encodes that canvas as a PNG. Nothing is resized, nothing is re-compressed, and the file never leaves the tab.

Two numbers from one real iPhone 8 photo, 4,032 × 3,024: 1.43 MB as HEIC, 17.35 MB as PNG. Same 12,192,768 pixels, 12.1 times the bytes. That is the whole trade — a PNG keeps every pixel and throws away the compression that made the phone file small. The other direction is possible too: a 1,600 × 1,000 interface mock came out of the same tool at 38.0 KB, smaller than the 44.9 KB HEIC it started as. Which one you get depends on what the picture is, not on the format.

One 1.43 MB HEIC photo of 12,192,768 pixels, encoded three ways and measured in bytes per pixel: the HEIC costs 0.123 bytes per pixel, a JPG at quality 92 costs 0.214 and reaches 2.49 MB, and the PNG costs 1.492 and reaches 17.35 MB. Bar length is bytes per pixel.
One 1.43 MB HEIC photo, 4,032 × 3,024. The pixel count is identical in all three files; only the price per pixel moves — 0.123 bytes in the HEIC, 0.214 in a quality-92 JPG, 1.492 in the PNG, which is where the 12-fold jump in file size comes from.

How to convert a HEIC to PNG here

  1. Add the photo. Drop a .heic or .heif file on the box above, or click to choose one. One at a time, up to 100 MB.
  2. Read the card. It reports the pixel dimensions the decoder produced and the exact byte size of the PNG, against the size of the HEIC you fed in.
  3. Download. The link saves <name>.png at the source's own dimensions.

There is no quality dial, because a PNG has nothing to trade away: the canvas writes 8-bit RGBA and every pixel is stored. There is no resize control either — the job here is the format, and the dimensions you get are the dimensions the decoder found.

One photo, three files

The same 4,032 × 3,024 photo, encoded three ways. The middle row is the other route on this site, /heic-to-jpg, at its highest quality.

File Bytes Bytes per pixel Against the HEIC
HEIC, from the phone 1,499,892 0.123 —
JPG, quality 92 2,606,828 0.214 1.7×
PNG, this tool 18,190,080 1.492 12.1×

The arithmetic behind the jump is simple. 12,192,768 pixels × 4 bytes is 48.8 MB of raw RGBA; the PNG compressor brought that down to 17.35 MB, or 1.49 bytes per pixel. HEVC, the codec inside a HEIC, got the same frame into 0.123 bytes per pixel — twelve times less. PNG predicts each row from the row above and then runs the result through deflate, which is very good at repeated bytes. A photograph is mostly gradual change and fine grain, so there is little to repeat, and the filters hand deflate a stream that is already close to noise. HEVC spends its effort modelling 8 × 8 blocks of a video frame, which is a much stronger model of a photograph than row prediction.

The clock grows with the file. That conversion, in a headless Chrome without GPU support, took 17.07 seconds from dropping the file to a finished download — a small PNG takes one to five.

Almost none of the output is container. The 18,190,080 bytes sit in 4,429 IDAT chunks holding 18,136,887 of them; the signature, the header and the end marker, plus the 12-byte count-and-checksum frame around every chunk, are 53,193 bytes — 0.29% of the file. There is no saving to find by changing how the PNG is wrapped: the 17 MB is the picture.

Four flat files that went the other way

Photographs are the expensive case. Flat artwork is the cheap one, because a run of identical pixels is exactly what deflate was built for.

What went in Pixels HEIC PNG Bytes per pixel, HEIC → PNG
Interface mock, flat panels 1,600,000 45,941 38,954 0.029 → 0.024
Logo, round badge on white 409,600 32,135 19,304 0.078 → 0.047
Two-colour card with a circle 540,000 28,490 20,384 0.053 → 0.038
Flat colour bar, 400 × 200 80,000 1,197 2,451 0.015 → 0.031

Three of the four came out smaller as PNG. The fourth is the exception that proves the rule: a 400 × 200 file of two flat colours is small enough that PNG's fixed overhead — chunk headers, the zlib stream setup — outweighs what it saves, and PNG doubled it.

So the honest summary is not "PNG is ten times bigger". It is "PNG costs what the picture costs". A photo of foliage or gravel pays 1.5 bytes per pixel; a screenshot of a settings dialog pays 0.024. The card under each file tells you which one you are holding before you download.

What the PNG cannot carry

A PNG is a pixel grid with a few optional chunks. A HEIC is a container: an HEVC image plus an EXIF block plus a colour profile plus, sometimes, auxiliary images. The conversion keeps the first and drops the rest, because the canvas that does the work holds pixels and nothing else.

The colour profile is the one worth understanding. This iPhone file carries a 548-byte Display P3 profile — the wide-gamut space iPhones shoot in. The PNG that came out has three chunk types and no more: IHDR, IDAT (in 4,096-byte pieces), IEND. No iCCP, no sRGB, no gAMA, no cHRM. The pixel values are written, but nothing in the file says which colour space they belong to, so a colour-managed application falls back to sRGB and the picture is interpreted with the wrong primaries.

How much that matters depends on the file and on the decoder. Two independent HEIC decoders that read this same photo disagreed by up to 14 levels on the same pixel — 27,27,27 in one, 13,13,13 in the other — because they handle the HEVC signal's limited range differently. The browser decoder's numbers are what this tool writes; it does not relabel them. If colour accuracy is the point of the export, open the PNG in a colour-managed application, assign the source profile, and convert there, or use a converter that embeds the profile.

Alpha: the channel exists, the pixels don't

Every PNG this tool writes is colour type 6 — truecolour with an alpha channel, 8 bits per channel. Whether that channel carries anything is a different question, and the answer for every file tested is no.

  • The iPhone photo: 0 of 12,192,768 pixels are not fully opaque.
  • A card built with genuinely transparent corners, checked as RGBA by two desktop decoders before conversion: 0 of 540,000 pixels, minimum alpha 255.

The decoder reads the HEIC's primary image and does not apply a separate alpha plane. So a HEIC cut-out converted here comes back opaque, its transparent corners painted black. If you need transparency, this is the wrong pipeline: make the cut-out as a PNG in the first place, or mask it after conversion. The page says so here rather than letting the result card imply otherwise.

Why the file never leaves the tab

The decoder is a 1.3 MB program file the page downloads once; after that, reading the HEIC, drawing the canvas and writing the PNG all happen in the tab. Load the page, convert one file, then open the browser's Network panel and convert another: no request carries an image. With the network switched off, the interface mock still came out at 38,954 bytes, identical to the online run.

The same file converted twice gives the same file twice: every PNG in these tables was produced a second time, and all five matched byte for byte, down to the SHA-256. Nothing in the output depends on the clock or on a server.

PNG or JPG for this photo?

For the iPhone photo, the JPG at quality 92 is 2,606,828 bytes and the PNG is 18,190,080: the PNG is 6.98 times larger for pixels that differ only where the JPEG quantiser decided they could. Choose according to what happens next.

  • PNG when the file enters an editor and will be saved again, composited over something, or measured pixel by pixel. A JPEG saved twice loses a little each time; a PNG saved twice does not.
  • JPG when the file will be sent, uploaded to a form with a size limit, or simply viewed. The other tool on this site, HEIC to JPG, exists for that job and reports the same kind of before-and-after. Dropping a 17 MB PNG into an email is the mistake this paragraph is trying to prevent.
  • Neither when the file is 3,000 pixels wide and will be shown at 600: resize first, then convert, and the PNG comes out with a quarter of the pixels and a fraction of the bytes.

Quick answers

Does the PNG keep the full resolution? Yes. The decoder's own width and height are used, so 4,032 × 3,024 stays 4,032 × 3,024. There is no resampling step, and the card prints the dimensions it wrote.

Why is the PNG so much bigger than the HEIC? A HEIC stores a compressed video frame; a PNG stores every pixel. On the photo above that is 0.123 against 1.492 bytes per pixel. On flat artwork the PNG can be the smaller file.

Is the PNG lossless, and can I edit and re-save it? Yes. The PNG encoder drops nothing, and re-saving a PNG in an editor keeps the pixels. The conversion is lossless from the moment the HEIC was decoded; whatever the decoder discarded is already gone.

Does the PNG keep the date and the location? No. The source carried 11 EXIF entries, including the camera model, the software version, the capture time and a GPS block; the PNG has no EXIF and no text chunks. Good news if you are sending the file to someone, bad news if the photo was also your record.

Will the colour look the same in Photoshop or Figma? Close, but the profile is missing, so the numbers are read as sRGB. If the file is a colour reference, assign the Display P3 profile after opening it, or convert in a colour-managed tool.

Can this make the background transparent? No. A photo has no transparency to keep, and the decoder does not read an alpha plane when one exists. Removing a background is a segmentation job, not a format conversion.

Can I convert several HEIC files at once? Not on this page: one photo per run, because a 12-megapixel PNG is tens of megabytes and one named download is easier to keep track of than a queue. A batch tool for photos lives at Image Compressor.

Why does one photo take 17 seconds? The slow part is not reading the HEIC but writing 17 MB of PNG: the browser compresses 12.2 million pixels of four channels and hands back a file. Small files finished in one to five seconds, and a machine with GPU support does better than the headless test above.