Simple Merge Google Photos Takeout .json to .jpg

Like hundreds of thousands of Google Photo users, I have downloaded photos to my Mac using Takeout and now have a pile of .jpg and json files that I need to merge to put them in Mac Photos.

The solutions I have found on line are either paid for software (so Google gets me to pay these people to manage my photos???) or else command lines that are not sufficiently explained for the average user like me.


I would like a simple free software to merge these two types of files but this does not seem to exist. Or else, if the "do it yourself" solution using complex commands and lines of code is the only way, then I would like a step by step explanation on how to do this, written in normal English (not geek code lingo, please!!).


So many thousands of Mac users would be grateful for a solution! Thanks for all help!

Posted on Jan 29, 2025 05:28 AM

Reply
Question marked as Top-ranking reply

Posted on Jan 29, 2025 11:00 AM

You could:


a) Ignore the .json sidecar files. Download and archive (just in case) .zip files from Google Takeout. Then expand the .zip and import only images and movies to a new Photos album (so you can easily delete that batch, if needed). Then if some metadata seems to be missing, delete that batch and use the .json sidecars:


b) Use GraphicConverter to copy .json to the images and movies. GraphicConverter is shareware. That means you can test the product free of charge and without any obligations before you purchase it.


c) Or learn basic Terminal skills and use exiftool to copy .json to images with the command below:


exiftool -overwrite_original -d %s -tagsFromFile '%d/%F.json' '-GPSLatitude*<${GeoDataLatitude;$_ = undef if $_ eq "0.0"}' '-GPSLongitude*<${GeoDataLongitude;$_ = undef if $_ eq "0.0"}' '-Caption-Abstract<Description' '-Description<Description' '-Rating<${Favorited;$_=5 if $_=~/true/i}' '-AllDates<PhotoTakenTimeTimestamp' '-FileCreateDate<PhotoTakenTimeTimestamp' '-FileModifyDate<PhotoTakenTimeTimestamp' -ext jpg -ext heic -ext tif -ext png -ext webp -ext gif .


And use exiftool to copy .json to movies with the command below:


exiftool -overwrite_original -d %s -api QuickTimeUTC=1 -api LargeFileSupport=1 -tagsFromFile '%d/%F.json' '-Keys:GPSCoordinates<${GeoDataLatitude;$_ = undef if $_ eq "0.0"}, ${GeoDataLongitude;$_ = undef if $_ eq "0.0"}' '-Keys:Description<Description' '-Keys:UserRating<${Favorited;$_=5 if $_=~/true/i}' '-AllDates<PhotoTakenTimeTimestamp' '-Track*Date<PhotoTakenTimeTimestamp' '-Media*Date<PhotoTakenTimeTimestamp' '-Keys:CreationDate<PhotoTakenTimeTimestamp' '-FileCreateDate<PhotoTakenTimeTimestamp' '-FileModifyDate<PhotoTakenTimeTimestamp' -ext mp4 -ext m4v -ext mov .


That should work. I don't here go in detail for two little gotchas that might need some extra tweaks (Google might scramble some file suffixes so the image or movie might not match the corresponding .json and Google's use of UTC times might need adjusting to correct time zone).


6 replies
Question marked as Top-ranking reply

Jan 29, 2025 11:00 AM in response to Rijifi

You could:


a) Ignore the .json sidecar files. Download and archive (just in case) .zip files from Google Takeout. Then expand the .zip and import only images and movies to a new Photos album (so you can easily delete that batch, if needed). Then if some metadata seems to be missing, delete that batch and use the .json sidecars:


b) Use GraphicConverter to copy .json to the images and movies. GraphicConverter is shareware. That means you can test the product free of charge and without any obligations before you purchase it.


c) Or learn basic Terminal skills and use exiftool to copy .json to images with the command below:


exiftool -overwrite_original -d %s -tagsFromFile '%d/%F.json' '-GPSLatitude*<${GeoDataLatitude;$_ = undef if $_ eq "0.0"}' '-GPSLongitude*<${GeoDataLongitude;$_ = undef if $_ eq "0.0"}' '-Caption-Abstract<Description' '-Description<Description' '-Rating<${Favorited;$_=5 if $_=~/true/i}' '-AllDates<PhotoTakenTimeTimestamp' '-FileCreateDate<PhotoTakenTimeTimestamp' '-FileModifyDate<PhotoTakenTimeTimestamp' -ext jpg -ext heic -ext tif -ext png -ext webp -ext gif .


