Both projects run in Docker and replace Google Photos. But they disagree on what "replace" means, and that shapes everything from mobile backup to how your files sit on disk.
If you've spent any time in self-hosting communities over the past couple of years, you've seen the question come up constantly: Immich or PhotoPrism? I've run both in production — Immich for my family's phones, PhotoPrism for a separate archive of older photos pulled off hard drives — and the honest answer is that they're not really competing for the same job. They look similar in screenshots but diverge sharply once you're actually living with them. Both are self-hosted photo library tools, but they solve different problems in practice.
What each one is actually for
The cleanest way to think about this: Immich replaces your phone's photo cloud. PhotoPrism organizes a photo library you already have on disk.
Immich owns the files, as SSD Nodes puts it in their comparison. You point it at an upload location, the phone app sends originals in, and Immich stores them under its own path with its own naming convention. The database is the source of truth about albums, faces, and search. You can find the project itself at github.com/immich-app/immich. PhotoPrism takes the opposite approach: you mount an originals folder you already control, and PhotoPrism builds an index over it. Remove PhotoPrism tomorrow, and your photos sit there in the same folders with the same names. PhotoPrism's project page and documentation live at github.com/photoprism/photoprism.
That architectural split drives almost every practical difference between the two.
Mobile backup: where Immich pulls ahead decisively
If the reason you're self-hosting is to get your family's phones off Google Photos, Immich is the obvious choice. It ships native iOS and Android apps that handle background upload reliably. The experience is close enough to Google Photos that non-technical family members can use it without noticing much difference — timeline view, pinch-to-zoom on the grid, background sync that just works.
PhotoPrism doesn't have a dedicated mobile app in the same sense. You can access it through a browser on your phone, and third-party tools like Syncthing or the WebDAV protocol can push files to the server, but that's a fundamentally different experience from "install an app, log in, forget about it." For a household where multiple people need automatic camera roll backup, this gap alone makes the decision.
I set up Immich for my partner and parents. None of them have ever opened a terminal. They installed the app, entered the server URL, and their photos started uploading. That's the bar Google Photos set, and Immich clears it.
Search, face recognition, and ML tagging
Both projects run machine learning models locally to tag and search your library — no cloud calls, no third-party API keys. But the implementations feel different in practice.
Immich's ML pipeline has matured quickly. Face recognition groups people across your library automatically, and the CLIP-based search lets you type natural language queries like "dog on the beach" and get reasonable results. Immich's development pace has been notably fast, as rHomelab's comparison notes, with frequent updates to its ML models and search capabilities.
PhotoPrism also does face recognition and has a classification system that tags photos with labels (landscape, food, portrait). Its search is solid for metadata queries — dates, locations, camera models — and the ML-based classification works, though I've found it less flexible than Immich's natural language approach. PhotoPrism's strength is that it reads and respects existing EXIF and XMP metadata deeply, which matters if you've spent years tagging photos in Lightroom or digiKam.
Both need real hardware to run the ML indexing. Expect the initial scan of a large library to take hours on modest hardware regardless of which you choose. Ongoing classification of new uploads is fast on either platform once the initial index is built.
Storage model and data portability
This is where the philosophical split gets practical, and where your choice should depend on how you think about data ownership.
PhotoPrism's read-only relationship with your originals folder is genuinely appealing if you care about filesystem portability. Your directory structure stays intact. You can browse, reorganize, or back up your photos with any standard tool. PhotoPrism is a lens over your files, not a container for them.
Immich controls the storage layout. Photos uploaded through the app end up in Immich's internal directory structure, organized by upload date and user. You can export, and the project has improved its export tooling, but your files live inside Immich's world.
Immich's design is what makes the phone experience work well, as Aside House's comparison puts it, because the server always knows the full state of every asset. The tradeoff is that walking away from Immich requires an explicit migration step.
In short: Immich controls storage so it can guarantee a seamless phone experience, while PhotoPrism indexes existing folders so it can guarantee you never lose control of your directory structure.
For my archive of old photos — scans, DSLR shoots organized into dated folders over a decade — PhotoPrism was the right fit. I didn't want any tool rearranging that structure. For phone backups, where the photos have no pre-existing organization, Immich's approach is fine.
Release cadence and upgrade risk
This matters most if you're running either for a household and don't want maintenance to become a second job.
Immich moves fast. The project recently shipped Immich's version 3.0.0 release notes, a major release that included breaking changes. That velocity is a double-edged sword: you get new features and fixes quickly, but major version bumps can require migration steps, database changes, or config file updates. If you're running Immich, you should read release notes before updating and keep database backups current. The project's documentation has improved substantially, but "just pull the latest Docker image" isn't always safe across major versions.
PhotoPrism's cadence is calmer. Updates come less frequently, and breaking changes are rarer. For someone who wants to set up a photo server and largely forget about it for months at a time, that stability has real value. The flip side is that feature requests and bug fixes take longer to land.
My practical advice: if you run Immich, pin your Docker image to a specific version tag and update deliberately. Don't use latest in production. This applies to PhotoPrism too, but the consequences of an unplanned update are generally less dramatic there.
Neither Immich nor PhotoPrism Is a Backup
One point both projects' communities stress and that bears repeating: self-hosted photo management is not the same as backup. Your Immich or PhotoPrism instance protects you from Google's pricing and privacy model. It does not protect you from a dead hard drive.
You still need a real backup strategy — ideally following the 3-2-1 rule (three copies, two media types, one offsite). Restic, Borg, or even rsync to a second machine will do. The photo server is the interface to your library, not the insurance policy for it.
Which one fits your setup
Pick Immich if: you're replacing Google Photos for a household, you want automatic phone backup with a real mobile app, and you're comfortable with a faster-moving project that occasionally requires hands-on upgrades.
Pick PhotoPrism if: you already have a large photo library on disk that you want to search and browse without reorganizing, you value filesystem-level data portability, and you prefer a slower, more stable release cadence.
Both are genuinely good software solving a real problem. The right choice depends on whether your primary need is getting photos off phones or making sense of photos you already have. For some people — myself included — the answer is both, running side by side, each doing the job it was designed for.