Google Takeout to Immich, with the right dates

Immich sorts by the date inside each file and falls back to the file's own date. Takeout breaks both for many files. Fix the archive here, then import the extracted folder with the Immich CLI or the web app — this page never connects to your server.

Drop all your Takeout ZIP files here

Every part at once — takeout-…-001.zip, -002.zip … A photo's JSON is often in a different part. Files stay on your computer.

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

  1. Export: at takeout.google.com select Google Photos, choose .zip, and download every part.
  2. Fix: drop all parts above and click Fix and save.
  3. Extract: unpack the fixed ZIP(s) into one folder.
  4. Import with the Immich CLI: install it with npm i -g @immich/cli, sign in with immich login https://your-server/api YOUR_API_KEY, then run immich upload --recursive /path/to/folder.
  5. 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

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.