Advertisement

How to Move Google Photos to Immich with Google Takeout and immich-go

By Updated Checked against official sources on 14 Oct 2026

Short answer: Immich still has no built-in Google Takeout importer. The official Immich CLI page recommends the community-maintained tool immich-go for Takeout imports. Export only Google Photos from Takeout as .zip files, download every part, then run immich-go upload from-google-photos against all the parts at once so each photo can be matched with its JSON metadata. Check counts, dates and albums in Immich before you delete anything from Google Photos.

Official-source review — 14 October 2026 UTC: We checked Google’s Takeout help pages, the Immich documentation (CLI, quick start, backup and restore, duplicates, partner sharing, supported formats) and the immich-go README, release page and docs folder on GitHub. Commands below are copied from those pages and marked as examples. We did not run a migration.

What the Google Takeout to Immich route looks like in 2026

The Immich quick start says you can bring in the rest of your Google Photos library, including photos that are not on your phone, through Google Takeout, and adds: “You can use immich-go for this.” The Immich CLI documentation says the same. For a Google Photos takeout, it recommends the community-maintained immich-go tool over its own CLI.

So there are two tools, and they do different jobs:

  • immich-go is a single binary with no runtime dependencies. Its from-google-photos command reads Takeout archives and matches each photo with its JSON metadata.
  • The official Immich CLI (@immich/cli) needs Node.js 22 or later. It uploads folders and can create albums from folder names, but it is not built around the Takeout format. It suits plain folders of photos better.

If you have not set up the server yet, start with our Immich install guide and the Immich software page. If you still need to pick hardware or a NAS OS, see TrueNAS vs Unraid.

Advertisement

Step 1: Request a Google Takeout of Google Photos only

Google’s help page How to download your Google data describes the export. Takeout preselects every product you use, so clear everything except Google Photos.

  1. Sign in at takeout.google.com. Deselect all products, then tick Google Photos. Use the “All data included” control if you only want some albums.
  2. Select Next step and choose a delivery method: an email download link, Google Drive, Dropbox, OneDrive or Box. Google says data sent to a cloud service counts toward your storage there.
  3. Choose a one-time export. The scheduled option repeats every 2 months for a year.
  4. Choose Zip as the file type. Google notes that Tgz may need extra software on Windows. The immich-go best-practices page also recommends ZIP and warns against mixing ZIP and TGZ in one import.
  5. Choose the 50GB archive size. Google says that if your data is bigger than the size you choose, the export is split into several archives, and that picking 50GB makes a split less likely.
  6. Select Create export.

Google says an export can take anywhere from a few minutes to a few days, and most people get the link the same day. The archive expires in about 7 days, and each archive can be downloaded 5 times. Download every part soon after the email arrives. Google also recommends using a desktop computer, not a phone, for downloading Takeout exports.

The number of parts depends on the size of your library, and Google does not publish a formula. Count the parts listed on the download page and make sure you have all of them, named like takeout-001.zip, takeout-002.zip and so on.

What is inside a Google Photos Takeout

Each archive holds media files and JSON files. Google’s Google Photos help page explains three points that matter here:

  • Your computer may give a downloaded file a new date. The original capture time is still kept in the metadata embedded in the file.
  • Extra data, such as comments, goes into a secondary JSON file.
  • Each archive includes archive_browser.html, which describes the file formats.

immich-go uses those JSON files. Its README says from-google-photos matches photos with their JSON metadata. Its upload command reference says it rebuilds Google Photos albums by default and can tag people’s names taken from the JSON. This is why a plain folder upload loses information that a Takeout-aware import keeps.

The JSON for a photo is not always in the same archive as the photo itself. That is why you should pass every part to immich-go in one run instead of importing part by part.

Step 2: Plan storage and create an Immich API key

Storage. You will hold the Takeout archives and the Immich library at the same time. The best-practices import command reads the .zip files directly, so you do not need room for an extracted copy as well. On the Immich side, the backup and restore page lists folders under UPLOAD_LOCATION. library and upload hold the originals. thumbs and encoded-video hold generated files, so expect the library to use more space than the originals alone. Keep the archives until you have verified the import and backed up the Immich library.

API key. The Immich user settings page says you open settings from the user icon in the top right corner, then choose Account Settings. API keys are generated there. The CLI page adds that you can limit a key’s permissions. The immich-go installation page lists the permissions it needs:

API key permissions listed by the immich-go installation docs
Area Permissions
Assets asset.read, asset.statistics, asset.update, asset.upload, asset.copy, asset.delete, asset.download
Albums album.create, album.read, albumAsset.create
Tags and stacks tag.asset, tag.create, stack.create
Server and user server.about, user.read
Admin key only (to pause jobs) job.create, job.read

The v0.32.0 release notes say the asset.replace permission is no longer needed. Treat the API key like a password. If you reach the server from outside your LAN, use a private tunnel rather than an open port. See Tailscale vs WireGuard.

Step 3: Install immich-go and run the Takeout upload

