Convert HEIC to PNG
Turn iPhone .heic photos into lossless PNG files any app can open and edit — decoded on your own device, never uploaded. Plan on much bigger files.
Your images
Settings
Generated images
- Nothing uploaded
- Free, no sign-up
- Strips EXIF
- Batch files
The print shop's upload box says PNG only. The designer asked for PNG. The app store listing, the CMS media library, the government portal — same answer. Meanwhile the photo came off an iPhone as .heic, a file Windows Explorer shows as a blank thumbnail and most upload forms reject before they even try to open it. This page turns that .heic into a PNG on your own device, so the photo itself never has to leave it.
PNG is lossless: it stores every pixel exactly, has no quality setting, adds zero loss no matter how many times you open and resave it, and every operating system has read it natively for more than twenty years. The price is size. A 12 MP iPhone shot that was 2 MB as HEIC comes out around 15–25 MB as PNG, because a photograph's grain and gradients give PNG's pattern-matching compressor nothing to grab onto.
That trade pays off exactly where lossless matters: the shot is about to go through several rounds of editing, you're going to cut its background out, or the destination will accept nothing but .png. The rest of this page covers what the decoder does to the pixels on the way, how to predict the file size before you press Generate, and what to do when a PNG-only uploader also has a megabyte cap.
How it works
PNG is already selected and the quality slider is switched off — there is nothing to tune. The real decision comes after the cards show you the sizes.
Drop in the .heic files
Drop the .heic files onto the page or pick them with the file button; .heif is treated the same, and there's no count limit. On the very first one a toast reads "Loading HEIC support…" for a second or two: that's the decoder, roughly 1 MB, coming down once and staying cached. Nothing travels the other way.
Leave PNG selected
The quality slider is switched off and shows lossless in place of a number, and the hint beneath it warns that photos may get larger; there's nothing to set. Dimensions can't be changed on this page either — whatever the iPhone captured, 4,032 × 3,024 for a 12 MP shot, is what the PNG will be.
Generate, read the sizes, download
Press Generate images. Every card lists original size → PNG size, the dimensions and an EXIF stripped tag; a jump from 2.1 MB to 18 MB is the normal outcome, not a fault. Names are kept with the extension swapped to .png. Grab cards individually, or hit Download all for the whole run in one .zip.
Why the PNG is roughly ten times the size of the HEIC
The ceiling is easy to predict: width × height × 3 bytes, one each for red, green and blue — 36 MB for a 12 MP frame. PNG's DEFLATE compression gets under it by finding repeated byte patterns, and a photo full of grain, gradients and texture offers very few, so the file usually settles at 40–70% of that raw figure. HEIC does the opposite job, discarding detail your eye can't resolve to pack the same frame into about 2 MB.
Typical figures; if the destination would take a JPG, HEIC to JPG lands the 12 MP shot at 2.5–5 MB instead:
| iPhone photo | Raw pixels | HEIC as shot | PNG from this page |
|---|---|---|---|
| 12 MP · 4032 × 3024 | 36 MB | 1.5–3 MB | 15–25 MB |
| 48 MP · 8064 × 6048 | 146 MB | 5–8 MB | 60–100 MB |
Does the PNG lose quality? One step can, and it isn't the PNG
Only Safari can display a .heic by itself, so the page doesn't lean on the browser: every HEIC goes through the same decoder library, fetched on the first file and cached from then on. What that decoder returns isn't raw pixels but a JPEG encoded at quality 95. The page paints that JPEG onto a canvas and reads the PNG back off the canvas.
That quality-95 pass is the only point where the picture can change, and at normal viewing size it doesn't visibly. It also sets the ceiling: the PNG is exactly as good as that intermediate, never better. What PNG buys is that nothing moves afterward — open it in five editors over a month and the pixels stay put.
Two smaller shifts ride along. iPhones capture in Display P3, a wider gamut than the sRGB the canvas works in, so the most intense reds and greens get pulled inside sRGB's boundary; on an ordinary monitor you won't notice. And the PNG comes out without the EXIF block the iPhone wrote, so the where-and-when of the shot stays in the original — the card labels it EXIF stripped.
When the PNG-only uploader also has a size cap
Plenty of forms that insist on .png also stop at 10 or 20 MB, and a 12 MP conversion lands right on that line. With no quality slider, pixel count is the only lever, and it's a strong one, since PNG size tracks pixels almost linearly. This page can't shrink, but Resize image takes the same .heic, adds a max-width box and offers PNG in its format bar, so the downscale and the conversion happen in one pass and the result is still lossless at its new size. What to expect from a 12 MP shot:
| Max width | Pixels kept (12 MP shot) | PNG, typical |
|---|---|---|
| 4,032 px (as shot) | 100% | 15–25 MB |
| 2,000 px | 25% | 4–6 MB |
| 1,200 px | 9% | 1.3–2.3 MB |
Batches, 48 MP shots and what Compare can't show
No ceiling on file count; memory is the limit, and PNG leans on it harder than any other output — a 48 MP frame occupies 146 MB of raw pixels in the canvas while it's encoded. Sides up to 10,000 px convert at full resolution, so a 48 MP shot's 8,064-px long edge passes untouched; budget a few seconds per photo, and on a phone run those in small groups.
Compare misleads here: the browser can't paint a raw .heic, so the Before half of the slider shows the PNG too and both sides match. Trust the size figures on the card instead.
Frequently asked questions
The PNG looks dimmer than the photo did on my iPhone. Did the conversion break something?
No. Recent iPhones tuck a gain map into the HEIC that lets the phone's own screen push highlights into HDR. PNG has no slot for that layer, so you get the flat, non-HDR rendering — the version any ordinary monitor would show anyway. The pixels are intact; only the extra headroom is gone.
I exported a HEIC with a transparent background from an iPad drawing app. Does the PNG keep it?
No — the decoder on this page produces a JPEG as its intermediate, and JPEG has nowhere to store transparency, so that area comes back solid before the PNG stage ever sees it. A camera HEIC never had any to lose. For a transparent PNG, export .png straight from the app, or run an opaque photo through Remove background afterward.
Can I just rename IMG_1234.heic to IMG_1234.png?
No. Renaming changes the label, not the bytes: the file still begins with an HEVC container, so any app that reads by content shows a broken image, while an uploader that checks only the extension accepts it and then fails when it tries to display it. Converting rewrites the pixels into an actual PNG stream.
Is the PNG 8-bit or 16-bit?
8 bits per channel: RGB plus an alpha byte that's fully opaque, because that's the depth the canvas draws in, and there's no 16-bit option. A 16-bit PNG would double the size again for detail the quality-95 intermediate doesn't contain in the first place.
Will the PNG open on Windows 10 or 11 without the HEIF extension?
Yes. Explorer thumbnails, the Photos app, Paint and every browser read PNG natively, as do macOS, Linux, Android and iOS. The codec-extension problem only applies to the .heic you started with.
I converted a Portrait mode shot. Can I still change the blur in the PNG?
No. The depth map Photos uses to move the blur around lives only inside the HEIC; the PNG holds the rendered picture with the blur fixed exactly as it was when the file left the phone. Set the depth and f-stop in Photos first, then hand that version to this page.
Does this page need an internet connection, and is my photo uploaded to decode it?
The first HEIC needs a connection because a decoder of about 1 MB is downloaded; it's cached after that, and if it can't load you get a clear message rather than a broken file. The photo is never sent anywhere: decoding, drawing and PNG encoding all happen in your browser's memory.