112

So, here’s the thing. I have a new iPhone and an old Mac. iOS 11 (still in beta as of today) and El Capitan (no more updates for this Mac). I use iCloud photo library in both devices. When I take a photo in the new format with my iPhone 7, is there any way to use it right away in my mac, without having to convert it in my iPhone first? I mean, can I get those photos synced through iCloud and converted locally on my Mac?

I have tried to find a third party software that could do that kind of conversion, but was not able to find any that would work on El Capitan. Any idea?

17
  • 1
    I am still trying to understand the mechanics of it. I have set it to Automatic in the iPhone. But I got a couple heic files in Photos app through iCloud Photo Library sync and also when downloading from iCloud website. I guess the website shout allow us to export a JPEG. And it would be nice to have the same in Photos app, in El Capitan. Commented Sep 1, 2017 at 17:31
  • 1
    @Mark yeah, that was one of my first thoughts, but it seems that their HEIC conversion is a feature that only works in a more recent OS. Commented Sep 1, 2017 at 18:16
  • 12
    sips -s format JPEG myfile.heic --out myfile.jpg Commented Jul 9, 2018 at 3:04
  • 1
    sips on El Capitan does not work for converting HEIC images.
    – TJ Luoma
    Commented Feb 12, 2020 at 11:05
  • 6
    @PatNiemeyer and @dmon that should be sips -s format jpeg with lowercase jpeg. Uppercase gives Error: Unsupported output format JPEG (sips-294 on MacOS Catalina 10.15.5)
    – jonatan
    Commented Sep 27, 2020 at 20:43

8 Answers 8

41

We just released this little free app for macOS: https://imazing.com/heic

Minimum macOS version is 10.8, so no worries with El Capitan. : )

enter image description here

2
  • 6
    This tool also preserves EXIF data too, which is awesome! Commented Mar 8, 2018 at 23:34
  • Not working recently
    – ɹoƃı
    Commented Jul 4, 2018 at 10:08
172

You can use the command line tool imagemagick to convert HEIC images to JPG.

# install imagemagick
brew install imagemagick

# convert a single image
magick convert foo.HEIC foo.jpg

# bulk convert multiple images
magick mogrify -monitor -format jpg *.HEIC

Update: Now MacOS provides a built-in converter using Finder, if you want a GUI solution.

6
  • 2
    What does "convert: no decode delegate for this image format `HEIC" mean?
    – gap
    Commented Mar 9, 2019 at 22:16
  • 4
    @gap, you error message means you don't have the right stuff installed to deal with the HEIC format. brew upgrade imagemagick solved this problem for me.
    – kuzzooroo
    Commented Apr 19, 2019 at 19:11
  • 1
    @gap Not sure. My original install command had an extra option: brew install imagemagick --with-libheif, but others said it wasn't needed anymore. You could give that a try. Maybe it makes a difference depending on your OSX version.
    – wisbucky
    Commented Apr 24, 2019 at 18:04
  • @wisbucky, regarding my non-deleted answer: you were right. not sure what was going on before. Thanks for the feedback. 👍
    – Kirby
    Commented May 13, 2019 at 23:05
  • Perfect! worked for me Commented Jun 9, 2019 at 22:18
85

The macOS-native way of doing image conversions like these is apparently sips(1) (raising comments of Pat Niemeyer and jonatan to proper answer status, for improved findability):

sips -s format jpeg -s formatOptions best myfile.heic --out myfile.jpg

So if you have a directory full of HEIC files, you can launch a macOS Big Sur terminal, where, if you run the default Zsh shell, you can make jpeg copies of all those files like this:

for i in *.heic(:r); do sips -s format jpeg -s formatOptions best "$i.heic" --out "$i.jpg"; done;

…and presto, you've got jpeg copies!

If you want to also nuke the originals, follow up with a rm *.heic – or use this variant instead:

for i in *.heic(:r); do sips -s format jpeg -s formatOptions best "$i.heic" --out "$i.jpg" && rm "$1.heic"; done;

…and integrating Josh Hibschman's tip to also retain timestamps:

