01ba57976635744174b0511c0950faf3c9bcfc18
asset_face, stack and workflow were the only tables with an updateId column but no index on it. Face and stack sync (AssetFacesV1/V2, StacksV1, PartnerStacksV1) filter and order on updateId, so every mobile sync seq-scanned every face on the instance and walked all of the user's (or partners') stacks, even when nothing had changed. workflow isn't synced; it gets the index for consistency. Incremental sync with nothing changed, PG 14: | query | before | after | | ---------------------------------- | -------- | -------- | | assetFace.getUpserts (425k faces) | 33-37 ms | 0.15 ms | | stack.getUpserts (6k stacks) | 0.8 ms | 0.004 ms | | partnerStack.getUpserts (6k) | 0.6 ms | 0.007 ms | The face scan grows with the instance's face count (~10x that at 4M faces); the stack one with the user's stack count. (cherry picked from commit 9df807ed4a9536a28dad463270082095ec1fe94d)
High performance self-hosted photo and video management solution
Català Español Français Italiano 日本語 한국어 Deutsch Nederlands Türkçe 简体中文 正體中文 Українська Русский Български Português Brasileiro Svenska العربية Tiếng Việt ภาษาไทย മലയാളം
Warning
⚠️ Always follow 3-2-1 backup plan for your precious photos and videos!
Note
You can find the main documentation, including installation guides, at https://immich.app/.
Links
Demo
Access the demo here. For the mobile app, you can use https://demo.immich.app for the Server Endpoint URL.
Login credentials
| Password | |
|---|---|
| demo@immich.app | demo |
Features
| Features | Mobile | Web |
|---|---|---|
| Upload and view videos and photos | Yes | Yes |
| Auto backup when the app is opened | Yes | N/A |
| Prevent duplication of assets | Yes | Yes |
| Selective album(s) for backup | Yes | N/A |
| Download photos and videos to local device | Yes | Yes |
| Multi-user support | Yes | Yes |
| Album and Shared albums | Yes | Yes |
| Scrubbable/draggable scrollbar | Yes | Yes |
| Support raw formats | Yes | Yes |
| Metadata view (EXIF, map) | Yes | Yes |
| Search by metadata, objects, faces, and CLIP | Yes | Yes |
| Administrative functions (user management) | No | Yes |
| Background backup | Yes | N/A |
| Virtual scroll | Yes | Yes |
| OAuth support | Yes | Yes |
| API Keys | N/A | Yes |
| LivePhoto/MotionPhoto backup and playback | Yes | Yes |
| Support 360 degree image display | No | Yes |
| User-defined storage structure | Yes | Yes |
| Public Sharing | Yes | Yes |
| Archive and Favorites | Yes | Yes |
| Global Map | Yes | Yes |
| Partner Sharing | Yes | Yes |
| Facial recognition and clustering | Yes | Yes |
| Memories (x years ago) | Yes | Yes |
| Offline support | Yes | No |
| Read-only gallery | Yes | Yes |
| Stacked Photos | Yes | Yes |
| Tags | No | Yes |
| Folder View | Yes | Yes |
Translations
Read more about translations here.
Repository activity
Contributors
Languages
TypeScript
53.6%
Dart
28.1%
Svelte
12.2%
Python
2.2%
Kotlin
1.4%
Other
2.2%