A new Immich user on GitHub posted their dry-run numbers after a first try. Their Takeout came as 14 zip files, about 50 GB, and they expected more than 9000 photos. immich-go found 6,233 photos and 294 videos, and it reported 1,608 assets with missing metadata. Nobody in the thread worked out why; Immich's maintainer pointed them to the immich-go project.

For a family, the route starts with one Takeout and one Immich account per person, and a dry run that shows the counts before anything uploads. immich-go is the community tool Immich's docs recommend for Takeouts, and neither Immich nor DreamHost supports it. We ran a test import with a made-up Takeout on our own test machine, and the section after the import steps shows what came through. The steps themselves come from Immich's, immich-go's and Google's own pages, and the disk numbers are estimates from the vendors' sizing rules. If you're still choosing a photo app, our guide on Immich, PhotoPrism or Ente compares them first.

How much disk your library needs

Size the server from your Takeout total. Google's storage bar can show less than you'll download. Photos backed up in Storage saver before June 1, 2021 don't count toward your Google storage, and Google's transfer page warns that transferred photos and videos may need more space than Photos shows.

The server also needs room on top of your originals. Immich's requirements page says thumbnails and transcoded video add 10 to 20% to a library on average, and its PostgreSQL database typically takes 1 to 3 GB. immich-go's migration checklist says to plan for about 1.5 times the source size, which leaves more margin, so this guide plans by that rule. The first column uses the stricter 1.5x rule.

Size of your TakeoutOriginals the disk holds, aboutPlan that fits
Up to about 100 GBAbout 100 to 120 GB on a 150 GB diskStack 8
About 100 to 165 GBAbout 165 to 205 GB on a 250 GB diskStack 16
About 165 to 300 GBAbout 300 to 370 GB on a 450 GB diskStack 32
More than about 300 GBMore than the largest Immich plan's disk holds by the 1.5x ruleNo current plan's disk holds it
Lower number uses immich-go's 1.5x rule; higher number uses Immich's 10 to 20% overhead. Estimated from Immich's requirements (thumbnails and video add 10 to 20%, database 1 to 3 GB) and immich-go's 1.5x rule, read October 2, 2026. Not measured on our servers. The operating system, Docker images, machine learning models and Immich's kept database backups also use disk.

Family libraries can get big. One Hacker News commenter moved an 890 GB Takeout into Immich. Above about 300 GB, you'll have to split the move. The split happens at import, because Google's Takeout help page says it can't export a chosen time period. immich-go's --from-album-name option imports one named album at a time, so start with the albums you'd miss most. If you shot RAW and JPEG pairs or bursts, immich-go's storage-conscious settings keep only the JPEG: --manage-raw-jpeg=KeepJPG for pairs and --manage-burst=StackKeepJPEG for bursts. Keep every zip on a drive at home for whatever doesn't fit yet.

Stack 4's 4 GB of RAM is below Immich's 6 GB minimum unless you turn machine learning off, so leave it out of this job. Stack 8 has the 8 GB of RAM that DreamHost's Immich page tells you to plan for, but its 2 vCPU are only Immich's minimum. Stack 16 is the first plan with the recommended 4 cores. That matters most at the start, since Immich's FAQ calls the initial backup the most intensive phase due to the number of jobs running. If the library outgrows Stack 16 later, DreamHost's VPS page says you can move up a Stack plan and your environment moves with you. The same page says scaling down to a smaller Stack isn't currently supported.

One Takeout and one Immich account per person

Give each person their own Takeout and their own Immich account. The immich-go install guide asks for an API key for each user account you'll import into, so a family of four ends up with four accounts, four keys and four imports. On DreamHost's Immich page, anyone you invite gets an account and uses your storage.

Each Takeout link expires in about 7 days, so it helps to track every person through the same list:

  • Takeout requested, and every part downloaded and counted
  • Immich account and API key created
  • Dry-run counts written down
  • Real import finished and checked
  • Phone backup turned on

Google Photos partner sharing can also cause duplicates, and the warning below covers the setting behind it. Once every import is done, turn on Immich's own Partner Sharing so each of you sees the other's photos without a second copy.

Move the library, step by step

You'll run immich-go on the home computer that downloaded the Takeout and point it at your server, which immich-go's maintainer calls "the best option". It also saves fetching 50 GB files onto the server, which is awkward anyway: one Hacker News commenter with about 14 Takeout parts of 50 GB each couldn't use wget because Google's downloads need a signed-in session.

Before you start, have your server's IP address, an SSH login to it, and a computer with room for the whole Takeout plus immich-go's temporary files. One user whose import stopped when that computer's disk filled finished after pointing the IMMICHGO_TEMPDIR setting at a drive with 200 GB free.

