Skip to content

Batch Convert HEIC on Mac

Batch convert HEIC to JPG on Mac with Terminal sips or GetCompress. Real estate and event photo workflows.

By Petr Samokhin

Two hundred HEIC files land in a Finder folder from an iPhone shoot. Photos export one album at a time gets old fast. Real estate, events, and product photography often need JPEG at consistent width before MLS, Shopify, or client galleries accept the batch. You might also get mixed extensions, Live Photo pairs, and duplicate filenames from multiple photographers on one listing. Batch conversion locally beats uploading the camera roll to a converter site and keeps unreleased listing photos on your Mac.

When Photos is enough

If the shoot is already in Photos and you export one album once, File → Export → Export N Photos as JPEG is fine.

SituationUse Photos
One album already in libraryYes
Files only in a Finder folderNo, use batch below
Need custom width on every fileBatch tool or GetCompress
SituationBetter tool
200+ HEIC in Listing/raw/sips loop or GetCompress
Mixed HEIC + Live PhotosExport stills first, then batch
Client wants PNG selectsBatch PNG in GetCompress or Terminal

For single-file context and format comparison, see HEIC to JPG on Mac .

Batch with sips in Terminal

Open Terminal, cd to the folder:

mkdir jpeg-out
for f in *.heic *.HEIC; do
  [ -f "$f" ] || continue
  sips -s format jpeg -s formatOptions 90 "$f" --out "jpeg-out/${f%.*}.jpg"
done

Resize while converting (common MLS rule: 3000 px long edge):

mkdir jpeg-out
for f in *.heic *.HEIC; do
  [ -f "$f" ] || continue
  sips -Z 3000 -s format jpeg -s formatOptions 85 "$f" --out "jpeg-out/${f%.*}.jpg"
done

FFmpeg batch when sips fails on a odd file:

mkdir jpeg-out
for f in *.heic *.HEIC; do
  [ -f "$f" ] || continue
  ffmpeg -i "$f" -q:v 3 "jpeg-out/${f%.*}.jpg"
done

Parallel shoots from two photographers may duplicate IMG_####.HEIC names. Convert into separate jpeg-out/alice/ and jpeg-out/bob/ folders or rename after batch so listing uploads do not overwrite each other.

Flag / optionPlain meaning
-Z 3000Max width or height 3000 px
formatOptions 85JPEG quality balance

Always write to jpeg-out/ so originals stay untouched.

Test the loop on three files before running two hundred. If one HEIC fails, note the filename and run FFmpeg on outliers only rather than aborting the whole batch.

FailureNext step
sips unknown formatFFmpeg -q:v 3 on that file
Output too largeLower formatOptions or add -Z resize
Wrong orientationFix in Photos first if EXIF matters

Rename and resize after

MLS and Shopify often want consistent width and filenames like 001-front.jpg. Doing rename, resize, and convert in one pass beats chaining three scripts.

sips cannot rename sequentially easily; many photographers use a batch app or GetCompress preset instead of maintaining shell scripts per portal.

Sequential filenames matter for MLS uploads that sort alphabetically. If rename must happen after conversion, use a dedicated rename tool or export with zero-padded names from GetCompress presets rather than fragile shell printf loops.

If files are still too large after width cap, lower JPEG quality or run a second compress pass. See how to compress images on Mac for general image compression after conversion.

Portal quirkPractical response
Rejects over 5 MBLower q85 to q80 or cap width further
Requires sRGBsips export is usually sRGB already
Wants exact 3000 px long edgeUse -Z 3000 in the same loop

Using GetCompress

GetCompress is the straightforward way to batch convert HEIC on Mac when sips loops feel slow, when Live Photo pairs confuse scripts, or when you need preset width and quality every Friday listing.

Point GetCompress at a folder of HEIC photos. Choose JPEG output, set max width (for example 3000 px for listings) and quality, then export.

Workflow features that help:

  • Batch queue: entire iPhone drop folder in one pass.
  • Presets: save “MLS 3000px q85” and reuse every shoot.
  • Resize plus convert: match portal rules without a second script.
  • Folder monitoring: watch an ingest folder and auto-convert new HEIC files.
  • Local processing: keep unreleased listing photos off online upload tools.
  • Quality presets: when a portal caps megabytes per image, not just pixels.
  • Clipboard drop: convert a small AirDrop batch without moving files into Photos.

Save the preset if you run the same settings weekly. Adjust quality once when a portal rejects the first upload rather than re-shooting. Folder monitoring helps when your team drops HEIC into Listing/raw/ every shoot day and you want JPEG in Listing/web/ automatically.

When a shoot mixes HEIC from phones and JPEG from a second shooter, convert HEIC only and leave JPEG untouched in a parallel folder. Merge after width and quality match so MLS sees one consistent grid. GetCompress presets make that second pass faster than tuning two different sips loops.

Buy GetCompress now for local media compression with reusable presets and no media upload.