You copy photos off an iPhone and they’re all .heic. Half your apps won’t open them, the photo printer’s website rejects them, and Windows handling of HEIC is hit or miss depending on which codec is installed. The usual workaround — upload a pile of personal photos to a free converter site — is exactly what you don’t want to do with family pictures.
WSL converts HEIC to JPG locally, for free, one file or a whole camera roll. Two tools cover it: heif-convert from the libheif project, and ImageMagick if you’d rather use one utility for all your image work.
If WSL isn’t installed, start with the WSL install guide.
What HEIC is, briefly
HEIC is Apple’s container for HEIF images. Recent iPhones use it by default because it fits similar quality into a smaller file than JPG. The catch is compatibility: plenty of Windows apps and older software still expect JPG. Converting solves that while keeping the originals intact.
Before you start
- WSL installed with Ubuntu (or similar)
- Your HEIC files copied somewhere reachable from WSL
- A few minutes for the one-time install
Install the converter
The heif-convert command ships in the libheif-examples package. For the ImageMagick route, install imagemagick too:
sudo apt update && sudo apt install -y libheif-examples imagemagick
Confirm:
heif-convert --version
Convert a single HEIC to JPG
The simplest form takes the input and output names:
heif-convert input.heic output.jpg
Set JPG quality with -q (1–100); 90 keeps photos looking clean:
heif-convert -q 90 input.heic output.jpg
To work on your phone photos, cd into the folder first. Windows drives live under /mnt:
cd /mnt/c/Users/YourName/Pictures/iPhone
heif-convert -q 90 IMG_0001.heic IMG_0001.jpg
Batch convert a whole camera roll
This is the real win — one loop converts every HEIC in the folder and writes a matching JPG next to it:
for f in *.heic *.HEIC; do [ -e "$f" ] && heif-convert -q 90 "$f" "${f%.*}.jpg"; done
*.heic *.HEICcatches both lowercase and uppercase extensions.[ -e "$f" ]skips a pattern that matches nothing."${f%.*}.jpg"swaps the extension, soIMG_0001.heicbecomesIMG_0001.jpg.
Your HEIC files stay put — you end up with both.
The ImageMagick alternative
If you already use ImageMagick for other image jobs, it can read HEIC directly (when built with HEIC support, which the Ubuntu package usually includes):
magick input.heic -quality 90 output.jpg
Batch the folder:
for f in *.heic *.HEIC; do [ -e "$f" ] && magick "$f" -quality 90 "${f%.*}.jpg"; done
Two ways to convert
| heif-convert -q 90 in.heic out.jpg | Dedicated HEIF tool, simple and fast |
|---|---|
| magick in.heic -quality 90 out.jpg | One tool if you already use ImageMagick |
| for f in *.heic; do heif-convert ... | Batch a whole folder |
| heif-convert in.heic out.png | Convert to PNG instead of JPG |
If a HEIC has transparency or you want a lossless result, target PNG instead by changing the output extension to .png.
Wrapping up
Turning iPhone HEIC photos into JPG on Windows is a one-liner: heif-convert -q 90 input.heic output.jpg, or the same with magick if you prefer ImageMagick. Wrap it in a for loop and an entire camera roll converts in one go.
It’s free, it batches, and it runs in WSL — so your personal photos never get uploaded to a converter site. To slim the JPGs down afterward, see compress images without losing quality.