Immich vs Google Photos: Migration Guide 2026
Immich vs Google Photos: Migration Guide 2026
Google Photos is a great product — until you hit the storage cap and realize you're paying $30/year for 200GB of someone else's hard drive reading your memories with AI. Immich is the open-source answer: 90,000+ GitHub stars, full ML-powered search and face detection, and a UI that's genuinely close to Google Photos quality.
This guide covers the honest comparison, then walks through a complete migration.
Quick Verdict
Keep Google Photos if you're under 15GB, share albums with non-technical family, or aren't comfortable running Docker. Switch to Immich if you have an always-on server (NAS, Raspberry Pi 4, mini PC), care about privacy, or are paying Google One and want that money back.
Feature Comparison
| Feature | Immich | Google Photos |
|---|---|---|
| Storage | Unlimited (your disk) | 15GB free, then $2.99–$9.99/mo |
| Mobile backup | ✅ iOS + Android apps | ✅ |
| ML face detection | ✅ (local, private) | ✅ (Google servers) |
| Semantic search | ✅ CLIP-based ("beach at sunset") | ✅ |
| Shared albums | ✅ | ✅ |
| Video transcoding | ✅ (GPU acceleration) | ✅ |
| Memories / On this day | ✅ | ✅ |
| RAW file support | ✅ | Limited |
| Location maps | ✅ | ✅ |
| Offline access | ✅ | Limited |
| Privacy | 100% on your hardware | Google scans your content |
| EXIF editing | ✅ | ❌ |
| External library support | ✅ | ❌ |
Immich in 2026 covers ~95% of Google Photos' feature set. The main gaps: Google's Lens integration, cross-platform "Magic Eraser"-style editing, and the breadth of a tightly integrated Google ecosystem.
The Real Cost of Google Photos
| Storage | Google One | Immich (Hetzner VPS) | Immich (home server) |
|---|---|---|---|
| 200GB | $3/mo | $4/mo total | ~$0.50/mo electricity |
| 2TB | $10/mo | $4/mo total | ~$1/mo electricity |
| 10TB | $30/mo | $10/mo (larger VPS) | ~$2/mo electricity |
At 2TB you break even with Immich on a cheap VPS at month one. At 10TB you save $240+/year. With a home server or NAS you already own, savings are immediate.
Server Requirements
Immich runs on anything from a Raspberry Pi 4 (4GB RAM recommended) to a full homelab server. Minimum specs:
- CPU: Any modern x86_64 or ARM64 (Pi 4/5, M1 Mac mini)
- RAM: 4GB minimum; 8GB+ for ML processing
- Storage: Whatever size your library needs + 20% overhead
- OS: Any Linux with Docker installed
- Network: 100Mbps LAN recommended for initial ingestion
GPU acceleration (NVIDIA CUDA, Intel QuickSync) dramatically speeds up face detection and video transcoding but isn't required.
Step 1: Install Docker
# Ubuntu/Debian
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
newgrp docker
Step 2: Deploy Immich
mkdir ~/immich-app && cd ~/immich-app
wget -O docker-compose.yml https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.env
Edit .env to set your upload location:
# .env
UPLOAD_LOCATION=/your/photos/path
DB_DATA_LOCATION=/your/db/path
TZ=America/New_York
Start Immich:
docker compose up -d
Immich will be available at http://your-server-ip:2283. Create your admin account on first access.
Step 3: Enable Hardware Acceleration (Optional)
For NVIDIA GPU:
# docker-compose.yml — immich-microservices service
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]
For Intel QuickSync, add --device=/dev/dri to the immich-microservices container. Hardware ML inference cuts face detection time by 5–10x on large libraries.
Step 4: Migrate from Google Photos
4a. Export via Google Takeout
- Go to takeout.google.com
- Select Google Photos only
- Choose .zip format, max 50GB per archive
- Download all archives (can take hours for large libraries)
Gotcha: Takeout exports metadata (dates, location, album membership) in .json sidecar files alongside the images. Without handling these, all your photos import with wrong dates.
4b. Use immich-go to Import with Metadata
immich-go is the community-standard migration tool that reads Takeout's JSON sidecars and imports everything correctly:
# Install immich-go
wget https://github.com/simulot/immich-go/releases/latest/download/immich-go_Linux_x86_64.tar.gz
tar xzf immich-go_Linux_x86_64.tar.gz
# Import a Takeout archive (or directory of archives)
./immich-go upload \
--server http://your-server:2283 \
--api-key YOUR_API_KEY \
--google-photos \
/path/to/takeout-archives/
Get your API key from Immich → Account Settings → API Keys.
What this preserves:
- ✅ Original creation dates from EXIF and JSON metadata
- ✅ Album structure
- ✅ Location data
- ✅ Starred/favorites
- ✅ Trashed photos (optional, skip with
--exclude-trashed)
4c. Expected Timeline
| Library size | Import time | ML processing (no GPU) |
|---|---|---|
| 10,000 photos | ~2 hours | ~6–12 hours |
| 50,000 photos | ~10 hours | ~2–3 days |
| 200,000 photos | ~2–3 days | ~1–2 weeks |
ML processing (face clustering, CLIP embeddings) runs in the background. Immich stays fully usable while it processes.
Step 5: Set Up Mobile Backup
Install the Immich app (iOS / Android) and configure:
- Open app → Settings → Server URL:
http://your-server-ip:2283 - Enable Background Backup (or set to Wi-Fi only)
- Set backup frequency and quality preferences
For remote access, put Immich behind a reverse proxy with SSL (Nginx Proxy Manager or Caddy). Alternatively, use Tailscale for zero-config secure remote access without opening ports.
Step 6: Implement 3-2-1 Backups
Self-hosting means you are the backup strategy. Don't skip this.
# Example: Daily rsync to external drive
0 2 * * * rsync -avz --delete /your/photos/path /mnt/backup/photos/
# Or use rclone to sync to Backblaze B2 (cheap cold storage)
# rclone sync /your/photos/path b2:your-bucket-name
Backblaze B2 costs $6/TB/month — cheaper than Google One at scale, and serves as your off-site copy.
Immich Strengths Worth Knowing
CLIP semantic search works better than most users expect. Search for "birthday cake" or "dog at the beach" and it finds matching photos without any tags — pure ML inference running locally.
Face detection and clustering groups recognized faces automatically. Unlike Google Photos, you can manually correct misidentifications and add faces that the ML missed.
External libraries let you point Immich at an existing folder of photos without moving them. Useful if you have a large organized NAS library you don't want to duplicate.
Timeline and memories match Google Photos' UI patterns closely enough that switching feels natural within a few days.
Known Limitations
- No built-in video editing — Immich doesn't have editing tools beyond basic rotation/crop
- Partner sharing requires both users on the same Immich instance — you can't share with a Google account
- Mobile app offline access is more limited than Google Photos' cached-smart behavior
- Large libraries slow ML indexing — plan for it, don't fight it
- You manage updates —
docker compose pull && docker compose up -dmonthly
When to Use Each
Stick with Google Photos if:
- Your library is under 15GB and you're in the free tier
- You share albums with non-technical family who won't install a new app
- You don't have a home server or NAS
- You rely on Google Lens integration
Switch to Immich if:
- You're paying $3–$30/month for Google One
- Privacy is a concern (photos contain sensitive content, children, location history)
- You shoot RAW or high-resolution video that chews storage
- You want true data ownership and unlimited storage at predictable cost
- You have a Raspberry Pi 4, NAS, or mini PC sitting around
Migration Checklist
- Set up Docker on your server
- Deploy Immich with correct storage path
- Export Google Photos via Takeout (all archives)
- Import using immich-go with
--google-photosflag - Verify dates, albums, and location data on sample photos
- Install Immich mobile app, configure server URL
- Set up automatic mobile backup
- Configure 3-2-1 backup (local + off-site)
- Keep Google Photos in read-only mode for 30 days before deleting
- Set up reverse proxy + SSL for remote access
Advanced Configuration
Setting Up a Reverse Proxy with SSL
For access outside your home network with a custom domain, use Nginx Proxy Manager (NPM):
# Add to your docker-compose.yml
npm:
image: jc21/nginx-proxy-manager:latest
ports:
- "80:80"
- "443:443"
- "81:81"
volumes:
- npm_data:/data
- npm_ssl:/etc/letsencrypt
restart: unless-stopped
In NPM's dashboard (port 81), add a proxy host pointing to immich-server:3001. Request a Let's Encrypt SSL certificate and enable WebSocket support — Immich needs WebSocket for real-time sync notifications.
External Library Support
If you have an existing organized folder structure you don't want to disturb, use External Libraries:
- Immich Dashboard → Administration → Libraries → Create External Library
- Set the import path to your existing photos directory
- Immich indexes photos without copying them
Useful for NAS users who have years of photos in a folder hierarchy they've maintained manually.
Hardware Acceleration for Video Transcoding
If your server has an Intel CPU with QuickSync:
# docker-compose.yml — immich-microservices
devices:
- /dev/dri:/dev/dri
environment:
- LIBVA_DRIVER_NAME=i965
Hardware transcoding reduces CPU usage for video playback by 70–90% and enables 4K video thumbnails without maxing out your CPU.
Frequently Asked Questions
Can I access Immich when I'm away from home? Yes — either through a reverse proxy with SSL on your domain, or via Tailscale (recommended for simplicity). Tailscale creates an encrypted tunnel to your home network accessible from anywhere.
Will it work on a Raspberry Pi 4? Yes. The Raspberry Pi 4 with 4GB RAM handles Immich well for libraries under 50,000 photos. ML indexing will be slow (no GPU acceleration), but daily use is responsive. The Pi 5 is noticeably faster.
Does Immich automatically back up my phone photos like Google Photos? Yes. The Immich mobile app runs in the background and syncs new photos over Wi-Fi (or cellular, configurable). It respects iOS and Android background app restrictions the same way Google Photos does.
What happens to existing Google Photos features if I switch? Google Photos remains accessible with its data intact — you're not deleting anything. The recommendation is to run both in parallel for 30–60 days, then cancel Google One once you confirm everything migrated successfully.
Can I share photos with family members on different devices? Yes, via shared albums and partner sharing — both require the other person to have an Immich account on your instance. They download the same mobile app and point it to your server URL.
Is the data safe if my server crashes? Only if you have backups. Immich stores photos in the directory you configured at setup. Back up that directory with restic, borgbackup, or rsync to an external drive or cloud storage. No backups = potential permanent loss.
Browse all open-source Google Photos alternatives at OSSAlt.
Related: Self-Host Your AI: Ollama + Open WebUI 2026 · Vaultwarden: Self-Host Bitwarden in 5 Min