If you are migrating from Google Photos to Immich, immich-go is a powerful tool that handles the heavy lifting, including preserving metadata and organizing albums from your Google Takeout archives.

1. Installation

Windows Setup

  1. Download the Windows release file: immich-go_Windows_x86_64.zip.
  2. Right-click the zip file and select Extract All.
  3. Open PowerShell and navigate to the folder where you extracted the file.
  4. (Optional) Move immich-go.exe to a folder in your system PATH to run it from anywhere.

Check if it is working:

.\immich-go.exe --version

Linux Setup

Download the release file immich-go_Linux_x86_64.tar.gz and run the following:

# Extract the compressed file
tar -xzf immich-go*.tar.gz

# Make it accessible by adding it to the system PATH
sudo mv immich-go /usr/local/bin/

# Check if working
immich-go --version

2. Preparing for the Upload

Before running the upload command, ensure you have the following ready:

  • Open your terminal or PowerShell in the directory where your Google Takeout zip files are located. No need to unzip them.
  • Run ls (Linux) or dir (Windows) to verify you see your takeout-*.zip files.
  • API Keys: Navigate to Account Settings > API Keys in your Immich web interface. Create a full permission key.
    • If uploading to your own account: You only need your API key.
    • If uploading for another member: You need both your Admin API Key and the Member's API Key.

3. Running the Upload Command

It is highly recommended to perform a "dry run" first to ensure there are no connection or permission issues.

Step A: The Dry Run

This command simulates the upload without actually moving any data. (Windows users: use .\immich-go.exe instead of immich-go if not in your PATH).

immich-go upload from-google-photos \
  --include-unmatched \
  --include-untitled-albums \
  --server=https://[server-ip-or-domain]:[port] \
  --admin-api-key=[Your-Admin-Key] \
  --dry-run \
  --api-key=[Member-API-Key] \
  takeout-*.zip

Step B: The Actual Upload

If the dry run finishes without errors, remove the --dry-run tag to begin the process.

immich-go upload from-google-photos \
  --include-unmatched \
  --include-untitled-albums \
  --server=https://[server-ip-or-domain]:[port] \
  --admin-api-key=[Your-Admin-Key] \
  --api-key=[Member-API-Key] \
  takeout-*.zip

The tool will now process all zip files in the location and upload your photos and videos to the Immich server.