Google Takeout Explainer Updated October 2026
Every photo and video in a Google Photos Takeout comes with a small .json file next to it. It holds what Google Photos knows about that item beyond the file itself: the date and place Google Photos shows (including any you corrected), the caption, the people tagged, and whether it was a favourite. Your photos are not broken without it — but that information is only in the .json, so do not delete those files until it has been written back into the photos. The simplest way to do that on a Mac or PC is FolioSort, free with no file limit; on the command line, GooglePhotosTakeoutHelper Neo; and if you are moving to Immich, immich-go.
FolioSort makes this page and one of the tools on it. Google does not publish a specification for these files; what follows comes from Google's help pages and from the documentation and source code of the open-source tools that read them, checked in October 2026.
Google's own explanation is one paragraph on its "How to download your Google data" help page: the operating system may give each downloaded file a new timestamp, but the photo or video metadata still has the original timestamp preserved in the metadata embedded within the files. Any additional metadata that isn't from the original file, like comments within Google Photos, are downloaded to a secondary JSON file.
So two different things are going on when a Takeout looks wrong:
.json. Google says an edited date stays in Google Photos: if you share the photo to other apps or download it, the photo may show the original date and time saved by your camera.
That second group is why the .json files matter, and why a library rebuilt without them ends up with a pile of photos on the day of the download. How common each case is, across 154 real exports: what is inside a real Google Takeout.
A typical photo sidecar, shortened. Fields that are not set (a favourite, an archived photo, tagged people) are simply missing.
{
"title": "PXL_20230806_181530412.jpg",
"description": "Sunset at the lighthouse",
"imageViews": "4",
"creationTime": { "timestamp": "1691691200", "formatted": "10 Aug 2023, 18:13:20 UTC" },
"photoTakenTime": { "timestamp": "1691345730", "formatted": "6 Aug 2023, 18:15:30 UTC" },
"geoData": { "latitude": 38.6916, "longitude": -9.2160, "altitude": 12.0, "latitudeSpan": 0.0, "longitudeSpan": 0.0 },
"geoDataExif": { "latitude": 38.6916, "longitude": -9.2160, "altitude": 12.0, "latitudeSpan": 0.0, "longitudeSpan": 0.0 },
"people": [ { "name": "Ana" } ],
"favorited": true,
"url": "https://photos.google.com/photo/…",
"googlePhotosOrigin": { "mobileUpload": { "deviceType": "ANDROID_PHONE" } }
}
| Field | What it holds |
|---|---|
photoTakenTime | The capture date Google Photos shows, including a date you corrected. timestamp is Unix time in seconds, in UTC, stored as text; formatted is the same moment written out in your account's language. This is the field every tool uses for the date. |
creationTime | A second timestamp that is not the capture date — in real exports it is usually later. The tools ignore it for dating. |
geoData / geoDataExif | Location. geoDataExif is the GPS the camera recorded; geoData is the location Google Photos shows, which can be estimated or added by you. All zeros means no location, not a place in the Atlantic. |
title | The file name as it was uploaded — the only full-length name when Takeout shortened the file's own name. |
description | The caption typed in Google Photos. |
people | Names of the faces you tagged. |
favorited, archived, trashed | Flags, present only when true. |
url, imageViews, googlePhotosOrigin | The item's link on photos.google.com, a view count, and where it came from (a phone upload, partner sharing). |
Because the timestamp is UTC and the file carries no time zone, a tool has to choose how to write it back: as UTC, or converted to local time. Photos taken near midnight can move a day if this is done naively.
Most problems pairing photos with their .json come from how Takeout names them.
IMG_1234.jpg.json. Exports since late 2024 add a suffix: IMG_1234.jpg.supplemental-metadata.json..json included, is capped at 51 characters, so long names lose their end — sometimes in the middle of the suffix, as in PXL_20240817_202602411.mp4.supplemental-metada.json. The photo's own name can be shortened too; the full original name survives only in the title field.(1) moves. When two photos share a name, the second is IMG_3479(1).JPG but its sidecar is IMG_3479.JPG(1).json — or, in newer exports, IMG_3479.JPG.supplemental-metadata(1).json.-edited — with one sidecar for both. The suffix is translated into your account's language: -bearbeitet, -modifié, -modificato, -editado and so on.Photos from YYYY folder, and again in the folder of each album it belongs to. Album folders also contain one album-level file — metadata.json, or its translation (métadonnées.json, Metadaten.json, metadati.json) — with the album's title..json can end up in a different .zip from the photo. Extract every part into the same folder before you try to match anything.Yes — after their data is in the photos, not before. Deleted first, you lose for good:
Some tools also depend on them: immich-go, for example, skips photos that have no matching .json unless you tell it otherwise. Once a tool has written the dates, places and captions into the files, the sidecars only hold what it did not write — tagged people or flags, depending on the tool — and you can decide whether that still matters.
The tools that read Takeout sidecars, and what each one actually writes.
| Tool | How you use it | Writes into the photo files | Price |
|---|---|---|---|
| FolioSort | A Mac and Windows app: point it at the unzipped export and click Scan, then run the import | Date and GPS, plus favourites as a 5-star rating, tagged people as keywords, and captions | Repair free, no file limit; Pro €29.99 once for date folders and album-duplicate clean-up |
| GooglePhotosTakeoutHelper Neo | Open-source command-line tool, the maintained fork of GPTH | Date, GPS and captions (needs ExifTool for anything but JPEG) | Free |
| GooglePhotosTakeoutHelper (original) | Command line; sorts photos into date folders | No — uses the date for sorting and the file date only | Free |
| immich-go | Command line, for importing into an Immich server | No — sets the metadata in Immich, files unchanged | Free |
| ExifTool | Command line; can read a JSON file as a tag source, but you write and test the command yourself | Whatever your command copies | Free |
| Metadata Fixer | Commercial desktop app | Date, title/description and GPS, per its own site | Paid |
Full comparison, including when each of the others is the better choice: best tool to fix Google Takeout dates and JSON files. Moving to a self-hosted server: Google Photos to Immich, step by step.
Extract every .zip part of the export into the same folder.
Open the Google Photos screen, choose that folder as the Takeout Folder and click Scan. Each photo is paired with its .json — including the .supplemental-metadata names, shortened names and (1) duplicates — and you see how many were Matched and which are Orphans, with the reason for each.
Choose a Destination Folder, keep Copy so the export stays as Google gave it, and run the import. The photos are written with their real dates and places inside them; the export itself is only read.
Check the result in any app that reads EXIF. Once you are happy, the .json files have done their job.
They are sidecar files, one per photo or video, holding what Google Photos knows beyond the file itself: the capture date and location it shows (including any you corrected), the caption, tagged people and flags such as favourite. Google exports them separately because that information is not inside the original file.
Usually not. Google says the original timestamp is preserved inside the files; what changes is the file-system date shown in Finder or File Explorer. The dates that exist only in the .json are those of images that never had one inside — often from messaging apps, screenshots or scans — and any date you edited in Google Photos.
Only after their data has been written into the photos. Deleted first, you lose the dates of photos without one inside, dates and places you corrected or added, captions, tagged people, favourites, and the full name of files Takeout shortened.
It is the newer name for the same sidecar: exports since late 2024 name it IMG_1234.jpg.supplemental-metadata.json instead of IMG_1234.jpg.json. Because the whole name is capped at 51 characters, long names can be cut inside the suffix, giving endings like .supplemental-metada.json.
Edited copies (ending in -edited or its translation) share the original's sidecar, the video half of a Live or motion photo usually has none, and a photo's .json can be in a different zip part of a split export. Extract all parts into one folder before matching.
Yes, it is plain text: TextEdit, Notepad or any browser will show it. The timestamp is in Unix seconds, UTC; the formatted line next to it is the same date in your account's language.
On a Mac or Windows PC, FolioSort pairs every photo with its .json and writes the date, GPS, favourites, tagged people and captions into the files, in a normal window and for free with no file limit. On the command line, GooglePhotosTakeoutHelper Neo writes date, GPS and captions; for an Immich server, immich-go reads the sidecars during import.
FolioSort, GooglePhotosTakeoutHelper, Metadata Fixer, immich-go, PhotoMove and ExifTool on one page — including the cases where another tool is the better choice.
The immich-go command, the flags that skip files, and when to fix the files before uploading.
From requesting the export to a dated, de-duplicated library on your own drive.
The Google Photos screen, field by field: Matched, Orphans, folders and duplicates.
FolioSort pairs every photo with its .json and writes the dates, places, captions and people into the files — free, with no file limit, on Mac and Windows.