Get Google Photos ready and export it

  1. Prepare Google Photos before you export

    Google's list of items it doesn't transfer to other services includes Locked Folder content, the video part of Motion and Live Photos, and trash. That list is for Google's transfer tool, and we haven't confirmed that a downloaded Takeout leaves out the same items, but doing these fixes first can save you a second Takeout. Move what you want out of the Locked Folder, save Motion and Live Photos as videos, and restore anything you want from trash. immich-go leaves trashed photos out by default, and its --include-trashed option brings them in. Comments come through: Google's download page says they go into a separate JSON file.

    Takeout also skips the photos other people added to your shared albums. A reply in Immich's GitHub discussions suggests saving those to your own Google account with the album's Save button first, which uses storage in your Google account.

  2. Request a Takeout for each person

    At takeout.google.com, deselect everything. Then select Google Photos only. Choose ZIP files and the 50 GB size. The immich-go best-practices page recommends both, and Google says the 50 GB limit lowers the chance your archive gets split. Building it can take anywhere from a few minutes to a few days, and Google warns the archive can miss photos or albums added or deleted in the meantime, so don't change your albums while you wait.

  3. Download every part and check none is missing

    Google's link expires in about 7 days, and each archive can be downloaded 5 times, so download every part to a computer with room for all of them before you do anything else. Then list them and check the numbers run without a gap, since the immich-go docs name incomplete downloads as a common pitfall.

    bash
    ls -la takeout-*.zip

    Keep every part in ZIP format. immich-go's docs say not to mix ZIP and TGZ in one import. Browser downloads this large can fail: the commenter with 14 parts found theirs corrupted and put it down to the 50 GB size and the browser. If a part won't open, download it again while the link still has downloads left.

Set up the accounts and the tool

  1. Create an Immich account and API key for each person

    Sign in to Immich as the admin, using the login DreamHost's Immich setup creates at first boot, which you read over SSH from your own computer. Create an account for each family member, then in each account open Account settings > API Keys > New API Key. The immich-go installation guide lists the permissions each key needs: asset.read, asset.statistics, asset.update, asset.upload, asset.copy, asset.delete, asset.download, album.create, album.read, albumAsset.create, server.about, stack.create, tag.asset, tag.create and user.read. Store each key somewhere safe.

    immich-go pauses Immich's background jobs during an upload by default, and that needs an admin-linked key with two more permissions, job.create and job.read. A family member's key lives in their own account, so it isn't admin-linked. immich-go's docs don't say what happens when a non-admin key tries to pause jobs. To be safe, the commands below turn pausing off with --pause-immich-jobs=false. Keep it that way for every family member. On the admin's own import, with an admin-linked key that has both permissions, you can change it to true.

  2. Download immich-go

    Download the archive for your computer from its GitHub releases page. On a Mac that's immich-go_Darwin_arm64.tar.gz for Apple silicon or immich-go_Darwin_x86_64.tar.gz for Intel. It's a single program with no Docker or Node.js to install. Extract it, then check that it runs:

    bash
    tar -xzf immich-go*.tar.gz
    ./immich-go --version

    On Windows, unzip immich-go_Windows_x86_64.zip and run .\immich-go --version in PowerShell from that folder. The current release, v0.32.0 from June 25, 2026, brings full compatibility with Immich V3.0.0, according to its release notes. Its README warns that it's an early version and asks you to keep a backup copy of your files.

