📸 Breaking Up with Google: Importing Your Google Photos into Immich

📸 Breaking Up with Google: Importing Your Google Photos into Immich

Previously in our Breaking Up with Google series, we set up Immich, our self-hosted photo and video library that lets us take control of our digital memories.

But an empty library isn’t much fun.
So now that Immich is installed and running, it’s time for the big step: filling it with your photos.

This post walks through how to export your library from Google Photos via Google Takeout, and then import it into Immich - preserving your albums, timestamps, and metadata.


☁️ Step 1: Request Your Google Photos Takeout

Before we can move your data into Immich, we need to get it out of Google.

  1. Go to Google Takeout.
  2. Click “Deselect all”, then scroll down and enable Google Photos only.
  3. Choose All photo albums or handpick a few specific ones.
  4. Click Next step.
  5. Choose how you want the export delivered — email link, Google Drive, Dropbox, etc.
  6. Set File type to .zip and choose a chunk size (10 GB is usually safe, although I did use 2Gb files for mine).
  7. Click Create export.

Google will take a while - a few hours, sometimes days - to bundle everything up.
When it’s ready, you’ll get an email with a link to a download page.

Google Takeout request email

Once you click on the link and sign in, you can download one or more ZIP files named something like takeout-001.zip, takeout-002.zip, and so on.

From the Google Takeout site, once the download is ready.

🔑 Step 2: Get Your Immich API Key

Now, let’s give our import tool permission to talk to your Immich server.

  1. Log in to your Immich web dashboard.
  2. Navigate to Settings → API Keys.
  3. Click Create New Key.
  4. Give it a name like “Google Import”.
  5. Copy the generated API key somewhere safe — you’ll need it soon.
⚠️ Immich only shows API keys once, so make sure you store it securely.

🧰 Step 3: Download the Import Tool

We’ll be using immich-go - a community CLI tool that makes importing Google Takeout archives into Immich painless.

It can even read directly from your ZIP files without extracting them first, which is great for large libraries.

Download the correct version for your OS:

  • Windows: immich-go-windows-amd64.zip
  • macOS: immich-go-darwin-arm64.tar.gz
  • Linux: immich-go-linux-amd64.tar.gz

Extract it somewhere convenient (like your Downloads folder) and open a terminal or PowerShell window in that directory.


🗂 Step 4: Organize Your Takeout Files

Place all your Google Takeout ZIPs in one folder.
You don’t need to extract them - immich-go can read them directly.

Example:

/path/to/Takeout/
├── takeout-001.zip
├── takeout-002.zip
└── takeout-003.zip


🚀 Step 5: Run a Dry-Run Import

Before uploading thousands of files, let’s test everything.

Run this command (update the server URL and API key to match your setup):

./immich-go \
  --server=http://your-immich-server:2283 \
  --key=YOUR_API_KEY \
  upload \
  from-google-photos \
  --dry-run \
  /path/to/Takeout/

This performs a dry run — it connects to Immich, scans your ZIPs, and lists what it would import, without actually uploading anything.
Check for errors or connection issues.


🏗 Step 6: Import for Real

Once the dry-run looks clean, remove --dry-run and start the real import:

./immich-go \
  --server=http://your-immich-server:2283 \
  --key=YOUR_API_KEY \
  upload \
  from-google-photos \
  /path/to/Takeout/

Grab a coffee.
If you have hundreds of gigabytes, this may take several hours - or days. But immich-go is resilient, so you can stop and resume without losing progress.


✅ Step 7: Verify in Immich

After the import finishes:

  1. Log into Immich’s web or mobile app.
  2. Browse your timeline to confirm photos and videos show up with the right dates.
  3. Check that albums, favorites, and tags carried over correctly.
  4. Back up your Takeout ZIPs - just in case you ever need to redo the import.

⚙️ Tips & Gotchas

  • Duplicates: immich-go hashes files to detect duplicates automatically.
  • Metadata: Don’t delete the .json files inside your Takeout - they contain essential metadata (camera, GPS, timestamps).
  • Performance: Run imports from a machine on the same network as your Immich server to speed things up.
  • Storage: Make sure your Immich volume has enough free space - photos add up fast.

💬 Wrapping Up

That’s it! You’ve successfully migrated your Google Photos library into Immich.
You now own your data, your memories, and your privacy.

In the next part of the Breaking Up with Google series, we’ll explore backing up Immich, ensuring your new self-hosted photo library stays safe for years to come.

If you missed it, check out Installing Immich to get your server up and running.


About the author

Tim Wilkes is a UK-based security architect with over 15 years of experience in electronics, Linux, and Unix systems administration. Since 2021, he's been designing secure systems for a telecom company while indulging his passions for programming, automation, and 3D printing. Tim shares his projects, tinkering adventures, and tech insights here - partly as a personal log, and partly in the hopes that others will find them useful.

Want to connect or follow along?

LinkedIn: [phpsytems]
Twitter / X: [@timmehwimmy]
Mastodon: [@timmehwimmy@infosec.exchange]


If you've found a post helpful, consider supporting the blog - it's a part-time passion that your support helps keep alive.

⚠️ Disclaimer

This post may contain affiliate links. If you choose to purchase through them, I may earn a small commission at no extra cost to you. I only recommend items and services I’ve personally read or used and found valuable.

As an Amazon Associate I earn from qualifying purchases.