And use exiftool to copy .json to movies with the command below:


exiftool -overwrite_original -d %s -api QuickTimeUTC=1 -api LargeFileSupport=1 -tagsFromFile '%d/%F.json' '-Keys:GPSCoordinates<${GeoDataLatitude;$_ = undef if $_ eq "0.0"}, ${GeoDataLongitude;$_ = undef if $_ eq "0.0"}' '-Keys:Description<Description' '-Keys:UserRating<${Favorited;$_=5 if $_=~/true/i}' '-AllDates<PhotoTakenTimeTimestamp' '-Track*Date<PhotoTakenTimeTimestamp' '-Media*Date<PhotoTakenTimeTimestamp' '-Keys:CreationDate<PhotoTakenTimeTimestamp' '-FileCreateDate<PhotoTakenTimeTimestamp' '-FileModifyDate<PhotoTakenTimeTimestamp' -ext mp4 -ext m4v -ext mov .


That should work. I don't here go in detail for two little gotchas that might need some extra tweaks (Google might scramble some file suffixes so the image or movie might not match the corresponding .json and Google's use of UTC times might need adjusting to correct time zone).


Jan 29, 2025 07:11 AM in response to Rijifi

If you have not edited metadata (date, location etc) inside Google Photos, you can ignore .json sidecars because that old info is already in the image metadata.


Otherwise you can use GraphicConverter ($40) to join .json metadata to the images and movies.



A free alternative is to do it with exiftool via the Terminal but then you can not escape geek code lingo. Or bribe a geek to do it for you.

Jan 29, 2025 08:13 AM in response to Matti Haveri

Thank you for this information, Matti Haveri. The fact that Google provides so many json versions of the photos is surprising, as though there were many "manipulations" on the original files but this is not the case for my photos..


I would nevertheless prefer to merge the json and jpg files if possible, just to be sure that I have not lost any information but unfortunately I do not have a geek at hand to help me and no free simple application for something that many thousands of users would like to do ...

Jan 30, 2025 07:28 AM in response to Matti Haveri

Thank you very much, Matti Haveri, for this additional advice which I intend to put into practice. I'll see what I can do with GraphicConverter! but I suspect that, in fact, there is probably no great loss on the downloaded metadata of the photos. I have very few videos.

If my Mac explodes with the exiftool adventure (should I need to use it!), I'll come back for more advice! 😉

Jan 30, 2025 08:34 AM in response to Rijifi

Rijifi wrote:

exiftool adventure (should I need to use it!), I'll come back for more advice! 😉

A short Terminal and exiftool manual:


Using exiftool via the command line is not so difficult as it sounds. Just download the MacOS Package .pkg from exiftool main page and install it. Depending on the macOS version there might be an alert that the .pkg was not opened but do not worry: exiftool is from a trusted developer who has just not a bought a certificate from Apple. So dismiss the alert with "Done", and open System Settings > Privacy & Security > Security and click Open Anyway and proceed to install.


Then, for example, put copies (just in case when testing this) of the images or movies you want to process on the Desktop to a folder named 'test' (don't put anything else there).


Then open Applications > Utilities > Terminal.app, type 'cd ' (without quotes, notice the space at the end) and drag that 'test' folder to the Terminal window and press Return to change to that folder (or type 'cd ~/Desktop/test' followed by Return. The tilde '~' means your home folder).


Then copy & paste the desired command to the Terminal, press Return, and wait for all files in that folder to be processed. For example check almost all metadata for all files in that folder:


exiftool -a -G1 -s .


The dot '.' at the end of a command means 'this folder'. Or alternatively, omit that dot '.' at the end, and instead type the exact name of the file you want to process. Or type just the start of the filename, and then press Tab to use autocomplete and maybe insert '*' to the end, and hit Return to process all files that start with the same letters. Or add '-ext jpg' switch to the command to process only files that have .jpg suffix. That was a rather clumsy instruction but I guess you get the idea to get you going.


https://exiftool.org/

This thread has been closed by the system or the community team. You may vote for any posts you find helpful, or search the Community for additional answers.

Simple Merge Google Photos Takeout .json to .jpg

Welcome to Apple Support Community
A forum where Apple customers help each other with their products. Get started with your Apple Account.