Immich, PhotoPrism, and LibrePhotos look similar until you check how they store and ingest photos. Search and face recognition matter. Storage ownership, phone uploads, upgrades, backups, and a clean exit matter more.
Quick verdict: Choose Immich for automatic phone backup and a polished household setup. Choose PhotoPrism when an existing folder-based archive must remain the source of truth. Choose LibrePhotos for configurable machine learning if you’ll accept more upkeep. I’d run Immich for a family and PhotoPrism for a photographer’s master archive.
Overview
These applications make different assumptions about your photos. Immich expects the server to receive new media. PhotoPrism works well with an archive you already manage. LibrePhotos scans an existing collection, then adds face recognition, captions, and search.
What We’re Comparing
| Product | Operating model | Best for | Main trade-off | Self-hosted price |
|---|---|---|---|---|
| Immich | Mobile-first uploads plus external-library support | Automatic phone backup and household sharing | Fast development means upgrades need discipline | $0 |
| PhotoPrism | Index or import a filesystem-centered archive | Large existing libraries, RAW files, maps, and curation | Mobile collection is less integrated | $0 Community Edition |
| LibrePhotos | Scan an existing directory and enrich it with machine learning | Technical operators and ML experiments | More setup, resource planning, and maintenance | $0 |
The software costs nothing. The server doesn’t. Budget for a local SSD, bulk storage, an independent backup, and perhaps an accelerator. A low-power Intel CPU with integrated graphics often makes more sense than a large GPU sitting idle.
Feature Comparison
At a Glance
| Capability | Immich | PhotoPrism | LibrePhotos |
|---|---|---|---|
| Automatic phone backup | Excellent | Limited compared with Immich; usually relies on companion workflows | Available workflows are less polished |
| Existing archive indexing | Good through external libraries | Excellent | Good |
| Face grouping | Excellent and configurable | Strong, with face maintenance tools | Strong but resource-intensive |
| Semantic or ML-assisted search | Strong | Strong search and classification | Strong ML focus |
| RAW-oriented archive work | Capable | Best fit | Capable, but test your formats |
| Video workflow | Strongest | Supported, but less mobile-centric | Less complete than Immich |
| Maps and metadata browsing | Strong | Strongest curation focus | Available |
| Filesystem-independent albums | Yes | Yes | Yes |
| Read-only source library | Supported for external libraries | Natural deployment pattern | Natural scan pattern |
| Hardware acceleration | Broad documented options | Useful for ML and media processing | ML benefits from capable CPU/GPU resources |
| Deployment complexity | Moderate | Low to moderate | Moderate to high |
| Upgrade caution required | High | Moderate | High |
| Best application-independent exit path | Good with external libraries or exported uploads | Excellent with filesystem-centered originals | Good with a clean scan directory |
Release files and available functions change. Download Compose files for the exact release you plan to install. A file from a development branch can turn a 20-minute deployment into an evening spent reading container logs.
Architecture and Deployment Model
Container count tells you little about complexity. State ownership tells you more. Before installation, identify the database, original-media paths, managed uploads, configuration, and generated data you can replace.
Immich
A normal Immich deployment uses several services. Its release-specific Compose file usually includes the server, a machine-learning service, PostgreSQL, and Redis or a similar support service. Service names can change, so inspect the release file before scripting backups.
Its important state usually includes:
UPLOAD_LOCATION, which contains managed photos, videos, thumbnails, profile images, and encoded media under Immich’s storage layout- PostgreSQL data
- The Compose file and
.env - External-library folders, if configured
- Machine-learning cache, which is useful but usually reproducible
The split design gives you control over scaling and accelerator access. It also creates more ways to be partly healthy. A green web container only proves that one container is green. It doesn’t prove uploads, search, PostgreSQL, or machine learning work.
PhotoPrism
PhotoPrism usually has a simpler layout: one PhotoPrism service, a supported SQL database, and persistent mounts. Those mounts hold originals, imports, and internal storage. Start with the official quick-start files.
The important paths are:
- Originals: source photos and videos
- Import: a staging directory, which must not be nested inside originals
- Storage: thumbnails, sidecars, cache, backups, and other application data
- Database volume: people, albums, labels, indexing state, accounts, and relationships
- Compose configuration and environment settings
This layout suits an archive where the filesystem remains authoritative. Mounting originals read-only blocks application-side changes. It also blocks any function that needs to write there. That trade is usually worthwhile for a carefully managed master library.
LibrePhotos
LibrePhotos has standard and unified deployment options. The standard setup separates the UI, backend, database, proxy, and support services. The current Compose file defines the exact split. The unified route hides some container detail, but you must still back up its persistent state.
Plan for:
- The scan directory containing originals
- LibrePhotos application data
- PostgreSQL data
- Configuration in
.env - Generated previews, indexes, and downloaded ML assets
- The current monorepo path where required by the standard deployment
LibrePhotos gives you more controls for face recognition and image captions. That’s useful when you want to tune the ML workload. It also leaves more configuration to inspect when a scan stalls at 02:00.
Section winner: PhotoPrism. Its source, import, storage, and database boundaries suit a filesystem-centered archive. Immich is easier for household users once running, but its backend needs more attention.


Library Import and Storage Behavior
This is the main decision. If you get storage behavior wrong, a nice search interface won’t make the restore pleasant.
Does Each Application Copy, Move, or Index Originals?
| Product and workflow | What happens to originals? | Can the folder make sense without the app? |
|---|---|---|
| Immich mobile upload | Files enter Immich-managed upload storage | Files remain files, but don’t assume the managed layout matches your preferred archive structure |
| Immich external library | Immich indexes media at an existing path | Yes, especially when mounted read-only and organized independently |
| PhotoPrism index | Existing originals remain in place and are indexed | Yes |
| PhotoPrism import | Files move from an import area into originals according to the configured behavior | Usually, but verify naming and organization with a test batch |
| LibrePhotos scan | Existing media is scanned from the configured directory | Yes, if that directory already has a clear layout |
| LibrePhotos upload | Behavior depends on the current deployment and upload workflow | Test before using it as the archive’s only ingest path |
Don’t aim an importer at the full family archive on day one. Test 50-100 representative files first. Include JPEG, HEIC, RAW, Live Photo pairs, edited images, videos, panoramas, and sidecar metadata. That sample catches more trouble than ten synthetic images.
Use Four Storage Boundaries
A maintainable deployment separates four kinds of data:
| Data class | Example | Backup priority | Recommended location |
|---|---|---|---|
| Originals or managed uploads | JPEG, HEIC, RAW, MOV, MP4 | Critical | Redundant bulk storage plus independent backup |
| Database state | Accounts, albums, face assignments, sharing records | Critical | Local SSD with database-aware backups |
| Configuration | Compose YAML, .env, proxy settings, version pins | Critical | Encrypted configuration backup |
| Generated data | Thumbnails, previews, ML cache, transcoded media | Medium | Local SSD or fast bulk storage |

Generated thumbnails aren’t originals. You can rebuild most of them, though a large collection may take several days. Database state needs more care. Losing it can remove albums, named people, shares, and accounts while every JPEG remains intact.
Why the Live Database Should Stay Local
Keep PostgreSQL and other live databases off ordinary SMB and NFS shares. Network delays, dropped connections, locking, and filesystem rules can hurt speed or corrupt data. Photos tolerate a slow mount better than a busy database.
A better arrangement is:
- Local SSD or Docker-managed local volume for the live database
- NAS or local hard disks for originals
- Scheduled database dumps or supported backups copied to independent storage
- A second backup target that the photo server can’t mount read-write
Section winner: PhotoPrism. It indexes an existing archive without becoming the only practical way to understand it. Immich offers similar safety with independent, read-only external libraries.
Search, Face Recognition, and Metadata
All three products turn file metadata and generated analysis into database records. That makes searches quick. Copying the original files alone won’t preserve all your work.
Immich
Immich has polished search, face grouping, people management, maps, metadata browsing, and ML-assisted discovery. Facial-recognition controls are under Administration > Settings > Machine Learning Settings > Facial Recognition.
Face detection creates model output and database links. Back up PostgreSQL if named people, merged faces, albums, and manual fixes matter. A fresh scan can detect faces again. It won’t reliably reproduce your later decisions.

PhotoPrism
PhotoPrism is good at exploring a mature collection. Its filters, maps, labels, RAW handling, stacking, face tools, and metadata views suit an archive built over years.
Stacking can group related files, but a wrong primary image can make face results look broken. Check Settings > Content when grouping looks odd. PhotoPrism also has maintenance commands for checking face data. You’ll appreciate those once manual review becomes impractical.


LibrePhotos
LibrePhotos puts face recognition, scene classification, and image captions near the center of its design. Settings such as ENABLE_FACE_RECOGNITION and ENABLE_IMAGE_CAPTIONING control costly functions. Check the current release documentation before setting them.
Those controls help on a shared server where CPU time and RAM aren’t free. Results also depend on enabled functions, downloaded models, and a completed scan. Check those three before blaming search quality.

Section winner: PhotoPrism for archive curation; Immich for daily search. PhotoPrism exposes more archive controls. Immich keeps search and people browsing simpler for household users.
Mobile Backup and Sharing
Immich
Immich is the clear choice for automatic phone backup. Its mobile clients watch selected device albums and send new media to the server. Users get a familiar timeline, albums, browser access, and partner-style sharing.
If the server goes offline, pending photos stay on the phone. Uploads resume when the connection returns. Available phone storage sets the actual limit. A seven-day outage is uneventful with 40 GB free and painful with 400 MB free.
An upload confirmation isn’t a complete backup. A phone and server in the same building can disappear together. Copy originals and database backups to another system or location.

PhotoPrism
PhotoPrism’s web interface works well on a phone, but background collection isn’t its main strength. Many operators use a separate sync or WebDAV-capable process. The collector puts phone media into a stable archive, then PhotoPrism indexes it.
That split gives you a clean archive boundary. It also creates two systems to watch. A successful transfer with a failed index differs from a failed transfer. Both look like “my photo is missing” to the person holding the phone.

LibrePhotos
LibrePhotos can receive and scan new media, but its phone workflow has more rough edges than Immich’s. It fits better when Syncthing, Nextcloud, or another process already fills the scan directory.
Section winner: Immich. It has the only clearly mobile-first workflow of the three.
Hardware and Accelerator Requirements
Initial indexing creates a burst workload. Daily browsing is much lighter. Size the host for the first scan. You can also process a large archive in batches to leave memory for other services.
| Resource | Immich | PhotoPrism | LibrePhotos |
|---|---|---|---|
| Practical minimum RAM | 4 GB for a small deployment; more for concurrent ML and video work | Official guidance starts at 3 GB physical memory | 8 GB is the safer target for enabled ML features |
| Comfortable RAM | 8-16 GB | 8 GB | 8-16 GB |
| Swap | Helpful on constrained hosts | 4 GB recommended, especially for indexing | Helpful, but not a substitute for RAM |
| Fast local SSD | Database, cache, ML data, thumbnails | Database and storage cache | Database, application data, and ML assets |
| GPU or iGPU | Materially helps transcoding and ML inference | Useful for supported acceleration paths and heavy indexing | Useful where supported, but deployment support needs verification |
| CPU-only operation | Supported; slower for large video/ML jobs | Supported | Supported, but initial ML processing can be slow |
These are planning figures, not fixed limits. A library of 25,000 JPEGs asks much less from the host than 25,000 RAW files, 4K videos, and panoramas.
When Acceleration Matters
Hardware acceleration earns its power budget when you:
- Transcode many HEVC or high-resolution videos
- Generate previews for a large video archive
- Run face detection or semantic models across tens of thousands of files
- Have several users viewing media at once
- Rebuild generated data after a failure
It matters less after indexing when one person mainly views JPEG thumbnails.
Immich documents acceleration for NVIDIA, Intel, AMD, OpenVINO, ArmNN, and other supported setups. The host driver and container device access must work first. An application setting can’t expose hardware that the container can’t see.

Can the GPU Be Shared?
Yes, in many homelab setups. Shared hardware still has limited memory and processing time. Intel integrated graphics can handle transcoding for several containers through /dev/dri. NVIDIA’s container runtime can expose one GPU to several services.
Watch memory pressure, active jobs, temperature, and scheduling. Two containers may work alone but fail when both start large ML jobs. Intel Quick Sync usually gives the best value for a mixed photo and media server. A discrete NVIDIA GPU makes sense when inference runs often or the host already handles CUDA work.
Section winner: Immich. It has the broadest documented acceleration support. PhotoPrism is easier to justify if you prefer a capable CPU and fewer device-specific container changes.
Windows Setup Through Docker Desktop
These are browser-based server applications. Docker Desktop runs their Linux containers. You won’t get native Windows photo applications.
Prerequisites
Use a current Docker Desktop release with Docker Compose v2 on 64-bit Windows. Give Docker at least 8 GB RAM for the first test. Keep the live database in Docker’s local Linux storage or on a suitable local disk. Avoid mapped network drives.
Confirm Compose from PowerShell:
docker compose versionExpected output resembles:
Docker Compose version v2.x.x
Deployment Workflow
- Download the supported release files:
- Immich:
docker-compose.ymlandexample.envfrom the current release - PhotoPrism: the Windows Compose file linked by its official quick start
- LibrePhotos: the documented standard or unified deployment
- Immich:
- Create separate Windows folders for originals, generated application data, and backups.
- Edit strong passwords and absolute volume paths.
- Open PowerShell in the deployment directory.
- Start the selected stack:
docker compose up -dExpected output should show services being created and started:
Container application-db Started
Container application-server Started
Check status:
docker compose psOpen the default local address:
| Application | Default address |
|---|---|
| Immich | http://localhost:2283 |
| PhotoPrism | http://localhost:2342 |
| LibrePhotos | http://localhost:3000 |
Docker Desktop needs permission to access every mounted host folder. Windows permissions and WSL-backed storage don’t always act like native Linux mounts. Restart the stack once and check every mount before importing the full archive.
macOS Setup Through Docker Desktop
Docker Desktop for macOS also runs these applications as Linux containers. Grant Docker access to photo folders and external drives before starting an index.
Prerequisites
Use a supported 64-bit Intel or Apple Silicon Mac with current Docker Desktop and Compose v2. Allocate 8 GB or more to Docker when ML functions will process a large collection.
Verify Compose in Terminal:
docker compose versionExpected output resembles:
Docker Compose version v2.x.x
Deployment Workflow
Download release-specific files from the official project documentation. Set absolute paths under locations Docker Desktop can share. Then start the stack from its deployment directory:
docker compose up -dVerify it:
docker compose psExpected output should list services with Up or running states. Health checks may need several minutes during the first model download or database setup. Give them time, but keep the logs open.
External drives add another failure mode. A disconnected drive or changed mount path can appear as an empty directory. Stop the stack before disconnecting archive storage. Confirm the mount path before starting it again.
Web Interface and Remote Access
All three products use a browser for their main desktop interface. Immich defaults to port 2283, PhotoPrism to 2342, and LibrePhotos to 3000. Your Compose mapping can change those ports.
For remote access, use a reverse proxy with HTTPS and strong authentication. Don’t publish the raw application port to the internet. A private VPN exposes less when only trusted devices need access.
After signing in, use stable settings pages instead of one-time setup screens:
- Immich: Administration > Settings
- PhotoPrism: Settings > Content and related library settings
- LibrePhotos: its reusable site or account settings page

Backup, Restore, Upgrades, and Rollback
A complete backup has several parts that must match. Copying the photo directory protects the photos. It leaves accounts, albums, people, and sharing records behind.
What Must Be Backed Up?
| Data | Why it matters | Restore priority |
|---|---|---|
| Original photos and videos | Irreplaceable media | First |
| Managed upload storage | May contain new media not present elsewhere | First |
| Database | Accounts, albums, people, metadata relationships, sharing | First |
Compose file and .env | Recreates paths, credentials, ports, and versions | First |
| Sidecars and application metadata | May preserve edits, labels, or metadata | High |
| Thumbnails and previews | Saves rebuilding time | Optional to high |
| ML cache and models | Saves downloads or computation | Usually optional |
Stage an Upgrade Safely
Use this sequence for all three products:
- Read the release notes and migration warnings.
- Record the current image tags and Compose file.
- Pause mobile uploads or notify users about the maintenance window.
- Create a database-consistent backup.
- Back up configuration and any new managed uploads.
- Test restoration or clone the stack to a staging host when the collection matters.
- Pull only the intended release.
- Start the stack and watch database migration logs.
- Verify sign-in, search, uploads, people, albums, video playback, and indexing.
- Keep the previous images, configuration, and matching database backup until verification finishes.
Useful read-only checks include:
docker compose config
docker compose ps
docker compose logs --tail=100Expected healthy status resembles:
NAME STATUS
application-server Up
application-db Up (healthy)
The first command catches malformed Compose changes before they reach a running service. It’s a cheap check. Run it.
Rollback Rules
Don’t run an older image against a database migrated by a newer release unless the project supports it. A proper rollback restores three matching pieces:
- The previous application image versions
- The previous Compose and environment configuration
- The database backup taken before migration
Restore generated thumbnails only when rebuilding would take too long. Handle originals with care, and don’t overwrite mobile uploads created after the backup. Database rollback is stressful enough without deleting Tuesday’s photos.
Section winner: PhotoPrism. Its slower-moving, archive-first role suits conservative operators. Immich can be maintained safely, but its update pace requires closer release-note checks and regular restore tests.
Pricing Comparison
| Cost area | Immich | PhotoPrism | LibrePhotos |
|---|---|---|---|
| Self-hosted entry price | $0 | $0 Community Edition | $0 |
| Optional paid offering | Check current official project options | Plus/Pro offerings exist; verify current portal pricing | No price assumed here |
| Required server | Yes | Yes | Yes |
| Independent backup | Strongly recommended | Strongly recommended | Strongly recommended |
| Likely hardware spend | Storage; optional iGPU/GPU | Storage, RAM, and swap; optional acceleration | More RAM and potentially faster ML hardware |
| Operator time | Moderate, especially around upgrades | Low to moderate | Highest |
PhotoPrism has separate commercial options. Pricing and rights can change, so check its official customer portal before buying. A fixed price in a comparison ages badly.
The cheapest deployment usually matches your ingest model. Making PhotoPrism act like a mobile-first platform adds sync tools. Using Immich only for archive curation adds services you may never need. LibrePhotos costs $0 to download, but someone still pays for the maintenance time.
Troubleshooting
The Web Interface Does Not Open
Check service state and recent logs:
docker compose ps
docker compose logs --tail=100Confirm free disk space, RAM, folder permissions, and the published port. First startup can take several minutes while databases start or ML assets download. A container that keeps restarting needs logs, not another browser refresh.
PhotoPrism Stops During Indexing
TensorFlow processing, RAW conversion, or large panoramas can exhaust memory. Provide at least 3 GB of physical memory and 4 GB of swap as documented. In practice, 8 GB RAM gives indexing more room. Resume with a small batch before scanning everything.
PhotoPrism Repeatedly Imports Files
Check whether the import directory sits inside the originals directory. Keep those mounts separate, verify permissions, and confirm the import path is writable. Run a disposable test batch before processing irreplaceable media.
Immich Does Not Use the GPU
An application setting can’t fix missing host access. Verify the host driver first. Then expose the supported device or NVIDIA runtime to the correct container with the current acceleration Compose file. Recreate the stack and inspect the logs.
LibrePhotos Cannot Find Its Configuration
Use Docker Compose v2 and confirm you copied the documented environment template to .env. Check scanDirectory, data, and any required absolute codedir path against the current monorepo deployment.
LibrePhotos may need 10-20 minutes for its first build, model download, and setup. Watch the logs before calling it failed. If the same error repeats for 20 minutes, patience has completed its part of the diagnosis.
Albums or People Disappear After an Upgrade
The original files survived, but the database state didn’t. Preserve the current volumes and stop further writes. Restore the matching database backup with the application version and configuration that created it.
Which Should You Choose?
Choose Immich if:
- Automatic iPhone or Android photo backup is the primary requirement.
- Household members need a familiar timeline and sharing experience.
- Video transcoding and mobile playback matter.
- You have a disciplined database and upload-storage backup process.
- You are comfortable reading release notes before upgrades.
- You want the best overall self-hosted Google Photos replacement.
Choose PhotoPrism if:
- You already have a large, organized photo archive.
- Folder structure and application-independent access matter.
- You work with RAW files, maps, metadata, and curation tools.
- You want the lowest operational burden for a conservative archive server.
- Phone uploads can arrive through a separate sync workflow.
- You prefer indexing originals without making the application their sole owner.
Choose LibrePhotos if:
- You want open, configurable face recognition and image captions.
- You are comfortable fixing Compose, environment-file, and ML service problems.
- You have at least 8 GB RAM for a practical ML-enabled deployment.
- Another process already puts photos into a scan directory.
- You want to experiment and contribute rather than reduce maintenance.
Best Fit by Operator Profile
| Operator profile | Recommendation | Why |
|---|---|---|
| Family replacing Google Photos | Immich | Best mobile backup and daily user experience |
| Photographer with a structured NAS archive | PhotoPrism | Strong indexing, RAW handling, maps, and filesystem independence |
| Conservative home-server operator | PhotoPrism | Clear storage boundaries and a less mobile-dependent workflow |
| Developer exploring photo ML | LibrePhotos | Configurable recognition and captioning stack |
| Mixed archive plus new phone uploads | Immich, with an external-library design | Strong ingest plus access to existing media |
| Low-memory server | PhotoPrism, with swap and conservative indexing | Clear minimum guidance; disable or limit heavy functions |
| Non-technical household with a technical administrator | Immich | Admin work stays behind a simple user experience |
Immich
- Best automatic phone backup
- Polished timeline, search, maps, people, albums, and sharing
- Strong video handling
- Broad hardware-acceleration options
- External libraries provide an archive-friendly path
- Fast development increases upgrade risk
- Multi-service architecture has more state to monitor
- Managed storage may not match a human-designed archive
- Complete recovery requires uploads, database, and configuration
- Initial ML and video processing can be demanding
PhotoPrism
- Excellent for indexing an existing archive
- Strong search, maps, RAW support, stacking, and curation
- Clear separation among originals, import, storage, and database
- Works well with read-only originals
- Good application-independent exit path
- Automatic phone backup is less integrated than Immich
- Initial indexing can exhaust memory without swap
- Stacking and face records sometimes need maintenance
- A separate ingest tool may be needed
- Some offerings and functions require checking current edition details
LibrePhotos
- Configurable face recognition and image captions
- Good fit for scanning an existing directory
- Open, developer-friendly project
- Machine-learning functions can be adjusted to available resources
- Standard and unified deployment choices
- Highest operational burden of the three
- Eight gigabytes or more of RAM is a sensible target
- Deployment guidance can change with monorepo structure
- Mobile backup is less cohesive than Immich
- Initial builds, models, and scans can take substantial time
Frequently Asked Questions
Which Platform Is Best for Automatic Phone-Photo Backup?
Immich. Its mobile applications and server workflow focus on automatic camera-roll collection. Pending uploads resume after an outage if the phone keeps the files and has enough free storage.
Which Is Best for Indexing an Existing Photo Archive?
PhotoPrism. It treats an existing originals directory as a primary workflow. It also has strong search, maps, RAW support, stacking, and metadata tools. Immich external libraries come close when you also need mobile backup.
Which Requires the Least Operational Work?
PhotoPrism usually needs the least work for a stable, filesystem-centered archive. Immich asks more from the administrator during upgrades but less from household users each day. LibrePhotos needs the most hands-on attention.
Can the Original Library Be Understood Without the Application?
Yes, if you start with a clear folder structure. Use PhotoPrism indexing, LibrePhotos scanning, or an Immich external library. Managed uploads remain ordinary files, though their layout may differ from the archive tree you’d design.
How Difficult Is Migration?
Migration is easiest when originals stay in a documented, application-independent folder tree. Another manager can scan those files. Albums, face names, shares, stacks, and edits may not transfer. Export metadata and sidecars where supported, then test the destination with a copy.
Is Copying the Photo Directory a Complete Backup?
No. Back up the database, configuration, and every managed upload path too. Without the database, the media survives while albums, people, users, and sharing records disappear.
Should Generated Thumbnails Be Backed Up?
They’re usually reproducible, so originals and database state come first. Back up thumbnails if rebuilding them would take several days or put too much load on the server.
Can Originals Live on a NAS?
Yes, if the application supports the mount and the network link is reliable. Read-only access works well for an established archive. Keep the live database on local persistent storage, and maintain an independent NAS backup.
Final Verdict
Immich wins for most households because phone backup is hard to replace cleanly. That choice requires PostgreSQL and upload backups, pinned releases, and planned upgrades.
PhotoPrism remains my choice for an established master archive. LibrePhotos suits operators who want configurable ML and accept more upkeep. Choose based on the job: collecting new photos, curating old ones, or testing image analysis.
Score Summary
| Category | Immich | PhotoPrism | LibrePhotos |
|---|---|---|---|
| Mobile workflow | 9.5/10 | 6.0/10 | 5.5/10 |
| Existing archive handling | 8.0/10 | 9.5/10 | 8.0/10 |
| Search and organization | 9.0/10 | 9.0/10 | 8.0/10 |
| Hardware flexibility | 9.0/10 | 7.5/10 | 7.0/10 |
| Maintenance burden | 7.0/10 | 8.5/10 | 6.0/10 |
| Recovery and exit path | 8.0/10 | 9.0/10 | 7.5/10 |
| Overall | 8.7/10 | 8.5/10 | 7.0/10 |
Wrapping Up
Use Immich for a phone-first household, PhotoPrism for a maintained archive, and LibrePhotos for a hands-on ML lab. Separate originals, database state, generated files, and configuration. Prove the restore works before trusting any of them with 15 years of photos.
| Step | Action | Applies to |
|---|---|---|
| 1 | Pick the ingest model: mobile upload or archive indexing | All |
| 2 | Separate originals, database, configuration, and generated data | All |
| 3 | Keep the live database on local storage | All |
| 4 | Test 50-100 representative files | All |
| 5 | Back up and restore before the full import | All |
| 6 | Pin releases and stage upgrades | All |
This comparison reflects project documentation and deployment guidance reviewed on August 20, 2026. Features, editions, deployment files, and pricing may change.