https://github.com/vchilikov/takeoutfix
CLI tool to fix Google Photos Takeout exports: restore photo/video metadata and normalize filenames for easy migration.
https://github.com/vchilikov/takeoutfix
cli exif exiftool go golang google-photos google-takeout googlephoto googlephotos googletakeout metadata photo-migration takeout
Last synced: 4 months ago
JSON representation
CLI tool to fix Google Photos Takeout exports: restore photo/video metadata and normalize filenames for easy migration.
- Host: GitHub
- URL: https://github.com/vchilikov/takeoutfix
- Owner: vchilikov
- License: mit
- Created: 2026-02-06T08:50:47.000Z (5 months ago)
- Default Branch: main
- Last Pushed: 2026-02-13T00:31:31.000Z (4 months ago)
- Last Synced: 2026-02-13T09:10:20.635Z (4 months ago)
- Topics: cli, exif, exiftool, go, golang, google-photos, google-takeout, googlephoto, googlephotos, googletakeout, metadata, photo-migration, takeout
- Language: Go
- Homepage:
- Size: 145 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# TakeoutFix
Move your Google Photos library without losing important metadata.
TakeoutFix processes Google Takeout ZIP files and restores fields like capture date, location, and description.
[English](README.md) · [Русский](docs/README.ru.md) · [中文](docs/README.zh-CN.md) · [हिन्दी](docs/README.hi.md) · [Español](docs/README.es.md) · [Français](docs/README.fr.md) · [العربية](docs/README.ar.md) · [Deutsch](docs/README.de.md)
## Why TakeoutFix
- Keeps photo/video metadata that is often lost during migration.
- Works directly with standard Google Takeout ZIP exports.
- Guides you through a clear terminal flow from start to finish.
- Built for regular users: no scripting required.
## Quick Start (3 Steps)
1. Export your Google Photos archive from Google Takeout as ZIP files.
2. Put all `*.zip` files into one local folder.
3. Open a terminal in that folder and run the recommended command below.
## Run (Recommended)
Run directly in the folder with your Takeout ZIP files.
macOS/Linux:
```bash
curl -fsSL https://github.com/vchilikov/takeout-fix/releases/latest/download/install.sh | sh
```
Windows (PowerShell):
```powershell
iwr -useb https://github.com/vchilikov/takeout-fix/releases/latest/download/install.ps1 | iex
```
## Manual Run (Optional)
Use this only if you do not want the one-liner installer.
1. Download the latest binary for your OS from [GitHub Releases](https://github.com/vchilikov/takeout-fix/releases).
2. Run it in the folder that contains your Takeout ZIP files.
macOS/Linux:
```bash
./takeoutfix
./takeoutfix --workdir /path/to/folder
```
Windows (PowerShell):
```powershell
.\takeoutfix.exe
.\takeoutfix.exe --workdir C:\path\to\folder
```
## What You Get
After a successful run:
- Your processed media is ready in `./takeoutfix-extracted/Takeout`.
- Metadata is applied to supported photos and videos.
- JSON `Tags` are written to `Keywords` and `Subject`.
- If the JSON capture timestamp is missing or invalid and the filename starts with `YYYY-MM-DD HH.MM.SS`, the date is restored from the filename.
- A detailed run report is saved to `./.takeoutfix/reports/report-YYYYMMDD-HHMMSS.json`.
- You can upload `./takeoutfix-extracted/Takeout` to your new storage.
## Common Issues
- `No ZIP files or extracted Takeout data found in this folder.`
- Place Takeout ZIP parts in the folder root, or run from a folder that already contains extracted Takeout content.
- `Some ZIP files are corrupted. Please re-download them and run again.`
- Re-download broken archive parts from Google Takeout, then rerun.
- `Step 1/3: Checking dependencies... missing`
- Use the recommended one-liner command above, or install `exiftool` manually and rerun.
- `Not enough free disk space to continue.`
- Free up disk space and rerun.
- macOS says the app is not verified
- Remove quarantine and run again:
```bash
xattr -d com.apple.quarantine ./takeoutfix
```