Immich, a self-hosted destination for a Google Photos library migration

Say you have 200,000 photos in Google Photos. Google Takeout will hand you roughly 400 GB of numbered zip files, split into 2 GB or 10 GB chunks, and inside each one you get IMG_1234.HEIC next to a matching IMG_1234.HEIC.supplemental-metadata.json. Open the HEIC in any photo viewer and it might show today’s date instead of the day you took it. That is because Google keeps the original capture time, GPS, description, and album membership in the sidecar JSON, not in the EXIF header of the file itself. This is the trap that catches everyone the first time. The best apps for Google Photos migration understand the Takeout format, read the sidecar, write the date and location back into the file, and rebuild your albums on the other side. We tested seven desktop tools that get this right.

What to look for in a Google Photos migration tool

Five criteria decide whether your library survives the move.

  1. Reads Takeout sidecar JSON. The tool has to open photo.jpg.json (or the newer .supplemental-metadata.json), not ignore it.
  2. Restores EXIF dates and GPS. Capture time, timezone, and coordinates from the sidecar must be written into the file’s EXIF or into the destination library’s database. Otherwise every photo lands as “today”.
  3. Recreates albums. Takeout stores album membership as folder names plus a metadata.json per album. A good tool rebuilds those albums in the new library.
  4. Handles Live Photos and motion photos. Google splits Pixel motion photos into a still and a .MP4. The importer should either merge them back or link the pair.
  5. Deduplicates. Takeout duplicates photos across every album they belong to, and it splits multi-part archives that overlap. The tool has to hash content and skip repeats.

Quick comparison

Tool Best for Preserves albums Preserves dates Free tier
Google Takeout Exporting the library in the first place Yes (as folders) In sidecar JSON only Free
Immich The polished self-hosted destination Yes Yes (via immich-go) Free, self-hosted
PhotoPrism A polished self-hosted destination with strong indexing Yes Yes Free community edition
immich-go Fixing Takeout before it hits Immich Yes Yes Free
Ente End-to-end encrypted cloud destination Yes Yes 10 GB free, paid above
Apple Photos migration tool iCloud users staying inside Apple Partial Yes Free (needs iCloud)
PhotoStructure Commercial self-hosted with a friendly installer Yes Yes Free personal edition
rclone Skipping Takeout entirely for libraries too big to zip No album metadata Yes (metadata only) Free

The tools

1. Google Takeout

This is not optional. Every migration starts here, because it is the only way to get your originals out at full resolution. Sign in at takeout.google.com, untick everything, tick Google Photos, and choose whether you want the whole library or specific albums. Pick .zip at 50 GB per archive if your connection can handle it (fewer files to shuffle), or 2 GB if you are downloading to a phone or a spotty link. Google will email you a download link when the export is ready. For a 400 GB library expect several hours to a couple of days.

Two things to know before you click Export. First, the download links expire after seven days, so plan the disk space in advance. Second, if you check “Transfer to another cloud account” you can push straight into OneDrive, Dropbox, or Box, which is often faster than downloading and re-uploading.

Where it falls short: Dates live in the sidecar, not in EXIF. Albums are folders with a metadata.json, not a portable format. Very large libraries often fail partway through and force a restart. Live Photos come split into two files.

Pricing: Free.

Platforms: Web.

Download: Website

Bottom line: Start here, but do not expect Takeout to hand you a working library. It hands you the raw materials.

2. Immich

Immich is the self-hosted photo server most people land on after leaving Google Photos. It runs in Docker on Linux, Windows (via WSL2 or Docker Desktop), or macOS, it has a mobile app that backs up new photos automatically, and the web UI feels close to what Google Photos users are used to: timeline scroll, faces, places, memories. The 2.0 release cleared the last major “beta” caveats and the project publishes stable releases on a regular cadence.

For a migration, Immich matters because it has an official Google Takeout importer inside the web UI and, more importantly, a companion CLI (see immich-go below) that is far better at the messy parts than the built-in importer.

Where it falls short: You have to run the server yourself. If Docker is unfamiliar, plan a weekend. Machine-learning features (faces, smart search) want a machine with reasonable CPU or a small GPU to finish indexing a big library in days rather than weeks.

Pricing: Free and open source (AGPL). Optional paid license for organizations.

Platforms: Linux, Windows (WSL2 / Docker Desktop), macOS.

Download: Website - GitHub

Bottom line: The pick for anyone who wants a Google Photos replacement they run themselves and share with a household.

3. PhotoPrism

PhotoPrism is the polished commercial-quality alternative to Immich in the self-hosted world. Same Docker install pattern, same “point it at a folder, let it index” workflow, but with a heavier focus on classification, keyword search, and RAW handling. If you shoot in RAW and want on-device AI tagging, PhotoPrism has been doing that longer than most.

