Takeout JSON
EN

What Are JSON Files in Google Takeout? What They Hold

Each .json file holds one photo's real date, location and caption. Delete them only after that data is written into the photos, or the dates are lost.

The JSON files in Google Takeout hold what Google Photos knew about each photo: the date it was taken, the location, the caption and the original filename. There is one next to almost every photo and video, with a name like IMG_3391.HEIC.supplemental-metadata.json. You can delete them, but only after their dates and locations are written into the photos. Delete them first and your photos keep the download date.

You unzipped your Google Photos export and half the files are not photos. You did not ask for them, most programs cannot open them, and there are thousands. They are not junk. They hold the dates and places that Google did not write into your pictures.

Why Google adds them

Google Photos stores what it knows about a photo in its own database: when it was taken, where, which album it is in, whether you starred it, and any date or location you corrected by hand. The image file itself may or may not carry that information in its EXIF block. Screenshots and chat images usually do not. Edits you made in Google Photos never do.

When you export, Google gives you the image file more or less as it was uploaded. It does not write its database back into each file. Instead it puts the database entry into a small text file beside the image. That text file is called a sidecar, and JSON is the format it is written in.

What is inside one

Open one in Notepad, TextEdit or any code editor. A typical sidecar looks like this, trimmed a little:

{
  "title": "IMG_3391.HEIC",
  "description": "",
  "imageViews": "12",
  "creationTime": {
    "timestamp": "1690120442",
    "formatted": "Jul 23, 2023, 2:34:02 PM UTC"
  },
  "photoTakenTime": {
    "timestamp": "1689929130",
    "formatted": "Jul 21, 2023, 9:25:30 AM UTC"
  },
  "geoData": {
    "latitude": 48.8583,
    "longitude": 2.2945,
    "altitude": 35.0,
    "latitudeSpan": 0.0,
    "longitudeSpan": 0.0
  },
  "geoDataExif": {
    "latitude": 48.8583,
    "longitude": 2.2945,
    "altitude": 35.0
  },
  "url": "https://photos.google.com/photo/...",
  "googlePhotosOrigin": {
    "mobileUpload": {
      "deviceType": "IOS_PHONE"
    }
  }
}

The two dates, photoTakenTime and creationTime, get their own section below. The other fields that matter:

geoData is the location as Google Photos knew it, including any place you set by hand. geoDataExif is the location that was in the file's own EXIF when uploaded. When a photo has no location, both hold zeros: 0.0, 0.0, a spot in the Atlantic Ocean. Treat all zeros as "unknown", not as a real place. More on that in restoring GPS from Takeout.

description is the caption you typed, if any. people lists names you tagged, when present. favorited is true for starred photos. title is the original filename, which is useful because Takeout sometimes shortens the actual filename.

Which date is the right one?

Use photoTakenTime. It is the date the picture was taken, as Google Photos showed it. If you fixed a date inside Google Photos, this field has your fix.

creationTime is when the file was uploaded to Google. For a photo taken and backed up the same day, the two match. For a scan of a 1985 print uploaded in 2021, they are decades apart.

Both are given as a timestamp, which is seconds since 1 January 1970, in UTC. The formatted line is the same instant in readable form, also in UTC.

The album files

Each album folder also has one metadata.json that describes the album itself, not a photo. It has the album title, and sometimes a date and a shared-album flag. It is small and harmless. Tools that import albums, such as immich-go, read it. What happens to albums in Google Takeout explains the folders.

Why they are named supplemental-metadata.json

Older exports named the sidecar IMG_3391.HEIC.json. From 2024 the name became IMG_3391.HEIC.supplemental-metadata.json. Google also cuts the sidecar name before .json at 46 characters, so a Pixel photo ends up with a partner called PXL_20230721_092530123.jpg.supplemental-metada.json. When two photos share a name, the counter goes on the sidecar in a different spot: IMG_3391(1).HEIC pairs with IMG_3391.HEIC.supplemental-metadata(1).json. The details are in supplemental-metadata.json explained.