find . -type f -iname '*.heic' | while read i; do \
  fileNoExt="${i%.*}"; \
  jpgFile="${fileNoExt}_heic_conv.jpg"; \
  sips -s format jpeg -s formatOptions best "$i" --out "$jpgFile"; \
  touch -r "$i" "$jpgFile"; \
  rm "$i"; \
done
12
  • 18
    Without question this should be the definitive answer. No extra software to be installed, as simple as it can get.
    – Endareth
    Commented Jul 14, 2021 at 11:55
  • When I try this in bash I get Warning: .heic not a valid file - skipping. The imagemagick solution works for me. Commented Jul 22, 2021 at 2:36
  • 1
    What does the (:r) qualifier do? Commented Aug 6, 2021 at 0:11
  • 2
    (:r) is a zsh globbing filename generation feature that removes a filename extension from matches, so *.heic(:r) would match example files a.heic and b.heic as a b.
    – ecmanaut
    Commented Aug 20, 2021 at 0:42
  • 1
    Recommend adding touch -r myfile.heic myfile.jpg to copy over created and modified dates.. or altogether with renaming find . -type f -iname '*.HEIC' | while read i do fileNoExt="${i%.*}"; jpgFile="${fileNoExt}_heic_conv.JPG"; sips -s format jpeg "$i" --out "$jpgFile"; touch -r "$i" "$jpgFile"; rm "$i"; done Commented Apr 12, 2022 at 13:12
30

Use the built-in "Convert Image" macOS Quick Action to easily convert HEIC images to JPEG.

Convert Image Quick Action

the right-click menu item opens up a small utility for converting to various formats and sizes:

Convert Image

2
  • 1
    this is elegant!
    – zx1986
    Commented Jul 9, 2022 at 9:32
  • Hmm I did that and it worked. But the image is in low quality, even though I selected "actual size". Furthermore: Now when I copy any other image from the Photos App to a new folder in Finder, its automatically in "low" quality and in ".jpeg" format instead of ".heic". Do you know how to revert this?
    – JiiB
    Commented Nov 2, 2022 at 8:46
8

I found Dropbox to be a good conversion tool, as it does it transparently for the usage on any operating system and platform.

When you do the shot from iPhone, Dropbox automatically converts .heic image to .jpg when uploading it to computer (controlled by the settings). Since I'm using both Windows OS and MacOS, there's no need to install separate additional applications.

3

Below an online (web browser) conversion tool: doesn’t support batch processing but it will work on a wide range of systems, including non-Apple OSs.

http://heictojpg.com/

2
  • 1
    This website now lets you upload up to 50 images at once.
    – kuzzooroo
    Commented Apr 19, 2019 at 19:11
  • Keep in mind: you are uploading your pics to a third-party cloud service (and you have no guarantee they will delete them afterward). Do not use it for personal stuff,
    – jnardiello
    Commented Dec 29, 2022 at 11:00
3

my two cents for Catalina.

I was tired of using cmd line...

I wrote a small app... if interested. it's free:

https://apps.apple.com/us/app/heictojpeg/id1486256731?ls=1&mt=12

hope can be useful :)

1
  • 2
    and now is AppleSilicon-ready
    – ingconti
    Commented Oct 17, 2020 at 6:26
2

An excellent command line tool that works very well is tifig. It can be easily compiled on multiple platforms. It should compile on any platform with a relatively modern development toolchain, that should include El Capitan!

3
  • I followed the instructions in the repo to install tifig using brew install cmake vips ffmpeg (from the repo) but it doesn't seem to work (tifig command not found). Commented Oct 8, 2018 at 21:28
  • I don't know if you did or not, but you have to follow the build instructions as well. To execute inside build folder after build, just run ./tifig -v -p file.heic file.jpg
    – kentrh
    Commented Dec 13, 2018 at 17:41
  • 1
    Could a demo brew install and usage be provided to turn this into a more complete answer? As it stands it's more of a comment.
    – oliversm
    Commented Apr 1, 2020 at 23:35

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .