immich-go vs Takeout JSON Metadata Fixer: When You Need Which
immich-go uploads a Google Takeout into an Immich server and is the right tool for that. Takeout JSON Metadata Fixer writes the metadata into the files themselves. They solve different problems, and sometimes you want both.
If your destination is Immich, use immich-go. It was written for that, it is free and open source, and it does things a general fixer cannot, like creating your albums on the server and tagging the people Google recognised. This page is not going to talk you out of it.
The comparison matters because the two tools do different things, and people reach for the wrong one. immich-go moves your library into Immich and hands Immich the metadata. Takeout JSON Metadata Fixer writes the metadata into the photo files and leaves you with a folder that works anywhere. Which one you need depends on where the photos are going, and whether they will ever go anywhere else.
What immich-go does
immich-go is "an open-source tool designed to streamline uploading large photo collections to your self-hosted Immich server." It is licensed under the AGPL. You download a single binary for Windows, macOS, Linux or FreeBSD; no NodeJS, no Docker. It is a command-line tool, and its own installation guide lists "basic command line knowledge" as a prerequisite. You need a running Immich server and an API key.
Its from-google-photos command reads the Takeout, either the zips or an extracted folder, and runs what its docs call a "puzzle solver" to match each media file to its JSON, because "Google Photos has a notoriously complex way of naming files, especially when you have edited photos, bursts, or duplicates." From the JSON it takes the capture date, GPS coordinates and description and applies them to the asset in Immich. With --sync-albums it recreates your albums. With --people-tag it creates people/Name tags. It can import archived, trashed and partner-shared photos on request, upload files that matched no JSON with --include-unmatched, skip files already on the server by checksum, and stack RAW+JPEG pairs and bursts.
What the docs do not describe is writing any of that into the file. The date and GPS go to the Immich asset. The JPEG itself, as far as the documentation says, is uploaded as it came out of Takeout.
What Takeout JSON Metadata Fixer does
It reads every sidecar and writes the date, time and location into the photo or video itself, handling the truncated names, (1) duplicates, edited copies and UTC timestamps along the way. Then it organises: renames with date and place, sorts into year/month or place folders, converts HEIC to JPG with the metadata kept, keeps Live Photo pairs together, converts old AVI and MOV to MP4, and lets you set the date and place by hand where there was no JSON. It is a desktop app with no command line, it runs offline with no account, and the first 1000 photos are free.
It does not talk to Immich. It produces a clean folder. What you do with the folder is up to you.
Side by side
| immich-go | Takeout JSON Metadata Fixer | |
|---|---|---|
| Price | Free, open source (AGPL) | First 1000 photos free; Premium USD 19.99 once |
| Install | Download a binary from GitHub releases; needs a running Immich server and API key | Mac App Store, Microsoft Store, Windows installer, .deb / .rpm |
| Needs the command line | Yes | No |
| Runs offline, photos stay on your computer | Uploads to your own Immich server, wherever that is | Yes, nothing leaves the machine |
Truncated sidecar names and (1) duplicates | "Puzzle solver" matches edited photos, bursts and duplicates; truncated names not named in the docs | Both built in |
| Edited copies with no sidecar of their own | Handled by the puzzle solver | Built in |
| Writes date and GPS into the file | Not described; metadata is applied to the Immich asset | Yes, EXIF in JPG, HEIC, PNG and videos |
| HEIC to JPG with metadata kept | No | Yes |
| Renames with the place | No | Yes |
| Folders by place | No (albums in Immich instead) | Yes: year/month, year, or by place |
| Sets date and place by hand | No | Yes, per photo or folder |
| Albums and people tags into Immich | Yes | No |
| Languages | Not stated | English, German, French, Spanish, Italian, Portuguese (Brazil), Japanese, Korean, Chinese (Simplified) |
| Windows / Mac / Linux | All three plus FreeBSD | All three |
When you need immich-go
You run Immich and you want your Google albums, descriptions and people tags to land there. Nothing else does that. It handles very large libraries, it can resume, it avoids re-uploading what is already on the server, and it reads from the zips directly, extracted or not. If Immich is the final home of your photos and you are comfortable typing a command with a server address and an API key, this is the tool, and it costs nothing.
When you need Takeout JSON Metadata Fixer
The photos are going somewhere that reads EXIF and not a database. Apple Photos, Windows, Lightroom, a Synology or QNAP NAS, a USB drive, an Android phone, or a plain folder you intend to keep for twenty years. None of those can ask Immich what the date was. The date has to be in the file.
You want the files themselves to make sense: named by date and place, sorted into folders, HEIC converted so a Windows PC opens them. immich-go does not touch the files.
You have photos with no JSON and want to fix them by hand, or you want to see and check the result before it goes anywhere.
You do not want a terminal.
When you want both
This is more common than it sounds. Run Takeout JSON Metadata Fixer first, so every file carries its own date and GPS. Then upload the result to Immich with immich-go's from-folder command, or with the Immich app. Immich reads the EXIF it finds. The benefit is that if you ever leave Immich, or restore from a backup of the raw files, the dates are still there. The cost is that you lose the Google album and people mapping that from-google-photos would have given you, unless you also keep the original Takeout and run immich-go against it for albums alone.
If you already imported with immich-go and some photos came in with no location, why immich-go is missing geotags explains the two causes. For the whole Immich path, from export to timeline, see Google Photos export to Immich.
For the other tools in this space, see Google Takeout metadata tools compared and GooglePhotosTakeoutHelper vs Takeout JSON Metadata Fixer.
Checked on 18 September 2026: immich-go claims are from the README, installation guide, technical details and upload commands overview in the simulot/immich-go GitHub repository, and its licence from the repository listing. Takeout JSON Metadata Fixer claims are from our own listing copy for version 1.5.1.