Can I delete JSON files from Google Takeout?

Yes, but only after you have used them. If you delete the sidecars first, the dates and locations they contain are gone. Your photos will show the download date for good, and the only way to get the information back is to run Takeout again.

If your photos all have good EXIF already, the sidecars add little. You can check with exiftool: exiftool -r -if 'not $DateTimeOriginal' -filename . prints every photo missing an EXIF date. If the list is empty, you can delete them.

For most libraries the list is not empty. The safe order is: merge the sidecar data into the photos, check a few, then delete the .json files. Immich, PhotoPrism and some other self-hosted tools can read Takeout sidecars directly during import, so if that is your destination, keep them until the import is done. The steps are in Can I delete JSON files from Google Takeout?

Which programs read them?

Apple Photos, the Windows Photos app, File Explorer, Finder and phone galleries do not. They read the date inside the image file, find nothing, and use the file date, which is the day you unzipped the export. That is why every Takeout photo shows the wrong date.

Google Photos does not read them either. Immich and PhotoPrism can read them during import; see PhotoPrism and JSON sidecars and Google Photos to Immich.

Why do some photos have no JSON file?

Not every photo gets one. The video half of a Live Photo often has none. Some very old uploads have none. Those photos keep whatever date is inside the file. Why some photos have no JSON file lists the cases and what happens to those photos.

Putting the data back into the photos

This step is called merging. You can do it with exiftool, which reads the sidecar and writes EXIF tags. The command and its pitfalls are in merging JSON metadata into photos. Free scripts such as GooglePhotosTakeoutHelper wrap the same idea.

Takeout JSON Metadata Fixer does it as a desktop app on macOS and Windows.

It reads each sidecar, writes photoTakenTime into the photo's EXIF, sets the file dates to match, and writes the GPS coordinates when they are real rather than zeros. It knows both sidecar naming styles, the cut-off names and the (1) counters, so it does not skip files a filename pattern would miss. Optionally it renames and sorts the photos into folders, and it can write fresh .json sidecars alongside the output for Immich or PhotoPrism. Everything runs on your computer. The first 500 photos are free.

Frequently asked questions

Is there one JSON per photo?

Usually. Photos that appear in several albums have a copy of the sidecar in each album folder. A few photos have no sidecar at all, most often Live Photo clips and files from very old uploads. Those keep whatever date is in the file.

How do I open a JSON file from Google Takeout?

With any text editor: Notepad on Windows, TextEdit on a Mac, or a code editor. It is plain text, not an image, so a photo viewer cannot open it. Opening it changes nothing. How to open a JSON image file has the steps for each system and for phones.

Can Google Photos itself read them back?

No. If you upload the folder back to Google Photos, it ignores the sidecars and uses the EXIF in the files. This is why people who move between two Google accounts also lose dates. See moving Google Photos between accounts.

Are the timestamps in my time zone?

No. They are UTC instants. A tool converts them to a local time when writing EXIF, using your computer's zone. Check that your computer is set to the zone where most photos were taken.

Do the JSON files take much space?

A few hundred bytes to a couple of kilobytes each. Ten thousand of them is roughly 10 MB. Space is not the reason to delete them; clutter is.

What are the Google Takeout photos JSON files?

They are the sidecars described above: one .json per photo or video, plus one metadata.json per album. "Google Takeout JSON files", "JSON files Google Takeout" and "Google Photos JSON files" all mean the same files. They hold the date taken, the location, the caption and the original name that Google Photos kept for each item.

Why does Google Photos give me JSON files instead of putting the date in the photo?

Google exports the file as it was uploaded and puts its own database entry beside it. It does not rewrite your files. The effect is the same for every export, on every system: the date is in the .json, not in the photo, until you merge the JSON files into the photos.

Is supplemental-metadata.json a different kind of file?

No. It is the newer name for the same sidecar. See supplemental-metadata.json explained.