Put the real dates back on your Google Photos export
Google Takeout keeps each photo's date, location and caption in a separate JSON file, and most photo apps only read what is inside the photo. Drop the zips here and those details get written back into every photo and video, on this computer. Nothing is uploaded.
Drop your Takeout zips or the extracted folder here
Add every part of the export at once (the files ending -001.zip, -002.zip and so on). A photo and its JSON file are often in different parts.
Your first 50 files are free. $19 unlocks the rest of the export. Works in Chrome, Edge, Firefox and Safari on a computer.
Reading your export
Opening the files you chose.
Your export
Files you added
This only changes the import steps we show at the end. The files are the same.
Photos with a location get the local time of the place they were taken.
Fixing your files
Requests since you started: 0Your files are fixed
Examples of the change. The last one is a photo whose date was corrected in Google Photos: the correction only existed in the JSON file until now.
Each file gets its date, place and caption back inside it
Everything below is written in the tags photo libraries already read, so there is nothing extra to install on the other side.
The date it was taken
Photos get DateTimeOriginal, the capture-date tag that Lightroom Classic, Immich and Windows all read, plus its time zone offset. Videos get their QuickTime creation dates and Apple's CreationDate tag.
Where it was taken
Latitude, longitude and altitude from the JSON file become GPS tags in photos that don't already carry them, so map views work again.
The caption you typed
Descriptions you added in Google Photos go into ImageDescription and XMP dc:description, where Immich, Synology Photos and PhotoPrism look for them.
Local time where you were
When a photo has a location, its time zone comes from those coordinates, so a photo from a trip abroad shows the time on the clock there, not the time at home.
File dates that match
Every file's modified date is set to the moment it was taken when you unzip. Synology Photos and Immich both fall back to that date when a file has no capture date inside it.
A report of every file
fixmytakeout-report.csv lists each file, the JSON it was matched to, what was written, and anything that had no JSON at all.
Finds each photo's JSON even when Google shortened or renamed it
JSON file names are cut to 51 characters, newer exports add .supplemental-metadata, and duplicates put the (1) in a different place. These are real pairs from the issue trackers of two open-source Takeout tools, and the tool handles each of them. How Takeout names its files.
| Photo or video | Its JSON file | Why the name differs |
|---|---|---|
| 20161105_170829.jpg | 20161105_170829.jpg.supplemental-metadata.json | Newer exports add a suffix |
| MVIMG_20191230_232926.jpg | MVIMG_20191230_232926.jpg.supplemental-metadat.json | The whole JSON name is cut to 51 characters |
| Screenshot_20231027_123303_Facebook.jpg | Screenshot_20231027_123303_Facebook.jpg.supple.json | A longer name loses more of the suffix |
| IMG_2710(1).HEIC | IMG_2710.HEIC(1).json | The (1) moves to the end |
| IMG_20140515_063415-edited.jpg | IMG_20140515_063415.jpg.supplemental-metadata.json | Edited copies share the original's |
| IMG_1976.MP4 | IMG_1976.HEIC.supplemental-metadata.json | A Live Photo's video uses the still's |
Your photos stay on this computer, and you can watch that happen
The page downloads its code and the ExifTool engine once, then does all of its reading and writing inside your browser tab. There is no upload button because there is nowhere to upload to.
- Open your browser's developer tools and pick the Network tab (F12 in Chrome and Edge, Cmd+Option+I on a Mac).
- Add your Takeout files and start fixing them.
- Watch the list: after the engine has loaded, no new requests appear while your photos are processed. The counter above the progress bar tells you the same thing.
| Name | Type |
|---|---|
| fixmytakeout.com | document |
| main.js | script |
| engine-worker.js | script |
| exiftool.js | script |
| zeroperl.wasm (the ExifTool engine, 25.4 MB) | wasm |
| While your files are processed: no further requests | |
Try it on 50 of your own photos, then $19 for the whole export
The unlock button only appears after the tool has counted your files, so you never pay for an export the free tier already covers.
First 50 files
Free
- The full fix on your first 50 photos and videos
- The same zip output and CSV report as the paid run
- Check the dates in your own photo app before you pay
Every file
$19 once
- No file limit, in the browser you paid in
- Carries on from file 51, so nothing is done twice
- A PDF import guide for your destination by email, with a link that restores the unlock if you clear your browser
What it leaves alone, and why
Some formats have nowhere standard to put a date, and some files are better untouched. Each of these is listed in the report so nothing disappears quietly.
AVI, MKV, WMV and MPG videos
These formats can't be written safely, so the file is copied as it is and only its modified date is set. What each format can hold.
RAW files (DNG, CR2, NEF, ARW and others)
Left byte-for-byte as they are. Cameras already store the capture date inside RAW files; the file date is set to match.
Videos over 300 MB
The creation dates in the video header are corrected in place without rewriting the file. Location and caption are not added to these.
Albums, favorites and people
Album folders are kept as folders. Favorites and face names from the JSON are not written into files.
.tgz exports
A .tgz can only be read start to finish, so extract it first and add the folder. Choosing .zip when you create the export avoids the step.
Phones and tablets
Exports are usually many gigabytes, which is more than a phone browser will hold. Use a computer.
Import steps for where your photos are going
Each guide covers the exact menus, which date the app reads, and what it does with a file that has none.
Apple Photos
File > Import with Keep Folder Organization, and when Google's direct iCloud transfer is the better route.
Immich
Reads the EXIF capture date, and falls back to the file's modified time when there is none.
PhotoPrism
Reads Takeout JSON, but its code only looks for the older photo.jpg.json names.
Synology Photos
Can't read Takeout JSON files and sorts undated files by modified time.
Lightroom Classic
Add versus Copy, and where Capture Time comes from.
Microsoft Photos
Adding the folder, and the order Windows reads "Date taken" in.
Questions people ask before they start
Does it change my original zips?
No. It only reads them. The fixed files are written into new zips named fixmytakeout-part-001.zip and onward, so your export stays exactly as Google delivered it.
How big an export can it handle?
There is no file limit. It reads straight out of the zips without unpacking them and writes output parts of 1, 2 or 4 GB, so memory use stays about the same whether you have 500 photos or 50,000. Each photo takes a fraction of a second, which puts a large library into hours rather than minutes; you can stop and pick up again later.
What happens if I close the tab halfway?
Finished parts are kept, and the browser remembers which files they held. Add the same files again and the tool offers to carry on from the first part that wasn't finished.
Which browsers work?
Current Chrome, Edge, Firefox and Safari on a computer. Chrome and Edge can write each part straight into a folder you pick. Firefox and Safari save each part to your downloads as it finishes.
What is sent anywhere when I pay?
The checkout request carries your email address, how many files the export has and the destination you picked, so the receipt can include the right import guide. Card details go to Stripe. No file, file name or photo date is sent.
My photos already show the right date. Will it change them?
Not by default. If the date inside a photo agrees with Google's apart from the time zone, the photo's own date is kept. Only missing dates, and dates that disagree by more than a time zone, are replaced.