How to Move Google Photos to Immich
By Josep Mampel Marques, updated
The best way to move Google Photos to Immich is immich-go: Immich's own documentation recommends this community maintained tool for Google Photos Takeouts. You download your library with Google Takeout and run immich-go upload from-google-photos with your server address, an API key and the zip files. It reads the .json files and recreates albums, descriptions and locations as it uploads. PhotoFixer is useful alongside it when you also want a fixed copy of your library on disk, independent of any app.
Route 1: immich-go (recommended for Immich)
- Export your library. In Google Takeout, select only Google Photos, the zip file type and a large archive size. See how to download Google Photos with Takeout. Keep all the zip parts together.
- Get immich-go. Download it from its GitHub releases. The README lists Windows, macOS, Linux and FreeBSD, and says it needs neither Node.js nor Docker.
- Create an API key in your Immich account. The immich-go README links to the list of permissions the key needs.
- Run the import, adapting the address, the key and the path:
immich-go upload from-google-photos --server=http://your-ip:2283 --api-key=your-api-key /path/to/takeout-*.zip - Check the result in Immich: a few photos from different years, a screenshot, a video and one of your albums.
According to its README, immich-go matches photos with their JSON metadata to keep albums, descriptions and locations, creates albums and tags on the server to match the source, and avoids re-uploading files that already exist on the server. The README also calls it an early version that is not yet extensively tested, so keep your Takeout zips until you have checked the library.
Route 2: fix the files first, then upload
This route makes sense if you want a clean copy of your library that works anywhere, not just in Immich: on a drive, in another app later, or as a second backup. The dates, places and captions are then inside the files and on their file dates, instead of in sidecars that only some tools understand.
- Fix the export. Open PhotoFixer, choose every Takeout zip part, pick the time zone and the folder layout ("By year and month" or "Keep Takeout albums") and press Fix my photos. Nothing is uploaded: the work happens in your browser.
- Unzip the result on the computer you will upload from.
- Install the Immich CLI. The Immich docs give
npm i -g @immich/cli. - Log in with your server's API address and a key, as in the docs:
immich login http://192.168.1.216:2283/api YOUR_API_KEY. - Upload the folder:
immich upload --recursive directory/. The docs also show an--albumoption; check the CLI page for what each option does in your version.
What PhotoFixer changes: JPEG photos without EXIF get the date, location and description from the .json; MP4 and MOV videos get their creation date; every file gets its capture time as the file date. JPEG photos that already have EXIF keep everything they have and only get the fields they lack (for example a location added in Google Photos). Video locations are not written.
Which one to choose
| immich-go | PhotoFixer + Immich CLI | |
|---|---|---|
| Reads zips directly | Yes | Yes (PhotoFixer) |
| Recreates Google albums in Immich | Yes, per its README | Only as folders, if you keep the Takeout album layout |
| Leaves you a fixed copy on disk | No, it uploads | Yes |
| Needs a terminal | Yes | Yes, for the CLI upload |
If Immich is your only destination, use immich-go. If you want the library itself fixed, use PhotoFixer and then upload. GooglePhotosTakeoutHelper is a third option that fixes and organizes the files on your computer, with an interactive mode; its README says writing metadata to formats other than JPEG requires ExifTool.
Things to watch
- Use every zip part. A photo and its
.jsoncan be in different parts. See Google Takeout multiple zip files. - Album copies. A photo in several albums appears several times in Takeout. Tools that understand Takeout handle this, but uploading raw folders with a generic tool can create duplicates.
- Sidecar names. Long, duplicated and edited file names have sidecars with different names. Background in Google Takeout JSON files explained.
Looking for an end-to-end encrypted alternative? See Google Photos to Ente.
FAQ
Does Immich read Google Takeout .json files?
Through immich-go. Immich's documentation recommends immich-go, a community maintained tool, for importing a Google Photos Takeout; its README says it matches photos with their JSON metadata to keep albums, descriptions and locations.
Do I need to unzip the Takeout for immich-go?
No. The example in the immich-go README passes the zip files directly, as takeout-*.zip.
Is immich-go official?
Immich's docs call it a community maintained tool. It lives on a personal GitHub account, and its README describes it as an early version that is not yet extensively tested and advises keeping backups.