Correctly Converting HEIC to PNG
iPhones by default store photos in the High Efficiency Image File format (HEIF), a lossy format that often uses the .heic extension[1]. While this file format works well enough within the Apple ecosystem, there is very poor support for it outside of the walled garden.
Windows requires the HEVC Video Extension, which costs $0.99[2]. Android added support in 2019 with Android 10[3]. Linux distributions support HEIC if you install libheif[4]. Chromium and Firefox do not support HEIC, only Safari does[5], which reflects in popular web apps like Google Docs and Google Slides also not supporting it.
Because of this, I have a habit of converting HEIC files to PNGs before exporting them from my laptop. This process isn't obvious, however, and many solutions mentioned online suggest using an online service or downloading a sketchy program. In this article I will go over 3 different methods for converting HEIC to PNG using built-in tools in MacOS and iOS. No extra software, no online services, just the vanilla programs shipped by Apple.
Do not upload your photos to online image converters. As a matter of privacy, you have no idea how long those images are stored and what the website operators may be doing with them. It is easier, faster, and more secure to do the conversion locally on your computer.
Export from Photos (MacOS)
If your photos are stored in iCloud or accessible through the Photos app on MacOS, it's really easy to convert them to PNG. Select the image in Photos and export the HEIC using File → Export → Export 1 Photo.

Make sure to set "Photo Kind" to "PNG," "Color Profile" to "Most Compatible," and "Size" to "Full Size" in the export dialogue.

Once exported, you're good to go!

Convert with Preview (MacOS)
Preview is also able to convert HEIC to PNG, however you need to use ColorSync Utility for the image to turn out correct. First, open the HEIC file in Preview. Then, select File → Duplicate to create a copy.

When you go to save the duplicate, make sure to set "Format" to "PNG". This will tell Preview to convert the image to PNG instead of leaving it as a HEIC.

At this point, it may look like you're done, but don't be fooled! While Preview (and Safari) will show the image as normal...

...if you open the same image in Firefox or Chromium it will look washed out and gray! Preview created a PNG that only looks correct on certain platforms!
While I am not positive, I believe this happens because the image has high dynamic range (HDR). If you inspect the color profile of the original image, you will see Display P3 Primaries; PQ (Adaptive Gain Curve 0974DE20B8237D0E). This image uses the Display P3 color space, which is normal for Apple devices, but the PQ part tells me the image is HDR. PQ stands for perceptual quantizer, and is used when calculating the brightness of HDR images.
The reason I believe this image looks bad on Firefox and Chromium is because PNG only recently added support for HDR in June 2025 as part of the PNG 3.0 specification. If I had to guess, MacOS and Safari have native support for HDR PNGs, but Firefox and Chromium do not yet.
Either way, we need to fix this so the PNG looks correct on all platforms. We're going to convert the HDR image to SDR using MacOS's ColorSync Utility. ColorSync Utility is a strange, oft-ignored application for managing color profiles and converting between color spaces. To begin, first open ColorSync Utility, then select File → Open and select the PNG file.

In the new window, select "Match to Profile" and select the "sRGB IEC61966-2.1" color profile[6]. Click "Apply," then save the file.

Now, if you open the corrected image in a browser, it will look much much closer to the original.

Export from Photos (iOS)
The Photos app on iOS is similar to MacOS, except it doesn't give as much control. When you go to export the image, click the "Options" button at the top of the window.

In the options sheet, make sure to select "Most Compatible" for the format.

The iOS version does not give you control over the file format, and from my experience it exports JPEGs rather than PNGs. Even still, the resulting image appears correct and does not experience the washed-out behavior from Preview.

If you enjoyed this post, you may be interested Howard Oakley's writing at The Eclectic Light Company. His blog is a treasure-trove of information on the behind-the-scenes of Macs and MacOS, and has proved invaluable to me time and time again!
-
There's actually a bit more nuance to this. HEIF is an image container format where the image itself can be encoded in a number of formats. When the image is encoded with HEVC (x265), it is referred to as a HEIC file. HEIF can be either lossy or lossless, depending on the inner format used. HEVC is usually lossy, but has optional support for lossless encoding. As such, when HEIF uses HEVC, it is called HEIC and is usually lossy. ↩
-
I wasn't able to verify this myself, as I don't use Windows, so this may be outdated. ↩
-
libheif has been experiencing an uptick in security vulnerability reports recently, similar to curl. In the past 2 weeks they published 5 CVEs with a severity of either high or critical, with an additional 10 moderate CVEs. This doesn't mean libheif has poor code quality compared to other projects, rather that it is a much larger target for security researchers who have powerful new tools. ↩
-
sRGB is an SDR color space that is the standard for the web. You can generally assume any device in the last 15 years supports it, which is why I chose it here. ↩