For Google Takeout migration, PhotoPrism reads sidecar JSON on import (with the --json flag on the index command) and rebuilds album folders. It does not have a dedicated Takeout importer the way Immich does, so most people run immich-go or a small script first to fix EXIF dates, then point PhotoPrism at the cleaned tree.

Where it falls short: The mobile app is more limited than Immich’s; heavy uploaders often keep using a WebDAV client or a sync tool for their phone. The community edition is capped on some multi-user features.

Pricing: Free community edition. Membership tiers from a few euros a month unlock extra features and cloud sync helpers.

Platforms: Linux, Windows (via Docker), macOS.

Download: Website - GitHub

Bottom line: Pick this if you value classification and RAW workflow more than the mobile experience.

4. immich-go

immich-go is a small command-line tool by Simulot that exists for one reason: the built-in Immich Google Takeout importer misses things. immich-go reads every zip in your Takeout export, matches JPEGs to their sidecar JSON, writes the original capture date and GPS back into the file, rebuilds album membership through the Immich API, dedupes across archives, and handles motion photos and Live Photos as pairs.

Typical command looks like this: immich-go upload from-google-photos --server=http://localhost:2283 --api-key=xxx /path/to/takeout-*.zip. Point it at the raw zips (do not unzip them first) and let it work. On a 400 GB library that took Takeout two days to prepare, immich-go typically finishes the upload in a similar window bounded by disk and network.

Where it falls short: Command-line only, no GUI. It is Immich-only, so this does not help you if you picked PhotoPrism or Ente.

Pricing: Free and open source.

Platforms: Linux, Windows, macOS (single binary per platform).

Download: GitHub

Bottom line: If your destination is Immich, this is the tool that turns “the import kind of worked” into “everything landed on the right date in the right album”.

5. Ente

Ente is the option for people who want a Google Photos replacement in the cloud, encrypted end to end, without running any server themselves. It ships iOS, Android, desktop (Linux, Windows, macOS), and web clients, and the desktop app has a Google Takeout importer built in: point it at your unzipped Takeout folder and it reads the sidecar metadata as it uploads.

Ente is a commercial service (Paris-based, source available on GitHub), so unlike Immich or PhotoPrism you are paying someone else to keep the disks spinning. The upside is you get real backups, real availability, and a mobile experience that is genuinely close to Google Photos, without Google seeing any of your pixels.

Where it falls short: Not free at scale. The 10 GB free tier is a trial, not a home for 400 GB. Server-side machine learning happens on-device to preserve encryption, so face grouping runs on your phone and takes time to finish on a big library.

Pricing: 10 GB free. Paid plans start around $2.99/month for 50 GB, roughly $8/month for 1 TB, with annual discounts.

Platforms: Linux, Windows, macOS, iOS, Android, web.

Download: Website - GitHub

Bottom line: The pick for anyone who wants encrypted cloud without becoming a sysadmin.

6. Google Photos to Apple Photos migration tool

If you are an iCloud subscriber and your endgame is Apple Photos, use Apple’s own tool. Sign in to privacy.apple.com, pick “Transfer a copy of your data”, and choose Google Photos as the source and iCloud Photos as the destination. Apple runs the transfer server-side against Google’s Data Transfer Project API, so nothing downloads to your Mac. Capture dates and locations come across. Albums come across too, though shared albums and Live Photos have caveats worth checking in Apple’s support notes.

For anyone who already lives in the Apple ecosystem (iPhone, Mac, Apple TV photo screensavers), this saves you the Takeout dance entirely. Just make sure your iCloud plan has enough headroom before you start; the transfer will happily push you over your quota.

Where it falls short: Apple ecosystem only. Requires an iCloud plan large enough to hold the incoming library. Transfer can take a few days to a week for large libraries, running in the background.

Pricing: Free to use the transfer tool. iCloud storage priced separately: 50 GB for $0.99/month, 200 GB for $2.99/month, 2 TB for $9.99/month, 6 TB and 12 TB tiers for heavier libraries.

Platforms: Web-driven, delivers into iCloud Photos on Mac, iPhone, iPad, and Windows via the iCloud client.

Download: Website

Bottom line: The path of least resistance for iPhone owners who want their photos to keep showing up on every Apple device.

7. PhotoStructure

PhotoStructure is the underrated commercial self-hosted option. One installer, no Docker required, GUI on every desktop platform, and a design that treats “import 400 GB from Google Takeout” as a first-class use case rather than an afterthought. It reads sidecar JSON, restores dates, dedupes aggressively (SHA-1 by content, not filename), and handles the case where you have the same photo in five Google Photos albums plus another copy on an old external drive.

The trade-off compared to Immich is a smaller ecosystem: fewer integrations, no Docker-native deployments for people who want them, no Kubernetes helm chart. The trade-off in your favour is that it installs like a regular desktop app and just runs.

Where it falls short: Paid for anything beyond a single library. Mobile app is a browser wrapper rather than a native client. Development pace is slower than Immich or PhotoPrism.

