The HEIC Compatibility Wall
HEIC (High Efficiency Image Container) produces smaller files than JPEG with better quality — which is why Apple made it the default format for iPhone and iPad photos starting with iOS 11. But HEIC runs into a hard compatibility wall the moment you try to share photos with Windows users, upload to most websites, or use them in software that predates 2020.
Converting one HEIC file is trivial. Converting 1,200 vacation photos, your entire camera roll backup, or a client's delivered photo set is a different problem. This guide covers fast, reliable batch HEIC conversion workflows across all platforms — preserving metadata, maintaining quality, and handling edge cases like RAW+HEIC pairs.
For quick single-file conversion, ConvertIntoMP4's HEIC converter handles it directly in the browser. For batch jobs of dozens to thousands of files, read on.
Understanding HEIC Before Converting
HEIC uses H.265 (HEVC) compression for still images. The format supports:
- 10-bit color depth (JPG is 8-bit)
- HDR content and wide color gamut (P3)
- Burst photos stored as a single file
- Live Photos (with embedded video)
- Portrait mode depth maps
- Multi-frame sequences
When you convert to JPG, you lose 10-bit depth (reduced to 8-bit), HDR information gets tone-mapped, burst photos become individual files, and Live Photo video is stripped. For most use cases — web publishing, email, documents — this doesn't matter. For professional photo work where you need the original color data, export from Photos.app at maximum quality rather than converting the raw HEIC files.
Quality Settings Comparison
| Output Format | File Size (relative to HEIC) | 10-bit | HDR | Transparency |
|---|---|---|---|---|
| JPG (quality 85) | ~1.2× | No | No | No |
| JPG (quality 95) | ~2× | No | No | No |
| PNG | ~3–5× | No* | No | Yes |
| WebP (lossless) | ~1.5× | No | No | Yes |
| WebP (lossy 85) | ~0.9× | No | No | Yes |
| TIFF | ~5–8× | Yes | Limited | Yes |
For most workflows, JPG at quality 85-90 is the right choice. PNG is worth choosing when you need transparency or are doing further image editing. WebP is a good middle ground for web delivery.
Mac: The Easiest Path
Using sips (Built-In, No Install Required)
macOS includes sips (Scriptable Image Processing System), which handles HEIC natively:
Single file:
sips -s format jpeg image.heic --out image.jpg
Batch convert a folder:
mkdir -p converted
for f in *.heic *.HEIC; do
[ -f "$f" ] || continue
sips -s format jpeg "$f" --out "converted/${f%.*}.jpg"
done
Batch with quality control:
mkdir -p converted
for f in *.heic *.HEIC; do
[ -f "$f" ] || continue
sips -s format jpeg -s formatOptions 85 "$f" --out "converted/${f%.*}.jpg"
done
formatOptions accepts 0-100 for JPEG quality.
Preserve folder structure:
find /path/to/photos -name "*.heic" -o -name "*.HEIC" | while read f; do
dir=$(dirname "$f")
base=$(basename "${f%.*}")
mkdir -p "converted_photos/${dir#/path/to/photos/}"
sips -s format jpeg -s formatOptions 85 "$f" \
--out "converted_photos/${dir#/path/to/photos/}/${base}.jpg"
done
Using Preview (GUI Batch Method)
- Select multiple HEIC files in Finder
- Open with Preview (double-click or right-click → Open With → Preview)
- All files appear in the sidebar
- Select all: Cmd+A
- File → Export Selected Images
- Choose format (JPEG, PNG), set quality, choose output folder
- Click Choose
Preview's batch export handles hundreds of files well and preserves EXIF metadata by default.
Using Automator
For recurring workflows, create an Automator Quick Action:
- Open Automator → New Document → Quick Action
- Set "Workflow receives current: image files in Finder"
- Add action: "Change Type of Images" (set to JPEG)
- Optional: Add "Scale Images" before the type change
- Save as "Convert to JPEG"
Right-click any selection of HEIC files → Quick Actions → Convert to JPEG. This becomes a permanent right-click option in Finder.
Pro tip: Automator workflows don't ask about output location — they save converted files in the same folder as the originals. Add a "Move Finder Items" action after conversion to redirect output to a specific folder.
Windows: Installing HEIC Support
Windows doesn't support HEIC natively unless you pay for the HEVC codec. Your options:
Option 1: Microsoft Photos (Free Workaround)
Installing the "HEIF Image Extensions" from the Microsoft Store (free) enables HEIC viewing and basic export via Photos. But batch export from Photos is limited — only a few files at a time.
Option 2: IrfanView with Plugin (Free, Powerful)
- Install IrfanView
- Install the Plugins package (includes HEIC support)
- File → Batch Conversion/Rename
IrfanView batch settings:
- Input: HEIC files (browse to folder, add *.heic)
- Output format: JPG
- Advanced options → Quality: 85-90%
- Output folder: choose destination
- Start Batch
IrfanView handles thousands of files efficiently and preserves EXIF data.
Option 3: FFmpeg on Windows
FFmpeg on Windows (via winget or direct download) handles HEIC if compiled with libheif support:
# Install via winget
winget install Gyan.FFmpeg
# Batch convert in PowerShell
Get-ChildItem -Filter "*.heic" | ForEach-Object {
ffmpeg -i $_.FullName -q:v 3 "$($_.BaseName).jpg"
}
Note: Not all Windows FFmpeg builds include libheif. Check with ffmpeg -codecs | findstr hevc.
Option 4: ImageMagick
ImageMagick on Windows handles HEIC via its HEIF delegate:
# Install via Chocolatey
choco install imagemagick
# Batch convert
Get-ChildItem -Filter "*.heic" | ForEach-Object {
magick $_.FullName -quality 85 "$($_.BaseName).jpg"
}
Linux Batch Conversion
Linux requires installing libheif for HEIC support. On Ubuntu/Debian:
sudo apt install libheif-examples imagemagick
Using heif-convert (fastest for HEIC specifically):
# Single file
heif-convert image.heic image.jpg
# Batch
mkdir -p converted
for f in *.heic; do
heif-convert "$f" "converted/${f%.heic}.jpg"
done
Using ImageMagick:
# Batch with quality control
mogrify -format jpg -quality 85 -path ./converted *.heic
mogrify is ImageMagick's in-place (or with -path, redirected) batch command.
Using FFmpeg:
for f in *.heic; do
ffmpeg -i "$f" -q:v 3 "converted/${f%.heic}.jpg"
done
Preserving Metadata During Conversion
EXIF metadata (date taken, GPS location, camera settings, lens info) is important to preserve, especially for photo libraries. Most tools handle this differently:
| Tool | EXIF Preservation | GPS | Date Taken |
|---|---|---|---|
| sips (Mac) | Yes | Yes | Yes |
| Preview (Mac) | Yes | Yes | Yes |
| ImageMagick | Yes (default) | Yes | Yes |
| FFmpeg | Often stripped | No | No |
| IrfanView | Configurable | Yes | Yes |
For FFmpeg, use -map_metadata 0 to copy all metadata:
ffmpeg -i input.heic -map_metadata 0 -q:v 3 output.jpg
Verify metadata was preserved:
exiftool output.jpg | grep -E "Date|GPS|Camera"
Handling Special HEIC Cases
Live Photos (HEIC + MOV Pairs)
Live Photos on iPhone are stored as paired .heic + .mov files. When you copy from iPhone, you see both. Standard batch conversion processes only the HEIC still — the video component needs separate handling.
If you want to keep the Live Photo video as a separate clip, no conversion is needed for the MOV file — it's already H.264. Just rename it to match your JPEG name.
HEIC Files That Won't Convert
Occasionally you'll encounter HEIC files that tools can't open, often because:
- They're actually HEIF sequences (burst photos) rather than single images
- The HEVC profile used isn't supported by the tool
- The file was created by a non-Apple device with a non-standard implementation
For stubborn files, try ConvertIntoMP4's HEIC converter — it uses a different conversion backend that handles unusual HEIC variants.
HDR HEIC Photos
HDR photos taken on iPhone 12 and newer use HEIC with Dolby Vision or HDR10 metadata. When converting to JPG (which is SDR-only), the HDR information gets tone-mapped — the bright highlights may look compressed compared to the original.
For accurate HDR-to-SDR conversion, AdobeRGB output in TIFF format preserves more color information for further editing.
Large-Scale Automation: Python Script
For photo libraries with thousands of files organized in subfolders:
#!/usr/bin/env python3
"""
HEIC batch converter with folder structure preservation.
Requires: pip install pillow pillow-heif
"""
import os
from pathlib import Path
from pillow_heif import register_heif_opener
from PIL import Image
register_heif_opener()
def convert_heic_folder(input_dir: str, output_dir: str, quality: int = 85):
input_path = Path(input_dir)
output_path = Path(output_dir)
heic_files = list(input_path.rglob("*.heic")) + list(input_path.rglob("*.HEIC"))
print(f"Found {len(heic_files)} HEIC files")
for i, heic_file in enumerate(heic_files, 1):
# Preserve relative folder structure
relative = heic_file.relative_to(input_path)
out_file = output_path / relative.with_suffix(".jpg")
out_file.parent.mkdir(parents=True, exist_ok=True)
try:
with Image.open(heic_file) as img:
img.save(out_file, "JPEG", quality=quality, exif=img.getexif().tobytes())
print(f"[{i}/{len(heic_files)}] {relative}")
except Exception as e:
print(f"ERROR: {heic_file}: {e}")
if __name__ == "__main__":
convert_heic_folder("./photos", "./photos_jpg")
This script recursively converts all HEIC files while recreating the exact folder structure in the output directory, embedding EXIF data in the output JPEGs.
Workflow Recommendations
For different use cases:
Casual personal use (Mac): Use Preview's batch export — it's quick and preserves everything.
Professional photo delivery: Use sips on Mac or ImageMagick on any platform — both offer quality control and metadata preservation.
Windows environments: IrfanView is the most practical free tool with good EXIF support and a visual interface.
Developer/CI pipelines: Python with pillow-heif is the most controllable programmatically.
One-off or no-install scenarios: ConvertIntoMP4's image converter works in any browser without installing software.
Frequently Asked Questions
Will converting HEIC to JPG reduce quality?
Yes — any lossy format conversion involves some quality loss. At quality 85-90%, the difference is not visible on screen or in print at normal sizes. For archival purposes, keep the original HEIC files and work from JPG copies.
How much smaller is HEIC vs JPG?
HEIC files are typically 40-50% smaller than equivalent-quality JPGs. A photo that's 4 MB as JPG might be 2 MB as HEIC. Converted JPGs will be larger than the originals.
Does AirDrop automatically convert HEIC to JPG?
When AirDropping from iPhone to Mac: no conversion happens. When AirDropping from iPhone to Windows PC via the Windows app: JPG conversion happens automatically. You can also set iPhone to send JPGs directly: Settings → Camera → Formats → Most Compatible.
Can I convert HEIC to PNG while keeping transparency?
HEIC does support transparency, but iPhone photos don't use it. Converting HEIC to PNG will produce PNGs without transparency unless the source HEIC contained alpha channel data.
What's the best quality setting for JPG output?
For web use: 80-85. For print or editing: 90-95. Above 95, file sizes grow rapidly with minimal visible improvement. The image compression guide covers quality settings in detail.
Moving On From HEIC
HEIC is an excellent format on Apple devices, but batch-converting your photos to JPG before sharing, archiving for the long term, or using in non-Apple software remains a practical necessity. The workflows above cover every platform and scale — from a few dozen vacation photos to a studio's complete client archive.
For related image format conversion topics, the guide on converting images for social media covers the specific size and format requirements for major platforms, and the WebP conversion guide explains when WebP might be a better choice than JPG for your converted images.



