synmich — Synology Photos to Immich migration with proper shared albums support
Hey r/immich,
I just moved from Synology Photos to Immich and ran into a problem that none of the existing tools solve well: shared albums between multiple users. If you're a couple or family with a Synology NAS, your vacation albums and family events are probably shared between accounts, and losing that structure in the migration is painful.
So I put together a tool to handle it properly. Sharing here in case someone else is in the same boat.
What it is
A Python CLI called synmich. It talks directly to the Synology Photos API and the Immich API. MIT licensed.
What it does that other tools don't
- Detects shared albums between Synology users and recreates them as actual shared albums in Immich
- Keeps the right owner for each photo (so each user's timeline stays accurate)
- Maps Synology permissions to Immich roles automatically (
uploadbecomes editor,viewbecomes viewer) - Handles the Shared Space (Synology's common area)
- Works with any number of users, not just 2
Three modes for shared albums
You can pick how they should be handled:
- link (default) — one shared album in Immich, owner preserved, partners get the right permissions
- duplicate — each user gets their own copy with only their photos
- ignore — skip them entirely (photos still end up in each timeline)
The link mode is what I personally use and what most couples probably want.
Why this exists when immich-go is already great
immich-go is excellent for Google Photos, iCloud, and local folders, but it can't read the Synology Photos API. The catch with Synology is that album structure lives in the database, not the filesystem, so mounting your photo share via SMB loses every album. synmich talks to the actual API instead.
Practical stuff
- Resume from checkpoint if you Ctrl+C, crash, or just want to stop with
Q - Live TUI dashboard with pause/resume hotkeys (useful for big migrations)
- Parallel by default, sequential mode if your NAS is small
- Dry-run mode to preview what would happen before committing
Status
I tested it on my own setup: two users, dozens of shared albums, around 30k photos. Everything came through cleanly with the right owners.
This is a fresh v1.0.0. There are probably edge cases I haven't hit yet, especially with older DSM versions or unusual sharing patterns. Issues and PRs welcome.
GitHub: github.com/t3ksin/synmich
If you've been holding off on Immich because of shared albums, hopefully this helps.