HEIC to PNG Converter

Convert Apple High Efficiency Image Container (HEIC / HEIF) photos into universally compatible, lossless PNG images with custom resolution scaling.

Choose a HEIC / HEIF photo or drag & drop here Supports iPhone and iPad .heic / .heif camera photos (Max 5MB)

How to Convert HEIC / HEIF to PNG Online

1

Upload HEIC Photo or Paste Base64

Drag and drop a .heic or .heif file into the drop zone, or paste a Base64 HEIC Data URI.

2

Configure Scaling & Dimensions

Select your desired resolution scale (1x, 2x Retina, 3x, 4x) or specify custom width and height overrides.

3

Convert & Download

Click Convert to PNG to convert your Apple HEIC photo into a universal PNG, then Download your image.

Tool Options

Apple HEIC & HEIF ISOBMFF Parsing

Decodes standard ISOBMFF container boxes (`ftyp`, `meta`, `ispe`) for full compatibility with iPhone camera photos.

Retina & Custom Scaling

Export at 1x, 2x, 3x, or 4x pixel density, or specify exact pixel width and height overrides.

Universal Windows & Web Compatibility

Opens iOS HEIC photos on Windows, Android, Linux, and all web platforms without needing external codecs.

Your Data Privacy

Web Tool
Privacy-First Architecture
Most of our web tools process your data entirely in-browser. Where server processing is technically required, payloads are evaluated statelessly in-memory and are never stored, saved, or logged.
REST API
Stateless In-Memory Processing
When you use our API endpoints, your requests are processed strictly in-memory without persistent database storage, disk logging, or data retention.
Want to learn more about how we safeguard your information and infrastructure?
Read our full Privacy Policy for detailed security standards, data retention principles, and compliance guarantees.

What does the HEIC to PNG Converter do?

The HEIC to PNG Converter transforms Apple High Efficiency Image Container (.heic) and High Efficiency Image Format (.heif) camera photos into universal, lossless Portable Network Graphics (PNG) images with custom resolution scaling and dimension overrides.

HEIC is the default photo format on modern iPhones and iPads (iOS 11+). While it provides high compression efficiency, HEIC photos cannot be viewed on older Windows PCs, Android devices, legacy browsers, or uploaded directly to many websites. Converting HEIC to PNG ensures 100% universal compatibility across all operating systems, web browsers, and graphic software.

Core Concepts

  • Apple HEIC & HEIF ISOBMFF Box Parsing: Inspects ftyp, meta, and ispe (Image Spatial Extents) container boxes to extract native pixel dimensions.
  • Universal Container Translation: Transforms next-generation Apple camera photos into standard PNG files compatible with all platforms.
  • Resolution Scaling (@2x / @3x / @4x): Upscales or downsamples high-megapixel mobile photography into high-density raster canvases.
  • Data URI & Code Snippet Generation: Generates copy-ready Base64 Data URIs, HTML tags, and CSS background rules.

How to use the tool?

  1. Upload HEIC Photo or Paste Base64: Drag and drop a .heic or .heif file into the dedicated drop zone, or paste a Base64 HEIC string into the editor.
  2. Select Resolution Scale: Choose 1x (Original Size), 2x (@2x Retina HD), 3x (@3x Ultra), or 4x (@4x Print Quality).
  3. Optional Dimension Overrides: Set custom pixel Width or Height overrides if resizing is needed.
  4. Convert to PNG: Click Convert to PNG to execute conversion.
  5. Download or Copy: Click Download to save your .png file or Copy the Base64 Data URI.

Related Developer Utilities

REST API Integration

blueutils.com provides a free REST API endpoint (POST https://blueutils.com/api/image/heic-to-png) for programmatic validation, ISOBMFF dimension parsing, and PNG Data URI formatting.

API Request Parameters

Name Type Description Example
rawText String Raw Base64 string or Data URI of the HEIC image. "data:image/heic;base64,AAAAIGZ0..."
options.scale Number Multiplier scale factor (1, 2, 3, 4). Default is 1. 2
options.width Number Optional target width in pixels. 1920
options.height Number Optional target height in pixels. 1080

API Request Payload Examples

cURL

curl -X POST https://blueutils.com/api/image/heic-to-png \
  -H "Content-Type: application/json" \
  -d '{
    "rawText": "data:image/heic;base64,AAAAIGZ0eXBoZWljAAAAAG1pZjFoZWljAAAAOG1ldGEAAAAAAAAAIWhkbHIAAAAAAAAAAHBpY3QAAAAAAAAAAAAAAAAAAAAAAADHaXBycAAAABNjb2xybmNseAAAAAEABAAHAAAAAmlzcGUAAAAAAAAAAQAAAAEAAAAAYXNzZQAAABhpcG1hAAAAAAAAAAEAAQQEAAAEAA==",
    "options": {
      "scale": 1
    }
  }'

Python

import requests

url = "https://blueutils.com/api/image/heic-to-png"
payload = {
    "rawText": "data:image/heic;base64,AAAAIGZ0eXBoZWljAAAAAG1pZjFoZWljAAAAOG1ldGEAAAAAAAAAIWhkbHIAAAAAAAAAAHBpY3QAAAAAAAAAAAAAAAAAAAAAAADHaXBycAAAABNjb2xybmNseAAAAAEABAAHAAAAAmlzcGUAAAAAAAAAAQAAAAEAAAAAYXNzZQAAABhpcG1hAAAAAAAAAAEAAQQEAAAEAA==",
    "options": {
        "scale": 1
    }
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.json())