Run the import

  1. Run a dry run and compare the counts

    A dry run simulates the whole upload without transferring anything. Use https:// plus your server's IP as the address. DreamHost's Immich setup gets a Let's Encrypt certificate for that IP, and immich-go's best-practices page says to use HTTPS in production. Its own examples use http:// and port 2283. The options are from immich-go's upload reference for v0.32.0:

    bash
    TZ=America/Chicago ./immich-go upload from-google-photos \
    --dry-run \
    --include-partner=false \
    --pause-immich-jobs=false \
    --server=https://YOUR-SERVER-IP \
    --api-key=YOUR-API-KEY \
    /path/to/takeout-*.zip

    The TZ=America/Chicago part protects dates that come from Google's JSON files, which immich-go uses when a photo needs them. immich-go's maintainer says those Takeout dates arrive in UTC and take the time zone of the computer running immich-go. The --time-zone option doesn't change that for Takeouts, and the issue was still open on October 2, 2026.

    TZ isn't an immich-go option. Go's own docs say that on Unix systems a Go program takes its local time zone from the TZ variable, so on macOS and Linux it should set the zone for that one command. Put in your own zone. We haven't tested the TZ route. On Windows, use PowerShell and set the computer's time zone to your family's instead. Then drop the TZ=America/Chicago part, start with .\immich-go, and end each line with a backtick instead of a backslash, the way immich-go's own PowerShell example does.

    After the first person's import, open three photos whose time of day you know and check them in Immich before you import anyone else. Travel photos will still show your home zone's time, because the maintainer says immich-go can't easily work out a time zone from GPS.

    Compare the photo and video counts in the summary with what you expect. If the missing associated metadata file count is high, those are files without a JSON match, which --include-unmatched can bring in later. If a lot are missing, check the parts again before you go further. Start with one person's Takeout.

  2. Run the real import

    Run the same command without --dry-run, plus the options immich-go's best-practices page gives for an upload over an internet connection with variable speed. That's what a home-to-server upload is, and the same page uses these numbers for libraries of 100,000 photos or more:

    bash
    TZ=America/Chicago ./immich-go upload from-google-photos \
    --include-partner=false \
    --pause-immich-jobs=false \
    --server=https://YOUR-SERVER-IP \
    --api-key=YOUR-API-KEY \
    --concurrent-tasks=4 \
    --client-timeout=60m \
    --on-errors=continue \
    --session-tag \
    /path/to/takeout-*.zip

    The --session-tag option tags each upload with its session time, so you can see later what came in when. If the import stops partway, run the same command again. It skips the files already on the server.

    Your home upload speed sets the pace. As an example of the arithmetic, 200 GB at a steady 50 Mbps upstream takes about 9 hours to upload. Bandwidth is unmetered on every Immich VPS plan. DreamHost's Immich page also promises no overage fees, under its fair-use terms.

What our test import showed

To check these steps, we ran the import once ourselves on October 22, 2026: immich-go v0.32.0 into Immich v3.3.5, on a test VM with 2 vCPU and 8 GB of memory, the shape of Stack 8. The Takeout was one we generated, with 300 test photos in two zip parts laid out like Google's current export, including JSON files with dates and locations. Two albums held 45 copies of photos already in the year folders. The VM ran on an arm64 Mac, so it's our test machine, not a DreamHost server.

What we checkedWhat we saw
Photos uploaded, duplicates skipped, errors300 uploaded, 45 album copies skipped as duplicates, 0 errors
Dates after import300 of 300 right, including all 132 photos whose date was only in Google's JSON file
AlbumsBoth came back with the right counts, 25 and 20 photos
Locations300 of 300 had a location, read from the JSON files
Immich's own processing after the uploadAbout 4.5 minutes for thumbnails, faces and search
Immich's memory at rest before the import, and at its peak while processingAbout 1.4 GB, then about 6 GB

The upload took seconds over a connection inside the same Mac, so it tells you nothing about your home upload. Immich's processing afterwards took the time and the memory: about 6 GB at its peak for just 300 photos, on a machine with 8 GB. We'd rather start a real family library on Stack 16 than on Stack 8 for that reason, though we didn't measure a big library and the peak can't be scaled up from 300 photos. Thumbnails and previews added about 38% on top of the originals in this test (169 MB on 443 MB), but generated photos aren't real camera files, so the disk table still plans by the vendors' rules.

What we couldn't test: a real Google Takeout, real faces, videos, HEIC or Live Photos, several family accounts, the dry run and the TZ setting. We ran it once.

Check the result and finish the move

  1. Check what came through

    The immich-go post-migration checklist has you compare counts between Google and Immich, spot-check a random sample, and confirm that dates, locations and albums came through. If a photo has no GPS of its own but its album has a location, the tool applies the album's location to it.

    If many files are missing and every part is there, rerun with --include-unmatched, which imports files that have no JSON to match. Those come in with less metadata, so run it last. Immich's storage template is off by default. If you've turned it on and files land in folders with the wrong date, Immich's FAQ says to rerun the storage migration job. It only runs automatically once per asset after upload.

  2. Look for anything the prep step missed

    Check for the items from Prepare Google Photos before you export, such as Motion Photo videos and anything you moved out of the Locked Folder. If something's missing, take a fresh Takeout and rerun the import, which skips what's already there. Don't delete anything in Google Photos until the counts match.

  3. Turn on phone backup

    Install the Immich app on each phone, sign in with that person's account, and pick the albums to back up. Immich's mobile backup docs say the app checksums each file and skips any already on the server, including files from a command-line upload. By default it uploads only on Wi-Fi. A phone photo that differs from its Takeout copy by even one byte will upload again, so check for duplicates after the first sync.

Back it up before you delete anything from Google

Once the move is done, you're the one who backs up the photos, and our guide on backing up Immich covers that job. Our look at self-hosting in 2026 covers the rest of running your own server. Immich makes a database backup every day at 2 a.m. and keeps the last 14. Its backup docs say those backups hold metadata only, never photos or videos. DreamHost doesn't back up your photos either, and the server's immich-backup helper dumps the database and reminds you to copy the library folder off the server yourself.

