Importing your photos from Google Takeout¶
Google Photos exports through Takeout as a set of .zip archives. The photos come out with their metadata (dates,
GPS, descriptions, albums) in separate .json sidecar files, so don't unzip them and drag the images into Immich:
use immich-go, which reads the archives directly and pairs each photo with
its JSON.
Creating the Takeout export¶
- Go to https://takeout.google.com/.
- Deselect all, then select Google Photos. Scroll to the bottom and choose Next step.
- Delivery method: send download link via email, export once,
.zip, and the largest file size (50 GB) so there are fewer parts to download.
Note
Generating the export can take hours to days for a big library. You get an email per batch of links.
Download limits
The links expire after about 7 days, and each archive can only be downloaded a handful of times (around 5). After that you have to create a new export. Plan the download before you start it.
Downloading the files¶
Standard method¶
Download the links in a browser like any other download and save them all into one directory.
Headless download (straight to the server)¶
Useful when the archives should land on the NAS and not on your desktop first.
- Open the Takeout download page in a desktop browser.
- Press
F12to open the developer tools and choose the Network tab. - Start downloading one part, then pause (or cancel) it in the browser.
- Find the request to
https://takeout-download.usercontent.google.com(it must be this domain; the other requests are redirects) → right click → Copy as cURL. - SSH into the server and start a
tmux(orscreen) session, so the download survives a dropped terminal. - Paste the command into a text editor first, and add
-o takeout-001.zip(a file name of your choice) so curl writes to a file instead of the terminal. Then run it. - Repeat for each part. The copied command carries your browser's session cookies, so treat it like a password and don't paste it anywhere shared. Each started download counts against the download limit above.
Importing with immich-go¶
- In Immich, create an API key: Account Settings > API Keys > New API Key. Give it the asset/album permissions immich-go lists in its installation docs (or "all" for a one-off import, then delete the key afterwards).
- Download the
immich-gorelease binary for your platform from its releases page. - Run the import against all the archives at once (immich-go needs every part to match photos with their JSON):
immich-go upload from-google-photos \
--server=http://<YOUR_SERVER_IP>:2283 \
--api-key=<YOUR_API_KEY> \
/path/to/takeout-*.zip
immich-go recreates the Google Photos albums in Immich and skips files that are already there, so it's safe to re-run after an interruption. Running it on the NAS itself (next to the archives) avoids pushing hundreds of GB over the network twice.
Tip
Set up the storage template before the import, so the files land in your preferred folder layout right away.
Sources & further reading¶
- immich-go (README and
docs/) - Google Takeout
- Immich CLI (the official uploader; it doesn't read Takeout JSON, hence immich-go)