Pricing: Free personal edition. Paid Plus tier for multi-library and hosted sync starts at $7/month.

Platforms: Linux, Windows, macOS.

Download: Website

Bottom line: Pick this if you want to avoid Docker and you are happy paying a small fee for a self-hosted photo manager that just works.

8. rclone

rclone is the escape hatch when Google Takeout keeps timing out. For libraries north of a terabyte, or for Google Workspace accounts where Takeout is unreliable, rclone can talk to the Google Photos API directly with rclone copy and pull the originals album by album. You get files with correct EXIF dates (rclone pulls the “full resolution” versions and rewrites the metadata it can), you get a folder per album, and you can resume the transfer if it drops halfway.

The catch is that the Google Photos API strips some metadata on download (this is Google’s rule, not rclone’s), and it does not expose album metadata JSON the way Takeout does. So albums come across as folders, but tags and descriptions can go missing.

Where it falls short: Command-line only, and you have to create your own Google Cloud project and OAuth client to get an API key that will not hit rate limits, which is a real one-time setup cost. Metadata is thinner than Takeout.

Pricing: Free and open source.

Platforms: Linux, Windows, macOS (single binary).

Download: Website - GitHub

Bottom line: Use this when Takeout has failed twice and you need a way to pull the library without another zip export.

How to pick the right one

Everyone starts with Google Takeout. Even if you plan to migrate cloud-to-cloud, generate a Takeout as a backup first. Storage is cheap; regretting the missing copy is not.

For self-hosting with the most polished result, use Immich plus immich-go. Spin up Immich in Docker, generate an API key, and let immich-go stream the Takeout zips into it. This is the workflow with the fewest lost dates and the fewest broken albums in our tests.

For polished commercial-grade self-hosting, use PhotoPrism. Better RAW handling, better keyword search, weaker mobile app. Reasonable pick if you shoot with a real camera as well as a phone.

For end-to-end encrypted cloud, use Ente. You pay for storage but you never run a server. The Takeout importer is built into the desktop client.

For iPhone users staying in the Apple ecosystem, use Apple’s Google Photos to Apple Photos migration tool. Do not touch Takeout at all. Kick the transfer off from privacy.apple.com and check back in a week.

For anyone with 1 TB or more that Takeout keeps timing out on, use rclone. Accept the metadata trade-off and pull the library directly from the API.

For anyone who wants a desktop app rather than a Docker Compose file, use PhotoStructure. Install it, point it at your Takeout folder, walk away.

FAQ

How do I export all my Google Photos?

Go to takeout.google.com, untick everything, tick “Google Photos”, and choose whether to include the whole library or specific albums. Pick the .zip format at 50 GB per file if your connection is fast, or 2 GB per file if you are on a slow or unreliable link. Google prepares the export and emails a download link when it is ready. The links expire in seven days, so make sure you have the disk space lined up before you start.

Does Google Takeout preserve photo dates?

Yes and no. Takeout preserves the original capture date, GPS, and description, but it stores them in a sidecar JSON file next to each photo (for example IMG_1234.HEIC.supplemental-metadata.json), not inside the EXIF header of the photo itself. If you import the JPEGs into another library without also processing the sidecars, every photo will show as being taken on the day of import. Tools like immich-go read the sidecar and rewrite the correct date back into the file.

What is the best replacement for Google Photos?

For self-hosting, Immich comes closest to the Google Photos experience: timeline, faces, places, memories, and a strong mobile app that auto-backs up new shots. For an encrypted cloud replacement, Ente is the closest match without running your own server. For Apple-ecosystem users, iCloud Photos via Apple’s migration tool is the smoothest handoff. There is no single “best” answer; the right pick depends on whether you want to run infrastructure, pay a subscription, or stay inside Apple.

Is Immich free?

Yes, Immich is free and open source under the AGPL license. You run it yourself on your own hardware (a mini PC, a NAS, an old laptop, a small VPS), so the only cost is the machine and the electricity. The Immich team offers an optional paid license for organizations and businesses that want commercial support, but for a household or a single user, no payment is involved.

Can I migrate my Google Photos albums to Apple Photos?

Yes. Apple’s official tool at privacy.apple.com transfers Google Photos into iCloud Photos and brings across capture dates, locations, and albums. Shared albums and Live Photos have some caveats (shared albums do not always carry over as shared; motion photos may split), which Apple’s support documentation lists in full. You need an iCloud+ storage plan large enough to hold the incoming library before you start.

How long does a Google Photos migration take?

The bottleneck is almost always the Takeout export itself. For a 100 GB library, expect several hours of preparation and a few hours of download. For a 400 GB library, expect one to two days of preparation and a similar window to download. The import into Immich, PhotoPrism, or Ente takes a comparable amount of time on top, mostly bounded by disk speed and (for Immich or PhotoPrism) how fast the server can index faces and generate thumbnails. Plan a week from start to finish for a large library and you will not be disappointed.