Java

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class Main {
    public static void main(String[] args) throws Exception {
        String jsonPayload = """
        {
          "rawText": "data:image/heic;base64,AAAAIGZ0eXBoZWljAAAAAG1pZjFoZWljAAAAOG1ldGEAAAAAAAAAIWhkbHIAAAAAAAAAAHBpY3QAAAAAAAAAAAAAAAAAAAAAAADHaXBycAAAABNjb2xybmNseAAAAAEABAAHAAAAAmlzcGUAAAAAAAAAAQAAAAEAAAAAYXNzZQAAABhpcG1hAAAAAAAAAAEAAQQEAAAEAA==",
          "options": {
            "scale": 1
          }
        }
        """;

        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://blueutils.com/api/image/heic-to-png"))
            .header("Content-Type", "application/json")
            .POST(HttpRequest.BodyPublishers.ofString(jsonPayload))
            .build();

        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
        System.out.println(response.body());
    }
}

API Response Parameters

Name Type Description Example
isValid Boolean Indicates whether the HEIC was parsed successfully. true
mimeType String Target output MIME type (image/png). "image/png"
originalFormat String Detected input MIME type (image/heic). "image/heic"
dataUri String Base64 PNG Data URI string. "data:image/png;base64,..."
metadata.originalWidth Number Original width in pixels extracted from ispe box. 4032
metadata.originalHeight Number Original height in pixels extracted from ispe box. 3024
metadata.targetWidth Number Scaled target pixel width. 4032
metadata.targetHeight Number Scaled target pixel height. 3024
metadata.scale Number Scale factor applied. 1
metadata.majorBrand String Detected ISOBMFF major brand (heic, mif1). "heic"
snippets.html String Ready-to-use HTML <img> tag. "<img src=\"...\" />"
snippets.css String Ready-to-use CSS background-image declaration. "background-image: url(\"...\");"

API Response Payload Examples

Success Response (HTTP 200 OK)

{
  "isValid": true,
  "mimeType": "image/png",
  "originalFormat": "image/heic",
  "dataUri": "data:image/png;base64,AAAAIGZ0...",
  "base64": "AAAAIGZ0...",
  "metadata": {
    "originalWidth": 4032,
    "originalHeight": 3024,
    "targetWidth": 4032,
    "targetHeight": 3024,
    "scale": 1,
    "majorBrand": "heic",
    "aspectRatio": 1.3333,
    "originalSizeBytes": 1824000,
    "formattedSize": "1781.3 KB"
  },
  "snippets": {
    "html": "<img src=\"data:image/png;base64,...\" width=\"4032\" height=\"3024\" alt=\"Converted PNG Image\" />",
    "css": "background-image: url(\"data:image/png;base64,...\");",
    "markdown": "![Converted PNG Image](data:image/png;base64,...)"
  }
}

Validation Failure Response (HTTP 400 Bad Request)

{
  "isValid": false,
  "error": "Invalid format: Expected a valid HEIC/HEIF image (ftyp/heic container or data:image/heic)."
}

Rate Limit Exceeded Response (HTTP 429 Too Many Requests)

{
  "error": "API rate limit exceeded. Please wait or contact support@blueutils.com."
}

Why use an API to convert HEIC to PNG?

Automating HEIC conversion via API in build workflows and upload pipelines offers major benefits:

  • Universal User Upload Pipeline: Allow iOS users to upload iPhone camera HEIC photos without worrying about cross-platform rendering failures.
  • Optimized Token Efficiency for AI Agents: Extracts clean image dimensions and brand metadata before sending image data to multimodal vision agents.
  • Deterministic Pipeline Integration: Enables automated CI/CD release scripts to generate universal PNG fallbacks.

Native Usage

How to convert HEIC to PNG locally using command-line tools:

Windows (CMD / PowerShell)

# PowerShell: Convert HEIC to PNG using ImageMagick
magick "photo.heic" "photo.png"

Linux / Unix (Bash / Shell)

# Bash: Convert HEIC to PNG using libheif (heif-convert)
heif-convert photo.heic photo.png

# Or using ImageMagick:
magick photo.heic photo.png

Python

# Python using pillow-heif and Pillow
from PIL import Image
from pillow_heif import register_heif_opener

register_heif_opener()
image = Image.open('photo.heic')
image.save('photo.png', 'PNG')
print("Converted photo.heic to photo.png successfully")

Java

// Java using ImageIO (with TwelveMonkeys or JDeli HEIC plugin)
import java.io.File;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;

public class HeicToPng {
    public static void main(String[] args) throws Exception {
        BufferedImage inputImage = ImageIO.read(new File("photo.heic"));
        ImageIO.write(inputImage, "png", new File("photo.png"));
        System.out.println("Converted photo.heic to photo.png successfully");
    }
}

Frequently Asked Questions (FAQ)

How do I convert an iPhone HEIC photo to PNG online?

Upload your .heic or .heif file into the drop zone or paste a Base64 string, select your resolution scale factor, and click Convert to PNG.

Why should I convert HEIC photos to PNG?

HEIC is not natively supported on older Windows systems, Android devices, or many web forms. PNG provides universal compatibility and lossless quality.

Does converting HEIC to PNG preserve image resolution?

Yes. The converter maintains original camera dimensions (e.g., 4032x3024) and allows upscaling or custom dimension overrides.

Rate Limits

UI Limits
100 uses per 15 minutes
Max payload size: 5 MB
API Limits
5 requests per 60 minutes
Max payload size: 256 KB
Need higher API rate limits, increased payload sizes, or custom developer solutions?
Contact our engineering team at support@blueutils.com for custom rate limit increases, higher quota allocations, or tailored enterprise integrations.