To convert a folder of HEIC photos into JPEGs on macOS and carry over their EXIF metadata, use sips to create the JPEGs, then ExifTool to copy metadata from each original. Keep the HEIC files untouched and save the new files in a separate folder. This two-step process makes the metadata transfer explicit; a successful image conversion alone does not prove that all EXIF fields made it into the JPEG.

What you need to know before converting

A JPEG is a new image encoding, so the image data is recompressed. It cannot be converted without any image-quality change. Metadata is a separate concern: camera details, capture date, and GPS tags may be stored in the original, but not every HEIC field has an equivalent that a JPEG can store. Copying metadata is therefore not a promise that every field will survive unchanged. Check the result if a particular tag matters.

macOS Preview can export a single image or multiple selected images as JPEG: open the images in one window, select them in the sidebar, and choose File > Export. Apple documents the format and quality controls, but does not document that batch export preserves all EXIF fields. If metadata retention is a requirement, use the explicit copy-and-check workflow below. Apple’s Preview conversion guide

Convert and copy metadata with Terminal

This workflow uses Apple’s sips command to convert each image, then ExifTool to copy metadata from its matching original. Install ExifTool first using its official installation instructions. Create a source folder containing the HEIC files and an empty destination folder. In the example, the folders are ~/Pictures/HEIC-Originals and ~/Pictures/JPEG-Converted; change those paths if yours differ.

Open Terminal and run this complete Bash example. It handles spaces in folder and file names, recognizes .heic and .heif extensions regardless of capitalization, and writes JPEGs to the separate destination folder.

src="$HOME/Pictures/HEIC-Originals"
out="$HOME/Pictures/JPEG-Converted"
mkdir -p "$out"

find "$src" -maxdepth 1 -type f \( -iname '*.heic' -o -iname '*.heif' \) -print0 |
while IFS= read -r -d '' file; do
  name=$(basename "${file%.*}")
  jpg="$out/$name.jpg"

  if sips -s format jpeg "$file" --out "$jpg"; then
    exiftool -TagsFromFile "$file" -all:all -overwrite_original "$jpg"
  else
    printf 'Conversion failed: %s\n' "$file" >&2
  fi
done

The sips command produces the JPEG; ExifTool’s -TagsFromFile and -all:all options copy metadata from the specified original. The -overwrite_original option prevents ExifTool from leaving a backup copy of each JPEG. ExifTool’s documentation describes metadata copying and notes that the tags a destination format can hold depend on that format. ExifTool application documentation

The script looks only in the source folder’s top level. If your photos are in nested folders, run it on each folder separately or adapt the search and destination paths so that files with identical names do not overwrite one another. Make sure the destination is empty or that its filenames cannot collide with existing files. Keep the originals until you have checked the output.

Check that the JPEGs contain the metadata you need

Use ExifTool to inspect a converted JPEG alongside its source. Replace the sample filename with one from your batch:

exiftool -a -G1 -s "$HOME/Pictures/HEIC-Originals/IMG_0001.HEIC"
exiftool -a -G1 -s "$HOME/Pictures/JPEG-Converted/IMG_0001.jpg"

Compare the fields you care about, such as DateTimeOriginal, camera make and model, and GPS coordinates. If a field appears in the HEIC but not the JPEG, the conversion or metadata copy did not preserve it in a usable form; do not assume it is retained just because Finder displays a date or the JPEG opens. ExifTool can read metadata from many image formats, but supported tags and writable fields vary by format. ExifTool’s format and tag documentation

Common issues and limits

If sips reports that it cannot read a file, check that it is a supported image and that the filename extension matches the file. If Terminal says exiftool: command not found, ExifTool is not installed or is not on your shell’s path. If two originals share the same filename stem, the script would target the same JPEG name; handle those files in separate destination folders or rename them before converting.

EXIF copying does not preserve every property associated with the original photo. A JPEG cannot represent HEIC-only data, and copying tags does not make the JPEG’s pixels identical to the HEIC’s decoded image. For important archives, retain the original HEICs and treat the JPEGs as compatibility copies. When the target use only requires a quick format change and metadata is unimportant, Preview’s documented batch export is simpler; when specific EXIF fields matter, convert, copy, and inspect them.

Sources