On 14 October 2026, the immich-go releases page marked v0.32.0 (released 25 June 2026) as the latest release. Its notes describe full compatibility with Immich v3.0.0, with v2 still supported. The release offers prebuilt binaries for Windows, macOS, Linux and FreeBSD on x86_64 and ARM, plus a checksums.txt file. Before you extract a binary, compare its hash with that file using our SHA-256 checker. Download it only from the GitHub releases page. If you are unsure whether a mirror is genuine, use our download site checker.

This is the README’s example for a Takeout upload:

immich-go upload from-google-photos --server=http://your-ip:2283 --api-key=your-api-key /path/to/takeout-*.zip

For large takeouts, the best-practices page gives this example:

immich-go upload from-google-photos \
  --server=http://localhost:2283 \
  --api-key=your-api-key \
  --concurrent-tasks=4 \
  --client-timeout=60m \
  --pause-immich-jobs=true \
  --on-errors=continue \
  --session-tag \
  /path/to/takeout-*.zip

The takeout-*.zip pattern passes every part together. --session-tag tags the batch so you can see what was imported and when. --pause-immich-jobs needs an admin-linked key with the job permissions listed above. The best-practices page also recommends testing on a small subset first. One way to do that is the documented --from-album-name option, which imports only one named album.

Albums, archive, trash, partner photos, Live photos and duplicates

These defaults come from the immich-go upload command reference:

immich-go from-google-photos options and defaults
Option Default What it does
--sync-albums true Creates albums that match those in Google Photos
--include-untitled-albums false Includes photos from untitled albums
-a, --include-archived true Imports archived photos
-t, --include-trashed false Imports photos from the trash
-p, --include-partner true Imports photos from your Google partner’s account
--partner-shared-album none Puts partner photos in a named album
--people-tag true Tags assets with people’s names from the JSON
--takeout-tag true Tags assets with the Takeout timestamp
-u, --include-unmatched false Also imports files that have no matching JSON

Albums. Google’s help page warns that recent album changes may not appear in an archive. Finish reorganising albums well before you request the export.

Partner photos. Google partner photos and Immich partner sharing are separate features. In Immich, partner sharing gives another user access to your library, works in one direction only, and leaves out archived and trashed media. If two people are moving to Immich, decide first whether partner photos should be imported into one account or stay with their owner. Setting --include-partner=false avoids importing the same photos twice.

Live and motion photos. Neither the immich-go upload reference nor the Immich supported formats page documents how Live photos or Pixel motion photos come through a Takeout. Check a few of them after the import.

Duplicates. The best-practices page says a restart is safe because immich-go detects files that already exist and skips them. Inside Immich, the duplicates utility finds photos that look visually similar using machine learning. When you keep exactly one photo from a group and trash the others, their metadata is moved onto the photo you kept. The examples page also shows --manage-raw-jpeg=StackCoverRaw and --manage-burst=Stack for stacking RAW+JPEG pairs and bursts.

Common problems the docs mention

  • Missing parts or missing JSON. The best-practices page lists incomplete downloads as a known pitfall. Its first check is ls -la takeout-*.zip to confirm every part is present. If many files are missing, it says to request a new takeout. By default, files without a matching JSON are skipped. --include-unmatched imports them, but those files then have no Takeout metadata.
  • Wrong dates. Your operating system may give downloaded files a new timestamp. Google says the original capture time stays in the embedded metadata, so a date in a file manager can look wrong even when the photo itself is fine. If dates are still wrong in Immich, check first that the photo’s JSON was in one of the parts you imported.
  • Timeouts. The best-practices page gives settings for each network type. On a gigabit LAN, use --concurrent-tasks=16 and --client-timeout=30m. On a slow or unstable link, use 1–2 tasks and --client-timeout=120m. On a NAS or low-power server, use 1–2 tasks, --pause-immich-jobs=true and --client-timeout=180m.
  • HEIC. The supported formats page lists HEIC and HEIF as supported. immich-go also has a --manage-heic-jpeg option for HEIC+JPEG pairs.
  • Failed exports. Google suggests creating a new archive, choosing fewer products, or picking a smaller archive size.

Step 4: Verify before you delete anything from Google Photos

The immich-go best-practices page suggests three checks: compare source and destination counts, spot-check random samples, and confirm that dates, locations and albums came through.

  1. Read the summary that immich-go prints when it finishes, and check its log for errors and skipped files.
  2. Compare the photo and video count in Google Photos with the count in Immich, allowing for the trash and partner items you chose to leave out.
  3. Open 10–20 random photos from different years. Check the capture date, the location and the album.
  4. Check a few Live or motion photos, a few HEIC files and a few videos.
  5. Back up the Immich library, then delete the Takeout archives.

The Immich backup and restore page says: “A 3-2-1 backup strategy is recommended to protect your data.” It also says Immich does not back up your files for you. Its automatic database dumps contain metadata only, not photos or videos. The quick start warns that you must set up backups of everything in UPLOAD_LOCATION yourself. Until that backup exists, Google Photos is your only other copy, so do not delete from it before then.

What we did not test

We did not export a real Google Takeout, install immich-go or run an import. We did not measure speed, the number of Takeout parts, or how much bigger the Immich library is than the archives. We did not check how Live photos, motion photos, edited photos or shared albums come through. Everything above comes from the official pages linked here. Flags change between versions, so run immich-go upload from-google-photos --help on the version you install and compare it with this guide.

Sources

Related guides