Get a second copy somewhere other than the server before you delete anything from Google. Immich recommends a 3-2-1 backup, which immich-go's docs spell out as three copies, on two kinds of media, with one off-site. Their checklist ends by archiving the original Takeout files, so a spare drive holding the zips is a fair start on that second copy.

Google Photos to Immich FAQs

Does Google Takeout keep my photo dates?

Google says the original timestamp stays in each file's embedded metadata, and extra Google Photos details go into a separate JSON file. immich-go reads that file too. In our test import, every date came through, including photos dated only in the JSON.

Will I lose my photos if I stop paying for Google One?

You won't lose them the day you stop. Google's storage help page says content may be deleted if you're over your storage limit for 2 years or more. Keep paying until your Immich counts match and you have a second copy, then clean up Google on your own schedule.

Can I import my partner's Google Photos too?

Your partner requests their own Takeout, and it goes into their own Immich account with their own API key. Add --include-partner=false to both imports, because immich-go brings partner photos in by default, then use Immich's Partner Sharing to see each other's libraries.

Will a 500 GB library fit?

Not on any one Immich VPS plan's disk today. Stack 32's 450 GB disk holds about 300 GB of originals by the 1.5x rule this guide plans by. The disk section explains how to split a bigger library at import.

Sources
  1. Requirements, Immich, Oct 2, 2026. docs.immich.app/install/requirements
  2. The Immich CLI, Immich, Oct 2, 2026. docs.immich.app/features/command-line-interface
  3. FAQ, Immich, Oct 2, 2026. docs.immich.app/FAQ
  4. Backup and Restore, Immich, Oct 2, 2026. docs.immich.app/administration/backup-and-restore
  5. Mobile Backup, Immich, Oct 2, 2026. docs.immich.app/features/mobile-backup
  6. immich-go README, simulot/immich-go on GitHub, Oct 2, 2026. github.com/simulot/immich-go
  7. immich-go v0.32.0 release notes, simulot/immich-go on GitHub, Oct 2, 2026. github.com/simulot/immich-go/releases/tag/v0.32.0
  8. Best Practices, simulot/immich-go on GitHub, Oct 2, 2026. github.com/simulot/immich-go/blob/main/docs/best-practices.md
  9. Upload Command, simulot/immich-go on GitHub, Oct 2, 2026. github.com/simulot/immich-go/blob/main/docs/commands/upload.md
  10. Installation Guide, simulot/immich-go on GitHub, Oct 2, 2026. github.com/simulot/immich-go/blob/main/docs/installation.md
  11. Upload Commands Overview, simulot/immich-go on GitHub, Oct 2, 2026. github.com/simulot/immich-go/blob/main/docs/upload-commands-overview.md
  12. Issue 881: time zone for Google Photos imports, simulot/immich-go on GitHub, Oct 2, 2026. github.com/simulot/immich-go/issues/881
  13. Issue 886: --time-zone has no effect for Google Photos, simulot/immich-go on GitHub, Oct 2, 2026. github.com/simulot/immich-go/issues/886
  14. Issue 701: running out of disk during an import, simulot/immich-go on GitHub, Oct 2, 2026. github.com/simulot/immich-go/issues/701
  15. Issue 839: where to run immich-go, simulot/immich-go on GitHub, Oct 2, 2026. github.com/simulot/immich-go/issues/839
  16. How to download your Google data, Google Account Help, Oct 2, 2026. support.google.com/accounts/answer/3024190
  17. Copy your photos & videos to a service outside of Google, Google Account Help, Oct 2, 2026. support.google.com/accounts/answer/9666875
  18. Manage your storage, Google Photos Help, Oct 2, 2026. support.google.com/photos/answer/9284827
  19. time package: Local, The Go Programming Language, Oct 2, 2026. pkg.go.dev/time
  20. Discussion 27859: Takeout import missing photos, immich-app/immich on GitHub, Oct 2, 2026. github.com/immich-app/immich/discussions/27859
  21. Discussion 14477: shared albums and Takeout, immich-app/immich on GitHub, Oct 2, 2026. github.com/immich-app/immich/discussions/14477
  22. Comment on downloading 14 Takeout parts, Hacker News, Oct 2, 2026. news.ycombinator.com/item?id=48767576
  23. Comment on an 890 GB Takeout into Immich, Hacker News, Oct 2, 2026. news.ycombinator.com/item?id=45444947

Need Some Help?

Whether you're stuck or just want some tips on where to start, hit up our experts anytime. We're here to help!

DreamHost Sales Help

24/7/365 Through the Chat Widget

Customer Support Chat

24/7/365 Through the Panel

Go to Panel
Customer Support Email

24/7/365 Through the Panel

Go to Panel