Migrate from Google Photos
Move your entire Google Photos library into PrivoHub Photos using immich-go, a free command-line tool that imports a Google Takeout archive while preserving albums, dates, and locations.
New: we can do this for you. The managed importer in your Portal uploads your Takeout archives through the browser and runs the import on our servers, with no command line needed. The guide below is for doing the same thing yourself with the immich-go CLI.
Why immich-go?
Google Takeout exports your photos alongside JSON sidecar files that hold the original capture date, GPS location, and album membership. A plain upload would ignore those sidecars. immich-go reads them and restores the correct metadata and albums in your instance, so your timeline looks right.
Set aside an hour or two depending on your library size. The export itself can take Google several hours to a day to prepare.
Step 1 - Request your Google Takeout
- Go to takeout.google.com and click Deselect all.
- Scroll down, tick only Google Photos, and click Next step.
- Choose Export once, file type .zip, and the largest size (e.g. 50 GB) so you get fewer files.
- Click Create export. Google emails you download links when it's ready. This can take a few hours up to a day.
Step 2 - Download the archives
Download every takeout-*.zip part into a single folder on your computer. Do not unzip them. immich-go reads the zips directly. Keep all parts together so albums spanning multiple files are reassembled correctly.
Step 3 - Install immich-go
immich-go is a single binary, with no NodeJS or Docker required. Download the build for your OS (Windows, macOS, Linux) from the releases page and unpack it. On macOS and Linux, make it executable:
chmod +x immich-goStep 4 - Create an API key
You need an API key so immich-go can upload on your behalf:
- Open your Photos library at
https://photos-yourname.privohub.comand sign in. Note thephotos-prefix:yourname.privohub.comis your workspace home page, not Photos itself, and it has no API keys. - Click your avatar in the top right, then Account Settings → API Keys, and click New API Key.
- Name it (e.g.
google-import). When asked which permissions to grant, the simplest is Select all. The key is only for this import and you can delete it right afterwards. - Copy the generated key somewhere safe. It's shown only once.
Prefer a minimal-permission key?
immich-go needs these scopes for a Google Photos import:
asset.read, asset.statistics, asset.update, asset.upload, asset.copy, asset.replace, asset.delete, asset.download, album.create, album.read, albumAsset.create, server.about, stack.create, tag.asset, tag.create, user.read, plus job.create and job.read so it can pause background jobs during the upload.
Step 5 - Run the import
From the folder containing your zips, run the upload command, replacing the server URL and API key with your own:
immich-go upload from-google-photos --server=https://photos-yourname.privohub.com --api-key=YOUR_API_KEY takeout-*.zipimmich-go scans the archives, skips duplicates, recreates your albums, and uploads everything at full resolution. You'll see live progress in the terminal. Large libraries can take a while, so leave it running.
Step 6 - Verify and clean up
- Open PrivoHub Photos and check that your timeline and albums look right.
- Spot-check a few photos for correct dates and map locations.
- Once you're happy, you can delete the Takeout zips and, when you're confident your library is safe, your Google Photos account.
Re-running the same command later is safe: immich-go detects already-uploaded photos and skips them, so you can resume an interrupted import or add a later Takeout.
Tips & troubleshooting
- Keep all parts together. Importing only some zips can split albums, so point the command at the whole
takeout-*.zipset. - Storage quota. Make sure your plan has room for the full library first. Check usage in your Portal and upgrade if needed.
- Run a dry test. Add
--dry-runto the command to preview what would be uploaded without changing anything. - Wrong dates? That usually means the JSON sidecars weren't included. Re-export from Takeout with Google Photos selected and the
.zipformat.
Migrating from Apple iCloud instead?
We support iCloud Photos exports too. See the Migrate from Apple iCloud Photos guide.
Need a hand?
Email us at support@privohub.com and we'll help you get migrated.