Repolode
simulot

simulot/immich-go

A Go command-line tool for uploading photo collections, including Google Photos Takeout archives, to a self-hosted Immich server without Node.js.

Open-source alternative to:Google Photos

Stars
7,065
Forks
273
Open issues
272
Last commit
2 days ago

What is it?

Immich-go is a command-line tool for moving large photo libraries into a self-hosted Immich server. It works as an alternative to the official immich-cli and is distributed as a single binary, so it does not require Node.js or Docker to run.

The tool offers several upload commands for different sources: local folders, Google Photos Takeout archives, iCloud exports, Picasa folders, ZIP files, and other Immich servers. The Google Photos command matches photos with their JSON metadata to restore albums, descriptions and locations. Other commands can create albums from folder structure, read XMP sidecar files, and stack RAW+JPEG pairs or bursts.

It also detects duplicates to avoid re-uploading existing files, skips common system clutter such as thumbnail folders and .DS_Store files by default, and can filter files with custom ban patterns. The project supports Immich V2 and V3 and runs on Windows, macOS, Linux and FreeBSD.

Key features

  • 01Uploads from local folders, Google Photos Takeout, iCloud exports, Picasa folders and ZIP archives
  • 02Copies assets between Immich servers with filtering
  • 03Preserves albums, tags, descriptions and locations from source metadata
  • 04Detects duplicates and stacks RAW+JPEG pairs and bursts
  • 05Ships as a single binary with no Node.js or Docker dependency

Use cases

  • Migrating a Google Photos library to a self-hosted Immich server
  • Importing iCloud Photos exports into Immich
  • Moving assets from one Immich instance to another
  • Bulk-uploading a large local photo archive from a NAS or disk

Quick start

  1. 1

    Download the pre-built binary for your system from the GitHub releases page

  2. 2

    Upload photos from a local folder

    immich-go upload from-folder --server=http://your-ip:2283 --api-key=your-api-key /path/to/your/photos
  3. 3

    Upload Google Photos takeout

    immich-go upload from-google-photos --server=http://your-ip:2283 --api-key=your-api-key /path/to/takeout-*.zip

Things to know

  • Described by its author as an early version that is not yet extensively tested.
  • Requires a running Immich server and an API key with appropriate permissions.
  • Licensed under AGPL-3.0, a copyleft license with network-use obligations.

Topics

FAQ

What is immich-go?
A Go command-line tool for uploading photo collections, including Google Photos Takeout archives, to a self-hosted Immich server without Node.js. Immich-go is a command-line tool for moving large photo libraries into a self-hosted Immich server. It works as an alternative to the official immich-cli and is distributed as a single binary, so it does not require Node.js or Docker to run.
Is immich-go free to use? What license does it have?
immich-go is open source under the AGPL-3.0 license. Check the license terms before using it in commercial products.
Is immich-go still maintained?
Actively maintained. The last commit to immich-go was on Oct 18, 2026.
What can I use immich-go for?
Migrating a Google Photos library to a self-hosted Immich server Importing iCloud Photos exports into Immich Moving assets from one Immich instance to another Bulk-uploading a large local photo archive from a NAS or disk
How do I install immich-go?
Download the pre-built binary for your system from the GitHub releases page Upload photos from a local folder: immich-go upload from-folder --server=http://your-ip:2283 --api-key=your-api-key /path/to/your/photos Upload Google Photos takeout: immich-go upload from-google-photos --server=http://your-ip:2283 --api-key=your-api-key /path/to/takeout-*.zip
Where can I get immich-go?
The source code and installation instructions are on GitHub: https://github.com/simulot/immich-go

Summary generated by AI from the project's README. GitHub stats refresh daily.

Related projects