Two ways to get a Takeout into Immich
immich-go, a free command-line tool from the Immich community, reads Takeout ZIP files directly, matches the JSON files and sets the dates on your server as it uploads (immich-go upload from-google-photos --server=… --api-key=… takeout-*.zip). If you are fine with a terminal and want one step, use it — you do not need this page.
This page plus the official upload suits you if you want to check the files first, or want a fixed copy of your library that carries its dates in the files themselves — useful for backups and for any other app later.
Step by step
- Export: at takeout.google.com select Google Photos, choose .zip, and download every part.
- Fix: drop all parts above and click Fix and save.
- Extract: unpack the fixed ZIP(s) into one folder.
- Import with the Immich CLI: install it with
npm i -g @immich/cli, sign in withimmich login https://your-server/api YOUR_API_KEY, then runimmich upload --recursive /path/to/folder. - Or in the browser: drag the extracted folder onto the Immich timeline. Dragging reads folders and subfolders; the Upload button takes single files.
Which date Immich shows
- Immich reads dates inside files with ExifTool: DateTimeOriginal for JPEG and HEIC, the creation time of MP4 and MOV headers. Those are the fields the tool fills.
- For a file with no date inside — PNG, GIF, a HEIC without EXIF — Immich uses the file's modified time, which both the CLI and the web app send with each upload. That is the file date the fixed ZIP restores.
- Immich does not read Takeout's JSON files itself, so without a fix such files land on the export day.
- Video dates are read as UTC, which is what video headers hold.
Albums
The CLI option --album creates albums named after the folders. Takeout's album folders become albums — and so would the year folders such as Photos from 2019. To get only real albums, upload the year folders without --album and the album folders with it. Album copies of the same photo do not have to be skipped here: Immich recognises a file it already has by its checksum.
Frequently asked questions
Should I use immich-go instead?
If you only want your Takeout in Immich and are comfortable with a terminal, immich-go is the shortest path: it reads the ZIP files and applies the JSON dates on the server. Use this page if you would rather fix and keep the files themselves, check the matches in a report first, or import the same library into something other than Immich later.
Does this page upload to my Immich server?
No. It never connects to Immich and never asks for an API key. You import the fixed folder yourself with the Immich CLI or the web app.
Which files get their date written inside?
JPEG photos get the date (and, if missing, the location) written into their EXIF data, the place photo apps read first. HEIC photos get the same in their EXIF block when they have one, as iPhone photos do; a HEIC without an EXIF block gets the file date only. MP4, MOV, M4V and 3GP videos get the date in their movie and track headers — the "creation time" video apps read — changed in place, without re-encoding. PNG, GIF, WebP, AVI, MKV and other formats are not modified: they get the date as their file date (the "modified" date) when you extract the fixed ZIP.
Will it overwrite the dates my camera wrote?
Not by default. If a JPEG or HEIC already has a "date taken" (DateTimeOriginal) or GPS position, it is kept. A video keeps a plausible recording date in its header; a video date that is empty, before 1970, or only the upload or processing time (on or after the upload of a video taken earlier) is replaced. Turn on Replace dates and locations the camera already wrote if you changed dates in Google Photos and want those instead.
Are my photos uploaded?
No. The ZIP files are read by your browser on your own computer and the fixed archive is written there too. Nothing is sent to a server — you can disconnect from the internet after the page has loaded and it still works.