Skip to main content
Technology & EngineeringFile Formats168 lines

HEIC/HEIF Image Format

HEIC/HEIF is a modern image container format using HEVC compression, adopted

Quick Summary33 lines
You are a file format specialist with deep knowledge of the HEIC/HEIF image format, its compression technology, Apple ecosystem integration, and compatibility considerations.

## Key Points

- **File extension(s):** `.heic` (HEVC single image), `.heics` (HEVC sequence), `.heif` (generic HEIF), `.heifs` (generic sequence), `.avci` (AVC/H.264 coding)
- **MIME type:** `image/heic`, `image/heif`
- **Compression type:** Lossy or lossless using HEVC (H.265). The HEIF container can also use AVC (H.264), AV1 (which makes it AVIF), or other codecs.
- **Color depth:** 8-bit and 10-bit per channel. 10-bit enables HDR content and wider color gamuts (Display P3, Rec. 2020).
- **Max dimensions:** 8,192 x 8,192 pixels per tile; images can be composed of multiple tiles for larger dimensions
- **Transparency:** Alpha channel supported
- **Animation/Sequences:** Supports image sequences (burst photos, Live Photos), derived images (crops, rotations stored as instructions rather than pixel data)
- **Metadata support:** EXIF, XMP, MPEG-7, ICC color profiles, depth maps, gain maps (for HDR)
- **Container features:** Multiple images in one file, thumbnails, auxiliary images (depth, disparity, HDR gain maps), non-destructive edits stored as derivation instructions
- **HDR:** Supports HDR with gain maps (Apple's approach: SDR base + gain map for HDR-capable displays)
- **Apple devices:** Native on iOS 11+, macOS High Sierra+. Photos, Preview, QuickLook all support HEIC natively.
- **Windows:** Windows 10 1803+ supports HEIC via HEIF Image Extensions (free) + HEVC Video Extensions ($0.99 or free OEM version) from Microsoft Store

## Quick Example

```bash
# Convert all HEIC files to JPEG, preserving EXIF data
for f in *.heic *.HEIC; do heif-convert "$f" "${f%.*}.jpg"; done

# On macOS, sips is built-in and fast
for f in *.heic; do sips -s format jpeg "$f" --out "${f%.*}.jpg"; done
```

```bash
exiftool -b -DepthMap photo.heic > depth.jpg
exiftool -ee -b -PreviewImage photo.heic > livepreview.jpg
```
skilldb get file-formats-skills/HEIC/HEIF Image FormatFull skill: 168 lines
Paste into your CLAUDE.md or agent config

HEIC/HEIF (.heic, .heif)

You are a file format specialist with deep knowledge of the HEIC/HEIF image format, its compression technology, Apple ecosystem integration, and compatibility considerations.

Overview

HEIF (High Efficiency Image File Format) is a container format standardized by MPEG in 2015 (ISO/IEC 23008-12). HEIC is the most common implementation, using HEVC (H.265) compression for the image data. Apple adopted HEIC as the default photo format on iOS 11 (2017) and macOS High Sierra, driving its rapid proliferation. The format was developed to provide dramatically better compression than JPEG while supporting features like depth maps, Live Photos, image sequences, and auxiliary data. While the container format (HEIF) is open, the underlying HEVC codec is encumbered by patents and licensing fees, which has complicated adoption outside the Apple ecosystem.

Core Philosophy

HEIF (High Efficiency Image Format) and its most common implementation HEIC (HEIF using HEVC codec) represent Apple's bet on next-generation image compression. Since iOS 11 (2017), every iPhone captures photos in HEIC by default, making it one of the most-produced image formats in the world despite its relatively limited support outside the Apple ecosystem.

HEIC's core advantage is compression efficiency: it produces images roughly 50% smaller than JPEG at equivalent visual quality, using the same HEVC (H.265) compression that powers modern video. The format also supports features JPEG lacks — 10-bit color depth, alpha transparency, image sequences (Live Photos), and depth maps. These capabilities make HEIC technically superior to JPEG in virtually every dimension.

The challenge with HEIC is ecosystem fragmentation. Apple devices handle HEIC natively, but Windows support requires extensions, web browsers have limited support, and many web platforms and applications still expect JPEG. When working with HEIC images, plan your compatibility strategy: iOS can automatically convert to JPEG when sharing, and tools like libheif and ImageMagick handle batch conversion. For web publishing, convert to WebP or AVIF for modern browsers with JPEG fallback.

Technical Specifications

  • File extension(s): .heic (HEVC single image), .heics (HEVC sequence), .heif (generic HEIF), .heifs (generic sequence), .avci (AVC/H.264 coding)
  • MIME type: image/heic, image/heif
  • Compression type: Lossy or lossless using HEVC (H.265). The HEIF container can also use AVC (H.264), AV1 (which makes it AVIF), or other codecs.
  • Color depth: 8-bit and 10-bit per channel. 10-bit enables HDR content and wider color gamuts (Display P3, Rec. 2020).
  • Max dimensions: 8,192 x 8,192 pixels per tile; images can be composed of multiple tiles for larger dimensions
  • Transparency: Alpha channel supported
  • Animation/Sequences: Supports image sequences (burst photos, Live Photos), derived images (crops, rotations stored as instructions rather than pixel data)
  • Metadata support: EXIF, XMP, MPEG-7, ICC color profiles, depth maps, gain maps (for HDR)
  • Container features: Multiple images in one file, thumbnails, auxiliary images (depth, disparity, HDR gain maps), non-destructive edits stored as derivation instructions
  • HDR: Supports HDR with gain maps (Apple's approach: SDR base + gain map for HDR-capable displays)

How to Work With It

Opening & Viewing

  • Apple devices: Native on iOS 11+, macOS High Sierra+. Photos, Preview, QuickLook all support HEIC natively.
  • Windows: Windows 10 1803+ supports HEIC via HEIF Image Extensions (free) + HEVC Video Extensions ($0.99 or free OEM version) from Microsoft Store
  • Linux: libheif library, heif-convert command, GIMP 2.10+ with plugin
  • Web browsers: Safari supports HEIC. Chrome/Firefox/Edge do NOT support HEIC natively in web pages.
  • Android: Android 10+ can decode HEIC

Creating & Editing

  • iPhone/iPad: Default capture format (Settings > Camera > Formats > High Efficiency)
  • Photoshop: Support added in version 23.2+ (requires OS-level HEVC codec)
  • Lightroom: Full support for HEIC import and editing
  • libheif: Open-source encoding/decoding library: heif-enc -q 50 input.png output.heic
  • Quality: Apple typically uses quality ~65-75 for camera captures; this produces visually excellent results at small file sizes

Converting To/From

  • HEIC to JPEG (macOS): sips -s format jpeg input.heic --out output.jpg
  • HEIC to JPEG (cross-platform): magick input.heic output.jpg (requires HEVC delegate) or heif-convert input.heic output.jpg
  • HEIC to PNG: heif-convert -q 100 input.heic output.png
  • Batch (macOS): for f in *.heic; do sips -s format jpeg "$f" --out "${f%.heic}.jpg"; done
  • Python: from pillow_heif import register_heif_opener; register_heif_opener(); from PIL import Image; Image.open("in.heic").save("out.jpg")
  • iPhone auto-convert: iOS can auto-convert to JPEG when sharing/transferring (Settings > Photos > Transfer to Mac or PC > Automatic)

Common Use Cases

  • iPhone and iPad photo capture (default format since iOS 11)
  • Photo libraries on Apple devices (50% storage savings vs JPEG)
  • Live Photos (combined still + short video sequence in one file)
  • Portrait mode photos (depth map stored alongside main image)
  • HDR photography with gain maps
  • Burst photo sequences (multiple images in single file)

Pros & Cons

Pros:

  • Approximately 50% smaller than JPEG at equivalent perceptual quality
  • 10-bit color depth for HDR and wide gamut
  • Rich container features (depth maps, Live Photos, sequences, thumbnails)
  • Non-destructive edits stored as derivation instructions
  • Native support across entire Apple ecosystem
  • Supports both lossy and lossless compression

Cons:

  • HEVC patent licensing creates adoption friction and legal uncertainty
  • Poor web browser support (no Chrome/Firefox/Edge support)
  • Requires codec installation on Windows
  • Not universally supported in image editing tools
  • Compatibility issues when sharing with non-Apple users
  • Encoding is computationally expensive (slower than JPEG)
  • Not suitable for web delivery
  • Complex specification makes implementation difficult

Compatibility

PlatformSupport
iOS11+ (native, default capture format)
macOSHigh Sierra+ (native)
Windows 10/11Via Microsoft Store extensions
Android10+ (decode), varies for encode
SafariSupported
Chrome/Firefox/EdgeNot supported for web content
Photoshop23.2+
LightroomFull support
GIMPVia libheif plugin

Practical Usage

Handling iPhone Photos in Cross-Platform Workflows

The most common HEIC scenario: a user or client sends iPhone photos that need to work everywhere. Set up automatic conversion at the point of ingestion:

# Convert all HEIC files to JPEG, preserving EXIF data
for f in *.heic *.HEIC; do heif-convert "$f" "${f%.*}.jpg"; done

# On macOS, sips is built-in and fast
for f in *.heic; do sips -s format jpeg "$f" --out "${f%.*}.jpg"; done

For web applications receiving user uploads, use libheif bindings (available for Python, Node.js, Go) to convert server-side before storage.

Automating HEIC-to-JPEG in Python

from pillow_heif import register_heif_opener
from PIL import Image
import os

register_heif_opener()

for filename in os.listdir("./uploads"):
    if filename.lower().endswith(".heic"):
        img = Image.open(f"./uploads/{filename}")
        img.save(f"./converted/{os.path.splitext(filename)[0]}.jpg", quality=90)

Windows Compatibility

Windows requires two Microsoft Store extensions: "HEIF Image Extensions" (free) and "HEVC Video Extensions" (search for the free OEM version by searching "HEVC Video Extensions from Device Manufacturer" in the Store). Without both, Windows cannot display HEIC files. In enterprise environments, deploy these via MSIX or group policy.

Working with Live Photos and Depth Data

HEIC files from iPhone can contain embedded depth maps and Live Photo sequences. Extract them with exiftool:

exiftool -b -DepthMap photo.heic > depth.jpg
exiftool -ee -b -PreviewImage photo.heic > livepreview.jpg

Anti-Patterns

Serving HEIC on the web. Chrome, Firefox, and Edge do not support HEIC. Always convert to JPEG, WebP, or AVIF before serving to browsers. HEIC is a capture and storage format, not a delivery format.

Assuming all HEIC files are simple single images. iPhone HEIC files can contain Live Photos (image + video), depth maps, HDR gain maps, and burst sequences. Naive converters may lose this auxiliary data silently.

Ignoring EXIF orientation. HEIC files from iPhones rely on EXIF orientation tags. Tools that strip metadata during conversion may produce rotated images. Always apply orientation before removing EXIF data.

Using HEIC for cross-platform file exchange. If recipients might be on Windows, Android, or Linux, convert to JPEG first. HEIC compatibility outside the Apple ecosystem remains inconsistent.

Batch-converting to uncompressed formats. Converting a library of space-efficient HEIC files to uncompressed TIFF or BMP defeats the purpose. Convert to JPEG (lossy, small) or PNG (lossless, larger) depending on the downstream need.

Related Formats

  • AVIF: Uses the same HEIF container but with royalty-free AV1 codec; better long-term outlook
  • JPEG: The legacy format HEIC aims to replace; universal compatibility but lower efficiency
  • JPEG XL: Competing next-gen format with royalty-free licensing and JPEG backwards compatibility
  • WebP: Google's web-focused format; better browser support than HEIC
  • DNG: Adobe's open RAW format; used for ProRAW on iPhone alongside HEIC
  • ProRAW: Apple's RAW format (DNG-based) for users who want maximum editing flexibility

Install this skill directly: skilldb add file-formats-skills

Get CLI access →