{"id":13490741,"url":"https://github.com/meichthys/foss_photo_libraries","last_synced_at":"2026-01-31T05:34:02.116Z","repository":{"id":40255976,"uuid":"507383783","full_name":"meichthys/foss_photo_libraries","owner":"meichthys","description":"Free and Open Source Photo Libraries","archived":false,"fork":false,"pushed_at":"2026-01-28T06:52:54.000Z","size":594,"stargazers_count":2682,"open_issues_count":28,"forks_count":64,"subscribers_count":29,"default_branch":"main","last_synced_at":"2026-01-28T22:38:38.211Z","etag":null,"topics":["alternatives","applications","comparison","cross-platform","foss","free","gallery","images","list","open-source","photo","photo-library","photo-storage","photos","picture-viewer","pictures","screenshots","self-hosted"],"latest_commit_sha":null,"homepage":"https://meichthys.github.io/foss_photo_libraries/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/meichthys.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-06-25T18:07:49.000Z","updated_at":"2026-01-28T16:18:12.000Z","dependencies_parsed_at":"2024-01-06T10:12:29.100Z","dependency_job_id":"8d5452bc-e0cc-4f7a-9df8-1844475b4671","html_url":"https://github.com/meichthys/foss_photo_libraries","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/meichthys/foss_photo_libraries","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meichthys%2Ffoss_photo_libraries","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meichthys%2Ffoss_photo_libraries/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meichthys%2Ffoss_photo_libraries/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meichthys%2Ffoss_photo_libraries/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/meichthys","download_url":"https://codeload.github.com/meichthys/foss_photo_libraries/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meichthys%2Ffoss_photo_libraries/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28930405,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-31T04:05:25.756Z","status":"ssl_error","status_checked_at":"2026-01-31T04:02:35.005Z","response_time":128,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["alternatives","applications","comparison","cross-platform","foss","free","gallery","images","list","open-source","photo","photo-library","photo-storage","photos","picture-viewer","pictures","screenshots","self-hosted"],"created_at":"2024-07-31T19:00:50.535Z","updated_at":"2026-01-31T05:34:02.109Z","avatar_url":"https://github.com/meichthys.png","language":"Python","funding_links":["https://liberapay.com/meichthys/donate"],"categories":["HTML","Technical","Python","open-source"],"sub_categories":[],"readme":"# 📸 Free and OpenSource Photo Libraries\n\nThere are many great free and open-source alternatives to closed source and/or paid photo libraries. This project aims to track and compare the feature set between the many different options with a focus on 'Gratis' (free as in free beer) open source photo libraries. 'Libre' (free as in free speech) projects are also welcome, but will likely need to be submitted via a pull request since the time in testing each different project is significant.\n\n⚠️ Disclaimer: This repository displays both objective and subjective measures of feature quality. The owner of this repository reserves the right to make changes to any pull request.\n\n## ⚖️ Comparison\n\n```text\n✅ = Feature exists in at least a limited fashion\n🚧 = Feature may exist but may not be practical or officially released\n❌ = Feature does not yet exist\n#️⃣ = Subjective measure of feature quality (on scale of 0-10)\nTip: Hover over emoji for additional information (🔗 link to related issue, 🔑 demo credentials, etc)\n```\n\n\n| Feature | [Chevereto](https://github.com/chevereto/chevereto) | [Damselfly](https://github.com/Webreaper/Damselfly) | [Ente](https://github.com/ente-io/ente) | [HomeGallery](https://github.com/xemle/home-gallery) | [Immich](https://github.com/immich-app/immich) | [Librephotos](https://github.com/LibrePhotos/librephotos) | [Lychee](https://github.com/LycheeOrg/Lychee) | [Nextcloud Photos](https://github.com/nextcloud/photos) | [Nextcloud Memories](https://github.com/pulsejet/memories) | [Photonix](https://github.com/photonixapp/photonix) | [Photofield](https://github.com/SmilyOrg/photofield) | [PiGallery2](https://github.com/bpatrik/pigallery2) | [Photoprism](https://github.com/photoprism/photoprism) | [Photoview](https://github.com/photoview/photoview) | [Piwigo](https://github.com/Piwigo/Piwigo) | [Snapcrescent](https://github.com/snapcrescent/snapcrescent) |\n| :------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------- | ---------------------------------------------------- | ---------------------------------------------- | --------------------------------------------------------- | --------------------------------------------- | ------------------------------------------------------- | ---------------------------------------------------------- | --------------------------------------------------- | ---------------------------------------------------- | --------------------------------------------------- | ------------------------------------------------------ | --------------------------------------------------- | ------------------------------------------ | ------------------------------------------------------------ |\n| Logo | \u003cimg src=\"https://raw.githubusercontent.com/chevereto/chevereto/4.2/content/images/system/default/favicon.png\" style=\"width: 50px\"  alt=\"Chevreto Logo\"/\u003e | \u003cimg src=\"https://raw.githubusercontent.com/Webreaper/Damselfly/master/docs/cropped-Damselfly-Logo.webp\" style=\"width: 50px\"  alt=\"Dameslfly Logo\"/\u003e | \u003cimg src=\"https://raw.githubusercontent.com/ente-io/ente/main/docs/docs/public/logo.png\" style=\"width: 50px\"  alt=\"Ente Logo\"/\u003e | \u003cimg src=\"https://github.com/xemle/home-gallery/blob/master/packages/webapp/public/logo.svg\" style=\"width: 50px\"  alt=\"HomeGallery Logo\"/\u003e | \u003cimg src=\"https://raw.githubusercontent.com/immich-app/immich/main/mobile/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png\" style=\"width: 50px\"  alt=\"Immich Logo\"/\u003e | \u003cimg src=\"https://raw.githubusercontent.com/LibrePhotos/librephotos/dev/screenshots/lp-white.png\" style=\"width: 50px\"  alt=\"Librephotos Logo\"/\u003e | \u003cimg src=\"https://avatars.githubusercontent.com/u/37916028\" style=\"width: 50px\"  alt=\"Lychee Logo\"/\u003e | \u003cimg src=\"https://raw.githubusercontent.com/nextcloud/android/master/app/src/main/res/mipmap-xxhdpi/ic_launcher.png\" style=\"width: 50px\"  alt=\"NextcloudPhotos Logo\"/\u003e | \u003cimg src=\"https://raw.githubusercontent.com/pulsejet/memories/master/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png\" style=\"width: 50px\"  alt=\"Memories Logo\"/\u003e | \u003cimg src=\"https://raw.githubusercontent.com/photonixapp/photonix/master/ui/public/favicon.png\" style=\"width: 50px\"  alt=\"Photonix Logo\"/\u003e | \u003cimg src=\"https://raw.githubusercontent.com/SmilyOrg/photofield/main/ui/public/android-chrome-512x512.png\" style=\"width: 50px\"  alt=\"Photofield Logo\"/\u003e | \u003cimg src=\"https://raw.githubusercontent.com/bpatrik/pigallery2/master/docs/assets/icon.png\" style=\"width: 50px\"  alt=\"PiGallery2 Logo\"/\u003e | \u003cimg src=\"https://raw.githubusercontent.com/photoprism/photoprism/develop/assets/static/icons/app/512.png\" style=\"width: 50px\"  alt=\"Photoprism Logo\"/\u003e | \u003cimg src=\"https://raw.githubusercontent.com/photoview/photoview/master/ui/public/logo512.png\" style=\"width: 50px\"  alt=\"Photoview Logo\"/\u003e | \u003cimg src=\"https://raw.githubusercontent.com/Piwigo/Piwigo/d69bc8b88434cf065b63bac87a4adcc8143ddb21/themes/default/icon/piwigo.org-icon%201.svg\" style=\"width: 50px\"  alt=\"Piwigo Logo\"/\u003e | \u003cimg src=\"https://raw.githubusercontent.com/snapcrescent/snapcrescent/main/snapcrescent_mobile/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png\" style=\"width: 50px\"  alt=\"Snapcrescent Logo\"/\u003e |\n| [Github Stars](features.md#github-stars) | ![?](https://img.shields.io/github/stars/chevereto/chevereto?label=%20) | ![?](https://img.shields.io/github/stars/Webreaper/Damselfly?label=%20) | ![?](https://img.shields.io/github/stars/ente-io/ente?label=%20) | ![?](https://img.shields.io/github/stars/xemle/home-gallery?label=%20) | ![?](https://img.shields.io/github/stars/immich-app/immich?label=%20) | ![?](https://img.shields.io/github/stars/LibrePhotos/librephotos?label=%20) | ![?](https://img.shields.io/github/stars/LycheeOrg/Lychee?label=%20) | ![?](https://img.shields.io/github/stars/nextcloud/photos?label=%20) | ![?](https://img.shields.io/github/stars/pulsejet/memories?label=%20) | ![?](https://img.shields.io/github/stars/photonixapp/photonix?label=%20) | ![?](https://img.shields.io/github/stars/SmilyOrg/photofield?label=%20) | ![?](https://img.shields.io/github/stars/bpatrik/pigallery2?label=%20) | ![?](https://img.shields.io/github/stars/photoprism/photoprism?label=%20) | ![?](https://img.shields.io/github/stars/photoview/photoview?label=%20) | ![?](https://img.shields.io/github/stars/Piwigo/Piwigo?label=%20) | ![?](https://img.shields.io/github/stars/snapcrescent/snapcrescent?label=%20) |\n| [Contributors](features.md#contributors) | ![?](https://img.shields.io/github/contributors/chevereto/chevereto?label=%20) | ![?](https://img.shields.io/github/contributors/webreaper/damselfly?label=%20) | ![?](https://img.shields.io/github/contributors/ente-io/ente?label=%20) | ![?](https://img.shields.io/github/contributors/xemle/home-gallery?label=%20) | ![?](https://img.shields.io/github/contributors/immich-app/immich?label=%20) | ![?](https://img.shields.io/github/contributors/librephotos/librephotos?label=%20) | ![?](https://img.shields.io/github/contributors/lycheeorg/lychee?label=%20) | ![?](https://img.shields.io/github/contributors/nextcloud/photos?label=%20) | ![?](https://img.shields.io/github/contributors/pulsejet/memories?label=%20) | ![?](https://img.shields.io/github/contributors/photonixapp/photonix?label=%20) | ![?](https://img.shields.io/github/contributors/smilyorg/photofield?label=%20) | ![?](https://img.shields.io/github/contributors/bpatrik/pigallery2?label=%20) | ![?](https://img.shields.io/github/contributors/photoprism/photoprism?label=%20) | ![?](https://img.shields.io/github/contributors/photoview/photoview?label=%20) | ![?](https://img.shields.io/github/contributors/piwigo/piwigo?label=%20) | ![?](https://img.shields.io/github/contributors/snapcrescent/snapcrescent?label=%20) |\n| [Last Commit](features.md#last-commit) | ![?](https://img.shields.io/github/last-commit/chevereto/chevereto/4.4?label=%20) | ![?](https://img.shields.io/github/last-commit/webreaper/damselfly/master?label=%20) | ![?](https://img.shields.io/github/last-commit/ente-io/ente/main?label=%20) | ![?](https://img.shields.io/github/last-commit/xemle/home-gallery/master?label=%20) | ![?](https://img.shields.io/github/last-commit/immich-app/immich/main?label=%20) | ![?](https://img.shields.io/github/last-commit/librephotos/librephotos/dev?label=%20) | ![?](https://img.shields.io/github/last-commit/lycheeorg/lychee/master?label=%20) | ![?](https://img.shields.io/github/last-commit/nextcloud/photos/master?label=%20) | ![?](https://img.shields.io/github/last-commit/pulsejet/memories/master?label=%20) | ![?](https://img.shields.io/github/last-commit/photonixapp/photonix/master?label=%20) | ![?](https://img.shields.io/github/last-commit/smilyorg/photofield/main?label=%20) | ![?](https://img.shields.io/github/last-commit/bpatrik/pigallery2/master?label=%20) | ![?](https://img.shields.io/github/last-commit/photoprism/photoprism/develop?label=%20) | ![?](https://img.shields.io/github/last-commit/photoview/photoview/master?label=%20) | ![?](https://img.shields.io/github/last-commit/piwigo/piwigo/master?label=%20) | ![?](https://img.shields.io/github/last-commit/snapcrescent/snapcrescent/main?label=%20) |\n| [Source Language](features.md#source-language) | ![GitHub top language](https://img.shields.io/github/languages/top/chevereto/chevereto) | ![GitHub top language](https://img.shields.io/github/languages/top/webreaper/damselfly) | ![GitHub top language](https://img.shields.io/github/languages/top/ente-io/ente) | ![GitHub top language](https://img.shields.io/github/languages/top/xemle/home-gallery) | ![GitHub top language](https://img.shields.io/github/languages/top/immich-app/immich) | ![GitHub top language](https://img.shields.io/github/languages/top/librephotos/librephotos) | ![GitHub top language](https://img.shields.io/github/languages/top/lycheeorg/lychee) | ![GitHub top language](https://img.shields.io/github/languages/top/nextcloud/photos) | ![GitHub top language](https://img.shields.io/github/languages/top/pulsejet/memories) | ![GitHub top language](https://img.shields.io/github/languages/top/photonixapp/photonix) | ![GitHub top language](https://img.shields.io/github/languages/top/smilyorg/photofield) | ![GitHub top language](https://img.shields.io/github/languages/top/bpatrik/pigallery2) | ![GitHub top language](https://img.shields.io/github/languages/top/photoprism/photoprism) | ![GitHub top language](https://img.shields.io/github/languages/top/photoview/photoview) | ![GitHub top language](https://img.shields.io/github/languages/top/piwigo/piwigo) | ![GitHub top language](https://img.shields.io/github/languages/top/snapcrescent/snapcrescent) |\n| [License](features.md#license) | ![?](https://img.shields.io/github/license/chevereto/chevereto?label=%20) | ![?](https://img.shields.io/github/license/Webreaper/Damselfly?label=%20) | ![?](https://img.shields.io/github/license/ente-io/ente?label=%20) | ![?](https://img.shields.io/github/license/xemle/home-gallery?label=%20) | ![?](https://img.shields.io/github/license/immich-app/immich?label=%20) | ![?](https://img.shields.io/github/license/LibrePhotos/librephotos?label=%20) | ![?](https://img.shields.io/github/license/LycheeOrg/Lychee?label=%20) | ![?](https://img.shields.io/github/license/nextcloud/photos?label=%20) | ![?](https://img.shields.io/github/license/pulsejet/memories?label=%20) | ![?](https://img.shields.io/github/license/photonixapp/photonix?label=%20) | ![?](https://img.shields.io/github/license/SmilyOrg/photofield?label=%20) | ![?](https://img.shields.io/github/license/bpatrik/pigallery2?label=%20) | ![?](https://img.shields.io/static/v1?label=%20\u0026message=GPL-3.0\u0026color=orange) | ![?](https://img.shields.io/github/license/photoview/photoview?label=%20) | ![?](https://img.shields.io/github/license/Piwigo/Piwigo?label=%20) | ![?](https://img.shields.io/github/license/snapcrescent/snapcrescent?label=%20) |\n| [Demo](features.md#demo) | [✅5️⃣](https://demo.chevereto.com/) | ❌ | ✅3️⃣ | [✅6️⃣](https://demo.home-gallery.org/https://demo.photoprism.app/library/brow) | [✅8️⃣](https://demo.immich.app/) | [✅5️⃣](https://demo2.librephotos.com/) | [✅9️⃣](https://demo.lycheeorg.dev) | [✅4️⃣](https://nextcloud.com/instant-trial/) | [✅4️⃣](https://demo.memories.gallery/apps/memories/) | [✅8️⃣](https://demo.photonix.org/login) | [✅6️⃣](https://demo.photofield.dev/) | [✅8️⃣](https://pigallery2.onrender.com/) | [✅9️⃣](https://demo.photoprism.app/library/browse) | [✅9️⃣](https://photos.qpqp.dk/) | [✅9️⃣](https://piwigo.org/demo) | [✅9️⃣](https://demo.snapcrescent.app) |\n| [Freeness](features.md#freeness) | [✅5️⃣](https://rodolfoberrios.com/2022/12/01/chevereto-goes-free/) | ✅🔟 | ✅🔟 | ✅🔟 | ✅🔟 | ✅🔟 | ✅🔟 | ✅🔟 | ✅🔟 | ✅🔟 | ✅🔟 | ✅🔟 | [🚧7️⃣](https://photoprism.app/get) | ✅🔟 | ✅🔟 | ✅🔟 |\n| [Automatic Mobile Upload](features.md#automatic-mobile-upload) | ❌ | [❌](https://github.com/Webreaper/Damselfly/issues/40) | ✅8️⃣ | ❌ | ✅8️⃣ | ❌ | ✅5️⃣ | ✅7️⃣ | ✅7️⃣ | ❌ | ❌ | ❌ | ✅6️⃣ | [❌](https://github.com/photoview/photoview/issues/129) | ✅7️⃣ | ✅7️⃣ |\n| [Web App](features.md#web-app) | ✅8️⃣ | ✅8️⃣ | ✅8️⃣ | ✅8️⃣ | ✅8️⃣ | ✅8️⃣ | ✅8️⃣ | ✅7️⃣ | ✅9️⃣ | ✅7️⃣ | ✅9️⃣ | ✅7️⃣ | ✅7️⃣ | ✅8️⃣ | ✅8️⃣ | ✅7️⃣ |\n| [Android App](features.md#android-app) | ❌ | ❌ | ✅8️⃣ | ❌ | [✅8️⃣](https://github.com/immich-app/immich#step-4-run-mobile-app) | ✅7️⃣ | [❌](https://github.com/LycheeOrg/Lychee/issues/1013) | [✅3️⃣](https://github.com/nextcloud/android) | [✅7️⃣](https://github.com/pulsejet/memories/issues/180) | ✅4️⃣ | ❌ | ❌ | [🚧4️⃣](https://docs.photoprism.app/user-guide/pwa/) | [🚧3️⃣](https://github.com/photoview/photoview/issues/701) | [✅7️⃣](https://www.piwigo.org/mobile-applications) | [✅7️⃣](https://github.com/snapcrescent/snapcrescent/releases) |\n| [iOS App](features.md#ios-app) | ❌ | ❌ | ✅8️⃣ | ❌ | [✅8️⃣](https://github.com/immich-app/immich#step-4-run-mobile-app) | [🚧3️⃣](https://github.com/LibrePhotos/librephotos-mobile) | [❌](https://github.com/LycheeOrg/Lychee/issues/1013) | [🚧3️⃣](https://github.com/nextcloud/ios/) | [🚧3️⃣](https://github.com/nextcloud/ios/) | ✅4️⃣ | ❌ | ❌ | [🚧4️⃣](https://docs.photoprism.app/user-guide/pwa/) | ✅6️⃣ | [✅7️⃣](https://www.piwigo.org/mobile-applications) | ❌ |\n| [Desktop App](features.md#desktop-app) | ❌ | ✅9️⃣ | ✅8️⃣ | ✅8️⃣ | ❌ | ❌ | ❌ | [🚧2️⃣](https://github.com/nextcloud/desktop/) | [🚧2️⃣](https://github.com/nextcloud/desktop/) | [❌](https://github.com/photonixapp/photonix/issues/61) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |\n| [LivePhotos](features.md#livephotos) | ❌ | ❌ | ✅8️⃣ | ❌ | ✅9️⃣ | [❌](https://github.com/LibrePhotos/librephotos/issues/287) | ✅6️⃣ | [✅3️⃣](https://github.com/nextcloud/photos/issues/344) | ✅8️⃣ | [❌](https://github.com/photonixapp/photonix/issues/250) | [❌](https://github.com/SmilyOrg/photofield/issues/52) | ❌ | ✅7️⃣ | [❌](https://github.com/photoview/photoview/issues/273) | [❌](https://github.com/Piwigo/Piwigo/issues/1677) | ❌ |\n| [Videos](features.md#videos) | ✅7️⃣ | [❌](https://github.com/Webreaper/Damselfly/issues/82) | ✅6️⃣ | ✅6️⃣ | ✅8️⃣ | ✅8️⃣ | ✅6️⃣ | ✅5️⃣ | ✅7️⃣ | [❌](https://github.com/photonixapp/photonix/issues/295) | ✅6️⃣ | ✅8️⃣ | ✅7️⃣ | ✅7️⃣ | ✅4️⃣ | ✅7️⃣ |\n| [Geolocation/Map](features.md#geolocation/map) | ❌ | ✅7️⃣ | ✅6️⃣ | ✅8️⃣ | ✅7️⃣ | ✅8️⃣ | [✅5️⃣](https://github.com/LycheeOrg/Lychee/issues/1051) | ✅6️⃣ | ✅9️⃣ | ✅9️⃣ | ✅8️⃣ | ✅8️⃣ | ✅6️⃣ | ✅8️⃣ | ✅7️⃣ | ❌ |\n| [Discovery](features.md#discovery) | ✅2️⃣ | ❌ | ✅6️⃣ | ❌ | ✅6️⃣ | ✅7️⃣ | ✅6️⃣ | ✅6️⃣ | ✅7️⃣ | ❌ | ❌ | ❌ | ✅6️⃣ | ❌ | ✅1️⃣ | ❌ |\n| [Existing Folders](features.md#existing-folders) | ❌ | ✅7️⃣ | ✅6️⃣ | ❌ | [✅7️⃣](https://immich.app/docs/features/libraries#external-libraries) | ✅4️⃣ | [❌](https://github.com/LycheeOrg/Lychee/issues/1096) | ✅7️⃣ | ✅9️⃣ | [❌](https://github.com/photonixapp/photonix/issues/411) | [✅4️⃣](https://github.com/SmilyOrg/photofield/issues/45) | ✅5️⃣ | ✅9️⃣ | ✅5️⃣ | [✅7️⃣](https://github.com/Piwigo/Piwigo/issues/960) | ❌ |\n| [Albums](features.md#albums) | ✅8️⃣ | [❌](https://github.com/Webreaper/Damselfly/issues/238) | ✅9️⃣ | ❌ | ✅8️⃣ | ✅9️⃣ | ✅8️⃣ | ✅4️⃣ | ✅8️⃣ | ✅5️⃣ | ❌ | ✅6️⃣ | ✅8️⃣ | ✅6️⃣ | ✅8️⃣ | ✅5️⃣ |\n| [Slideshow](features.md#slideshow) | ❌ | ✅4️⃣ | ✅3️⃣ | ❌ | ✅5️⃣ | ❌ | [✅4️⃣](https://github.com/LycheeOrg/Lychee/pull/1819) | ✅5️⃣ | ✅5️⃣ | [❌](https://github.com/photonixapp/photonix/issues/427) | ✅6️⃣ | ✅7️⃣ | ✅6️⃣ | [❌](https://github.com/photoview/photoview/issues/51) | ✅5️⃣ | ❌ |\n| [Timeline](features.md#timeline) | ✅3️⃣ | ✅5️⃣ | ✅8️⃣ | ✅3️⃣ | ✅8️⃣ | ✅9️⃣ | ✅4️⃣ | ✅4️⃣ | ✅9️⃣ | ✅5️⃣ | ✅6️⃣ | ✅5️⃣ | ✅5️⃣ | ✅9️⃣ | ✅3️⃣ | ✅5️⃣ |\n| [Sharing](features.md#sharing) | ✅7️⃣ | ❌ | ✅8️⃣ | ❌ | ✅7️⃣ | ✅9️⃣ | ✅9️⃣ | ✅8️⃣ | ✅9️⃣ | ❌ | ❌ | ✅7️⃣ | ✅7️⃣ | ✅8️⃣ | ✅5️⃣ | ✅5️⃣ |\n| [Search](features.md#search) | ✅5️⃣ | ✅8️⃣ | ✅6️⃣ | ✅7️⃣ | ✅9️⃣ | ✅8️⃣ | ✅5️⃣ | ✅4️⃣ | ✅4️⃣ | ✅8️⃣ | ✅9️⃣ | ✅7️⃣ | ✅8️⃣ | ✅5️⃣ | ✅7️⃣ | ❌ |\n| [Duplicate Handling](features.md#duplicate-handling) | ✅5️⃣ | [❌](https://github.com/Webreaper/Damselfly/issues/97) | ✅7️⃣ | ❌ | ✅7️⃣ | [❌](https://github.com/LibrePhotos/librephotos/issues/753) | [✅7️⃣](https://github.com/LycheeOrg/Lychee/issues/1762) | [✅6️⃣](https://apps.nextcloud.com/apps/mediadc) | [✅6️⃣](https://apps.nextcloud.com/apps/mediadc) | [❌](https://github.com/photonixapp/photonix/issues/422) | ❌ | ✅5️⃣ | [✅6️⃣](https://docs.photoprism.app/user-guide/library/duplicates/) | [❌](https://github.com/photoview/photoview/issues/801) | ✅6️⃣ | ✅7️⃣ |\n| [User Defined Tags](features.md#photo-tagging) | ✅7️⃣ | ✅7️⃣ | ❌ | ✅7️⃣ | [✅6️⃣](https://github.com/immich-app/immich/releases/tag/v1.113.0) | [❌](https://github.com/LibrePhotos/librephotos/issues/525) | ✅5️⃣ | ✅3️⃣ | [✅6️⃣](https://github.com/pulsejet/memories/issues/487) | ✅6️⃣ | ✅6️⃣ | ❌ | ✅5️⃣ | ❌ | ✅7️⃣ | ❌ |\n| [Docker Installation](features.md#docker-installation) | [✅8️⃣](https://github.com/chevereto/docker#pure-docker) | ✅8️⃣ | ✅3️⃣ | ✅8️⃣ | ✅7️⃣ | ✅7️⃣ | ✅7️⃣ | [✅6️⃣](https://github.com/nextcloud/all-in-one#nextcloud-all-in-one) | [✅6️⃣](https://github.com/nextcloud/all-in-one#nextcloud-all-in-one) | ✅8️⃣ | ✅7️⃣ | ✅7️⃣ | ✅6️⃣ | ✅8️⃣ | [✅7️⃣](https://hub.docker.com/r/linuxserver/piwigo) | ✅8️⃣ |\n| [Object/Face Recognition](features.md#object/face-recognition) | ❌ | ✅8️⃣ | ✅7️⃣ | ✅6️⃣ | ✅9️⃣ | ✅8️⃣ | [❌](https://github.com/LycheeOrg/Lychee/issues/1266) | [✅8️⃣](https://github.com/nextcloud/recognize) | [✅8️⃣](https://github.com/nextcloud/recognize) | ✅8️⃣ | ✅7️⃣ | ✅6️⃣ | ✅9️⃣ | ✅6️⃣ | [✅5️⃣](https://github.com/Piwigo/Piwigo/issues/1159) | ❌ |\n| [Basic Editing](features.md#basic-editing) | ✅1️⃣ | ❌ | ✅6️⃣ | ❌ | ✅4️⃣ | ❌ | ❌ | ✅6️⃣ | ✅6️⃣ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |\n| [EXIF Data](features.md#exif-data) | ✅3️⃣ | ✅9️⃣ | ✅7️⃣ | ✅7️⃣ | ✅6️⃣ | [❌](https://github.com/LibrePhotos/librephotos/issues/77) | ✅7️⃣ | [❌](https://github.com/nextcloud/photos/issues/226) | ✅8️⃣ | ✅7️⃣ | ✅3️⃣ | ✅7️⃣ | ✅9️⃣ | ✅7️⃣ | ✅6️⃣ | ✅7️⃣ |\n| [Multiple User Support](features.md#multiple-user-support) | ✅8️⃣ | ✅7️⃣ | ✅9️⃣ | ❌ | ✅8️⃣ | ✅8️⃣ | ✅6️⃣ | ✅9️⃣ | ✅9️⃣ | ✅7️⃣ | [❌](https://github.com/SmilyOrg/photofield/issues/28) | ✅7️⃣ | [❌](https://github.com/photoprism/photoprism/issues/98) | ✅6️⃣ | ✅8️⃣ | ✅5️⃣ |\n| [Authentication Providers](features.md#authentication-providers) | ✅5️⃣ | ❌ | ❌ | ❌ | ✅7️⃣ | [❌](https://github.com/LibrePhotos/librephotos/issues/616) | ✅7️⃣ | ✅9️⃣ | ✅9️⃣ | [❌](https://github.com/photonixapp/photonix/issues/432) | ❌ | [❌](https://github.com/bpatrik/pigallery2/issues/389) | [✅5️⃣](https://github.com/photoprism/photoprism/issues/782) | [❌](https://github.com/photoview/photoview/issues/624) | ✅5️⃣ | ❌ |\n\n\n**Note:** This list is by no means comprehensive and is provided on a best efforts basis. No guarantees are made to it's accuracy or completeness. If you see an error or inaccuracy, please report it and contribute a fix if you can!\n\nFor links to other photo library projects, see:\n\n- [Awesome Self-Hosted](https://github.com/awesome-selfhosted/awesome-selfhosted#photo-galleries)\n- [Awesome Privacy](https://github.com/pluja/awesome-privacy#photo-storage)\n\nAn HTML version of this comparison table is here: https://meichthys.github.io/foss_photo_libraries/\n\n## 👋 More Feature Comparisons\n\nCheck out my other feature comparisons:\n\n📝 [foss_note_apps](https://github.com/meichthys/foss_note_apps)\n\n## 🤝 Contributing\n\nPlease contribute additions and corrections!\nPlease refer to [CONTRIBUTE.md](CONTRIBUTE.md) for details.\n\n## 🆘 Support\n\nMaintaining this list of projects takes a lot of time. If you found this comparison helpful, please let me know by considering supporting me. This lets me know that someone is finding this project useful and gives me an incentive to keep it up to date.\nYou can support me on Liberapay or Github Sponsors:\n\n\u003ca href=\"https://liberapay.com/meichthys/donate\"\u003e\u003cimg alt=\"Donate using Liberapay\" src=\"https://liberapay.com/assets/widgets/donate.svg\"\u003e\u003c/a\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmeichthys%2Ffoss_photo_libraries","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmeichthys%2Ffoss_photo_libraries","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmeichthys%2Ffoss_photo_libraries/lists"}