Choose Your Workflow¶
Not sure which tab to open? Start here. Immich-Go GUI maps each use case to a specific immich-go subcommand so you do not have to memorize CLI flags.
Operation Lifecycle¶
flowchart TB
classDef startEnd fill:#6366f1,stroke:#4338ca,color:#fff,stroke-width:2px
classDef source fill:#0ea5e9,stroke:#0369a1,color:#fff,stroke-width:2px
classDef config fill:#8b5cf6,stroke:#6d28d9,color:#fff,stroke-width:2px
classDef preview fill:#f59e0b,stroke:#b45309,color:#fff,stroke-width:2px
classDef run fill:#ec4899,stroke:#be185d,color:#fff,stroke-width:2px
classDef done fill:#10b981,stroke:#047857,color:#fff,stroke-width:2px
Start([Start]):::startEnd
Select[Select source tab]:::source
subgraph Sources["Import sources"]
direction LR
Folder[Local Folder]:::source
Takeout[Google Takeout]:::source
iCloud[iCloud]:::source
Picasa[Picasa]:::source
ImmichSrc[Another Immich]:::source
end
Configure[Configure options]:::config
Preview[Preview command]:::preview
Run[Execute immich-go]:::run
Progress[Live progress in terminal]:::run
Done([Done]):::done
Start --> Select
Select --> Sources
Sources -->|user fills form| Configure
Configure -->|validate inputs| Preview
Preview -->|user confirms| Run
Run --> Progress
Progress --> Done
Quick Decision Tree¶
What do you want to do?
│
├─ Put media INTO Immich ─────────────────────────────── Upload
│ ├─ Photos already on disk / NAS / external drive ─── Upload → Folder
│ ├─ Google Takeout zip/folder export ──────────────── Upload → Google Photos
│ ├─ iCloud Photos export ──────────────────────────── Upload → iCloud
│ ├─ Picasa / legacy Google Photos export ──────────── Upload → Picasa
│ └─ Another Immich server (migration) ─────────────── Upload → Immich
│
├─ Export / reorganize media LOCALLY ─────────────────── Archive
│ ├─ Local folder → organized archive folder ───────── Archive → Folder
│ ├─ Google Takeout → local archive ────────────────── Archive → Google Photos
│ ├─ iCloud export → local archive ─────────────────── Archive → iCloud
│ ├─ Picasa export → local archive ─────────────────── Archive → Picasa
│ └─ Download from Immich to disk ──────────────────── Archive → Immich
│
└─ Group related assets already ON Immich ────────────── Stack
(burst, RAW+JPEG, HEIC+JPEG, Epson FastFoto)
Upload vs Archive vs Stack¶
| Goal | Section | Needs Immich server? | Result |
|---|---|---|---|
| Import media into Immich | Upload | Yes (destination) | Assets appear in Immich |
| Copy/export media to a local folder | Archive | Usually no* | Files written on disk |
| Group related assets already on the server | Stack | Yes | Stacks created in Immich |
* Archive from Immich is the exception: it needs a source Immich server.
Common Recipes¶
1. First-time import from a photo drive¶
- Config → set server URL + API key → Test Connection
- Upload → Folder
- Set source path (drag-and-drop works)
- Optional: enable advanced mode for
folder-as-albumor date filters - Review preview → Run
See Upload Workflows.
2. Leave Google Photos for Immich¶
- Create a Google Takeout of Google Photos
- Extract the archive so you have a folder of Takeout data
- Upload → Google Photos → point at the Takeout folder
- Keep album sync / partner / archived options as needed (advanced mode)
- Prefer a dry run first on a small sample
See Upload Workflows.
3. Offline cleanup before uploading¶
Use Archive first when you want a clean local tree without touching Immich:
- Archive → matching source tab (Folder / Google Photos / iCloud / Picasa)
- Set Write to folder
- Run dry run, then real archive
- Later upload the cleaned archive with Upload → Folder
4. Migrate between Immich instances¶
- Config tab = destination server + API key
- Upload → Immich
- Fill From server / From API key for the source
- Filter with albums, tags, people, or date range if needed
- Dry run, then full migration
See Upload Workflows.
5. Download a backup from Immich¶
- Archive → Immich
- Set source server credentials (not necessarily the Config-tab destination)
- Choose write folder and filters
- Run
See Archive Workflows.
6. Stack RAW + JPEG / bursts already uploaded¶
- Config → server + API key
- Stack tab → enable management options in advanced mode
- Optional date range to limit scope
- Dry run on a small window first
See Stack.
When to Use Dry Run¶
Always dry-run when:
- You are unsure about filters or date ranges
- You enable stacking modes that can discard non-cover frames (
KeepJPG,KeepRaw, burst stackers) - You are migrating production libraries between Immich servers
- You just upgraded immich-go and want to confirm the command still looks right
Dry run still opens a terminal and runs immich-go — it just asks immich-go not to apply changes.
Admin API Key: When Do You Need It?¶
| Situation | Admin API key needed? |
|---|---|
| Normal upload / stack with job pausing off | No |
Pause Immich background jobs during upload/stack (pause-immich-jobs) |
Yes |
| Most read/write library operations with a user key | No |
If pausing is enabled but no Admin API key is set, the GUI auto-disables job pausing and shows a warning so uploads are not aborted with 403 Forbidden. Details: Configuration.
Profiles Tip¶
Create separate profiles for:
- Home vs work Immich servers
- Staging vs production
- Experiments with advanced flags (duplicate a known-good profile first)
See Profiles.
Next Steps¶
- Getting Started — install and first run
- Upload Workflows
- Archive Workflows
- FAQ
- Troubleshooting