Complete guide for correctly migrating your photo library from Google Photos to Apple Photos on macOS, preserving all metadata (dates, times, GPS locations).
When you download your photos from Google Photos via Google Takeout, the metadata (date, time, GPS location) is separated from the photos themselves into .supplemental-metadata.json files. This guide helps you merge this metadata back into your photos before importing them into Apple Photos.
- ✅ Merges JSON metadata back into photo files
- ✅ Preserves original dates and GPS locations
- ✅ Fixes photos with dates in filenames (e.g.,
2013-06-11 16.19.16.jpg) - ✅ Checks for HEIC/JPEG format mismatches
- ✅ Prepares photos for clean import into Apple Photos
- macOS computer
- ExifTool installed via Homebrew
- Your Google Takeout download (unzipped)
- ~30-60 minutes (depending on library size)
brew install exiftoolVerify installation:
exiftool -ver- Download your library from Google Takeout
- Select only "Google Photos"
- Download and unzip all archives
- Locate the main folder (usually named "Google Photos" or similar)
cd /path/to/your/Google-Photos-folder💡 Tip: Drag the folder into Terminal to auto-fill the path
This is the main command that copies metadata from .supplemental-metadata.json files into your photos:
exiftool -r -d %s -tagsfromfile "%d/%F.supplemental-metadata.json" \
"-GPSAltitude<GeoDataAltitude" \
"-GPSLatitude<GeoDataLatitude" \
"-GPSLatitudeRef<GeoDataLatitude" \
"-GPSLongitude<GeoDataLongitude" \
"-GPSLongitudeRef<GeoDataLongitude" \
"-Keywords<Tags" \
"-Subject<Tags" \
"-Caption-Abstract<Description" \
"-ImageDescription<Description" \
"-DateTimeOriginal<PhotoTakenTimeTimestamp" \
-ext "*" -overwrite_original -progress --ext json .What it does:
-r- Recursively processes all subdirectories-d %s- Uses Unix timestamp format-tagsfromfile- Copies tags from JSON to image files- All the GPS and date mappings copy specific metadata fields
-overwrite_original- Modifies files in place (no backup copies)-progress- Shows progress as it works--ext json- Excludes JSON files themselves
Expected output:
29 directories scanned
6518 image files updated
1439 image files unchanged
817 files weren't updated due to errors
Many photos have dates in their filenames (e.g., 2013-06-11 16.19.16.jpg). This command extracts and applies those dates:
exiftool "-DateTimeOriginal<Filename" -d "%Y-%m-%d %H.%M.%S.%%e" -r .Expected output:
29 directories scanned
1071 image files updated
6697 image files unchanged
998 files weren't updated due to errors
Some files may have incorrect extensions. Check if this is an issue:
exiftool -r . 2>&1 | grep -i "looks more like" | wc -l- If result = 0: No problem, skip to Step 5
- If result > 10: Fix with the commands below
exiftool -r -ext heic '-filename<${filename;s/\.heic$/.jpg/i}' -if '$mimetype eq "image/jpeg"' .exiftool -r -ext jpg '-filename<${filename;s/\.jpg$/.heic/i}' -if '$mimetype eq "image/heif"' .- Open Photos.app on your Mac
- Go to File > Import (or press ⌘⇧I)
- Select your processed Google Photos folder
- Click Review for Import then Import All
- ⏱️ Wait for import to complete (can take 1-4 hours for large libraries)
After import:
- Open a random photo in Apple Photos
- Press ⌘I to view info
- Check that date, time, and location are correct
- View the map view to confirm GPS locations appear
If you have multiple Takeout folders (Takeout-1, Takeout-2, etc.), you can either:
Option A: Process each separately (follow Steps 1-6 for each)
Option B: Process all at once (recommended)
- Create a parent folder
- Move all Takeout folders into it
- Run Steps 2-4 once from the parent folder (the
-rflag processes all subdirectories)
Google Takeout sometimes places photos in incorrect year folders (e.g., a 2013 photo in "Photos from 2002"). This happens when Google Photos didn't have correct metadata. The scripts in Step 2 and 3 will fix the metadata regardless of folder location.
To check metadata of a specific photo:
exiftool "/path/to/photo.jpg" | grep -E "Date|GPS"If a specific photo has the wrong date:
exiftool "-DateTimeOriginal=2013:06:11 16:19:16" "/path/to/photo.jpg"find . -name "photo-name.jpg"To see what metadata Google Photos had:
cat "/path/to/photo.jpg.supplemental-metadata.json"These errors are normal and usually not a problem:
Meaning: The JSON metadata file doesn't exist for this photo.
Why: Google Photos didn't have metadata for this photo, or you uploaded it with embedded EXIF data.
Action: None needed. Photo will keep its original EXIF data.
Meaning: The JSON file exists but is empty or contains no usable metadata.
Why: Photo had no metadata in Google Photos (e.g., GPS location was 0,0).
Action: None needed.
Meaning: ExifTool couldn't parse the date from the filename.
Why: Filename doesn't contain a date (e.g., IMG_1234.JPG instead of 2013-06-11 16.19.16.jpg).
Action: None needed. These photos keep their existing metadata.
Meaning: Technical warning about XMP metadata synchronization.
Action: None needed. This doesn't affect photo functionality.
Meaning: ExifTool found nothing to update for this file.
Why: Usually appears with "Error opening file" - no JSON metadata available.
Action: Verify the photo has correct metadata with:
exiftool "/path/to/photo.jpg" | grep -E "Date|GPS"For each folder you need to process:
- Navigate to folder (
cdcommand) - Run Step 2: Merge JSON metadata
- Run Step 3: Restore dates from filenames
- Run Step 4: Check HEIC/JPEG mismatches (usually returns 0)
- Import into Apple Photos
- Spot-check a few random photos
- Small library (< 1,000 photos): 5-10 minutes
- Medium library (1,000-5,000 photos): 15-30 minutes
- Large library (5,000-10,000 photos): 30-60 minutes
- Very large library (> 10,000 photos): 1-2 hours
- Depends on library size and whether you sync to iCloud
- Typical: 1-4 hours for 8,000 photos
- You can use your Mac during import (keep Photos.app open)
The original tutorial author created a GUI tool to automate this process:
However, the command-line approach in this guide gives you more control and visibility into the process.
This guide is based on:
- Original tutorial by Mathieu Legault
- ExifTool by Phil Harvey
- Community experience and troubleshooting
Found this helpful? Have improvements or encountered other issues? Feel free to:
- Open an issue
- Submit a pull request
- Share your experience
This guide is provided as-is for educational purposes. Use at your own risk. Always keep backups of your original Google Takeout downloads.
Last Updated: January 2026
Tested on: macOS Sonoma/Sequoia with ExifTool 12.x