Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/meichthys/foss_photo_libraries

Free and Open Source Photo Libraries
https://github.com/meichthys/foss_photo_libraries

comparison foss list open-source photo-library photos

Last synced: 25 days ago
JSON representation

Free and Open Source Photo Libraries

Awesome Lists containing this project

README

        

# 📸 Free and OpenSource Photo Libraries

There are many great free and open-source alternatives to 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.

⚠️ 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.

## ⚖️ Comparison

```text
✅ = Feature exists in at least a limited fashion
🚧 = Feature may exist but may not be practical or officially released
❌ = Feature does not yet exist
#️⃣ = Subjective measure of feature quality (on scale of 0-10)
Tip: Hover over emoji for additional information (🔗 link to related issue, 🔑 demo credentials, etc)
```

| Feature | [Chevereto](https://github.com/chevereto/chevereto) | [Damselfly](https://github.com/Webreaper/Damselfly) | [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) |
| :----------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Logo | Chevreto  Logo | Dameslfly  Logo | HomeGallery  Logo | Immich Logo | Librephotos Logo | Lychee Logo | NextcloudPhotos Logo | Memories Logo | Photonix Logo | Photofield Logo | PiGallery2 Logo | Photoprism Logo | Photoview Logo | Piwigo Logo | Snapcrescent Logo |
| [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/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) |
| [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/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) |
| [Last Commit](features.md#last-commit) | ![?](https://img.shields.io/github/last-commit/chevereto/chevereto/4.0?label=%20) | ![?](https://img.shields.io/github/last-commit/webreaper/damselfly/master?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) |
| [Source Language](features.md#source-language) | ![?](https://img.shields.io/github/languages/top/chevereto/chevereto) | ![?](https://img.shields.io/github/languages/top/Webreaper/Damselfly) | ![GitHub top language](https://img.shields.io/github/languages/top/xemle/home-gallery) | ![?](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) |
| [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/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&message=GPL-3.0&color=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) |
| [Demo](features.md#demo) | [✅5️⃣](https://demo.chevereto.com/) | ❌ | [✅](https://demo.home-gallery.org/https://demo.photoprism.app/library/brow)6️⃣ | [✅](https://demo.immich.app/)8️⃣ | [✅](https://demo2.librephotos.com/ "User:demo Pass:demo1234")5️⃣ | [✅](https://lychee-demo.fly.dev/landing "User:admin Pass:admin")9️⃣ | [✅](https://nextcloud.com/instant-trial/)4️⃣ | [✅](https://demo.memories.gallery/apps/memories/)8️⃣ | [✅](https://demo.photonix.org/login)8️⃣ | [✅](https://demo.photofield.dev/)6️⃣ | [✅](https://pigallery2.onrender.com/)8️⃣ | [✅](https://demo.photoprism.app/library/browse)9️⃣ | [✅](https://photos.qpqp.dk/ "User:demo Pass:demo")9️⃣ | [✅](https://piwigo.org/demo)9️⃣ | [✅](https://demo.snapcrescent.app)9️⃣ |
| [Freeness](features.md#freeness) | [✅5️⃣](https://rodolfoberrios.com/2022/12/01/chevereto-goes-free/) | ✅🔟 | ✅🔟 | ✅🔟 | ✅🔟 | ✅🔟 | ✅🔟 | ✅🔟 | ✅🔟 | ✅🔟 | ✅🔟 | [🚧](https://photoprism.app/get)7️⃣ | ✅🔟 | ✅🔟 | ✅🔟 |
| [Automatic Mobile Upload](features.md#automatic-mobile-upload) | ❌ | [❌](https://github.com/Webreaper/Damselfly/issues/40) | ❌ | ✅7️⃣ | ❌ | ❌ | ✅7️⃣ | ✅7️⃣ | ❌ | ❌ | ❌ | ✅6️⃣ | [❌](https://github.com/photoview/photoview/issues/129) | ✅7️⃣ | ✅7️⃣ |
| [Web App](features.md#web-app) | ✅8️⃣ | ✅8️⃣ | ✅8️⃣ | ✅8️⃣ | ✅8️⃣ | ✅8️⃣ | ✅7️⃣ | ✅9️⃣ | ✅7️⃣ | ✅9️⃣ | ✅7️⃣ | ✅7️⃣ | ✅8️⃣ | ✅8️⃣ | ✅7️⃣ |
| [Android App](features.md#android-app) | ❌ | ❌ | ❌ | [✅](https://github.com/immich-app/immich#step-4-run-mobile-app)8️⃣ | ✅[7️⃣](https://github.com/savvasdalkitsis/uhuruphotos-android) | [❌](https://github.com/LycheeOrg/Lychee/issues/1013) | [✅](https://github.com/nextcloud/android)3️⃣ | [✅](https://github.com/pulsejet/memories/issues/180)7️⃣ | ✅[4️⃣](https://github.com/photonixapp/photonix-mobile) | ❌ | ❌ | [🚧](https://docs.photoprism.app/user-guide/pwa/)4️⃣ | [🚧](https://github.com/photoview/photoview/issues/701)3️⃣ | [✅](https://www.piwigo.org/mobile-applications)7️⃣ | [✅](https://github.com/snapcrescent/snapcrescent/releases)7️⃣ |
| [iOS App](features.md#ios-app) | ❌ | ❌ | ❌ | [✅](https://github.com/immich-app/immich#step-4-run-mobile-app)8️⃣ | [🚧](https://github.com/LibrePhotos/librephotos-mobile)3️⃣ | [❌](https://github.com/LycheeOrg/Lychee/issues/1013) | [🚧](https://github.com/nextcloud/ios/ "Nextcloud Files App")3️⃣ | [🚧](https://github.com/nextcloud/ios/ "Nextcloud Files App")3️⃣ | ✅[4️⃣](https://github.com/photonixapp/photonix-mobile) | ❌ | ❌ | [🚧](https://docs.photoprism.app/user-guide/pwa/)4️⃣ | [✅](https://apps.apple.com/dk/app/photoview-media-gallery/id1578380271)6️⃣ | [✅](https://www.piwigo.org/mobile-applications)7️⃣ | ❌ |
| [Desktop App](features.md#desktop-app) | ❌ | ✅9️⃣ | ✅8️⃣ | ❌ | ❌ | ❌ | [🚧](https://github.com/nextcloud/desktop/ "File sync only")2️⃣ | [🚧](https://github.com/nextcloud/desktop/ "File sync only")2️⃣ | [❌](https://github.com/photonixapp/photonix/issues/61) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| [LivePhotos](features.md#livephotos) | ❌ | ❌ | ❌ | ✅9️⃣ | [❌](https://github.com/LibrePhotos/librephotos/issues/287) | ✅[6️⃣](https://github.com/LycheeOrg/Lychee/issues/1283) | [✅️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) | ❌ |
| [Videos](features.md#videos) | [❌](https://blog.chevereto.com/upcoming/video-support/) | [❌](https://github.com/Webreaper/Damselfly/issues/82) | ✅6️⃣ | ✅8️⃣ | ✅8️⃣ | ✅6️⃣ | ✅5️⃣ | ✅7️⃣ | [❌](https://github.com/photonixapp/photonix/issues/295) | ✅6️⃣ | ✅8️⃣ | ✅7️⃣ | ✅7️⃣ | ✅4️⃣ | ✅7️⃣ |
| [Geolocation/Map](features.md#geolocation/map) | ❌ | ✅7️⃣ | ✅8️⃣ | ✅7️⃣ | ✅8️⃣ | [✅5️⃣](https://github.com/LycheeOrg/Lychee/issues/1051) | ✅6️⃣ | ✅9️⃣ | ✅9️⃣ | ✅8️⃣ | ✅8️⃣ | ✅6️⃣ | ✅8️⃣ | ✅7️⃣ | ❌ |
| [Discovery](features.md#discovery) | ✅2️⃣ | ❌ | ❌ | ✅6️⃣ | ✅7️⃣ | ✅6️⃣ | ✅6️⃣ | ✅7️⃣ | ❌ | ❌ | ❌ | ✅6️⃣ | ❌ | ✅1️⃣ | ❌ |
| [Existing Folders](features.md#existing-folders) | ❌ | ✅7️⃣ | ❌ | ✅[6️⃣](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️⃣ | [✅](https://github.com/Piwigo/Piwigo/issues/960)7️⃣ | ❌ |
| [Albums](features.md#albums) | ✅8️⃣ | [❌](https://github.com/Webreaper/Damselfly/issues/238) | ❌ | ✅8️⃣ | ✅9️⃣ | ✅8️⃣ | ✅4️⃣ | ✅8️⃣ | ✅5️⃣ | ❌ | ✅6️⃣ | ✅8️⃣ | ✅6️⃣ | ✅8️⃣ | ✅5️⃣ |
| [Slideshow](features.md#slideshow) | ❌ | ✅4️⃣ | ❌ | ✅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️⃣ | ❌ |
| [Timeline](features.md#timeline) | ✅3️⃣ | ✅5️⃣ | ✅3️⃣ | ✅8️⃣ | ✅9️⃣ | [❌](https://github.com/LycheeOrg/Lychee/issues/1050) | ✅4️⃣ | ✅9️⃣ | ✅5️⃣ | ✅6️⃣ | ✅5️⃣ | ✅5️⃣ | ✅9️⃣ | ✅3️⃣ | ✅5️⃣ |
| [Sharing](features.md#sharing) | ✅7️⃣ | ❌ | ❌ | ✅7️⃣ | ✅9️⃣ | ✅9️⃣ | ✅8️⃣ | ✅9️⃣ | ❌ | ❌ | ✅7️⃣ | ✅7️⃣ | ✅8️⃣ | ✅5️⃣ | ✅5️⃣ |
| [Search](features.md#search) | ✅5️⃣ | ✅8️⃣ | ✅7️⃣ | ✅9️⃣ | ✅8️⃣ | ✅5️⃣ | ✅4️⃣ | ✅4️⃣ | ✅8️⃣ | ✅9️⃣ | ✅7️⃣ | ✅8️⃣ | ✅5️⃣ | ✅7️⃣ | ❌ |
| [Duplicate Handling](features.md#duplicate-handling) | ✅5️⃣ | [❌](https://github.com/Webreaper/Damselfly/issues/97) | ❌ | ✅7️⃣ | [❌](https://github.com/LibrePhotos/librephotos/issues/753) | [❌](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️⃣ |
| [User Defined Tags](features.md#photo-tagging) | [❌](https://blog.chevereto.com/upcoming/tags-support/) | ✅7️⃣ | ✅7️⃣ | [✅️](https://github.com/immich-app/immich/releases/tag/v1.113.0)6️⃣ | [❌](https://github.com/LibrePhotos/librephotos/issues/525) | ✅5️⃣ | ✅️3️⃣ | [✅️](https://github.com/pulsejet/memories/issues/487)6️⃣ | ✅6️⃣ | ✅6️⃣ | ❌ | ✅5️⃣ | ❌ | ✅7️⃣ | ❌ |
| [Docker Installation](features.md#docker-installation) | [✅8️⃣](https://github.com/chevereto/docker#pure-docker) | ✅8️⃣ | ✅8️⃣ | ✅7️⃣ | ✅7️⃣ | ✅7️⃣ | [✅](https://github.com/nextcloud/all-in-one#nextcloud-all-in-one)6️⃣ | [✅](https://github.com/nextcloud/all-in-one#nextcloud-all-in-one)6️⃣ | ✅8️⃣ | ✅7️⃣ | ✅7️⃣ | ✅6️⃣ | ✅8️⃣ | [✅](https://hub.docker.com/r/linuxserver/piwigo)7️⃣ | ✅8️⃣ |
| [Object/Face Recognition](features.md#object/face-recognition) | ❌ | ✅8️⃣ | ✅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️⃣ | [✅](https://github.com/Piwigo/Piwigo/issues/1159)5️⃣ | ❌ |
| [Basic Editing](features.md#basic-editing) | ❌ | ❌ | ❌ | ✅4️⃣ | ❌ | ❌ | ✅6️⃣ | ✅6️⃣ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| [EXIF Data](features.md#exif-data) | ✅3️⃣ | ✅9️⃣ | ✅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️⃣ |
| [Multiple User Support](features.md#multiple-user-support) | ✅8️⃣ | ✅7️⃣ | ❌ | ✅8️⃣ | ✅8️⃣ | ✅6️⃣ | ✅9️⃣ | ✅9️⃣ | ✅7️⃣ | [❌](https://github.com/SmilyOrg/photofield/issues/28) | ✅7️⃣ | [❌](https://github.com/photoprism/photoprism/issues/98) | ✅6️⃣ | ✅8️⃣ | ✅5️⃣ |
| [Authentication Providers](features.md#authentication-providers) | ✅5️⃣ | ❌ | ❌ | ✅7️⃣ | [❌](https://github.com/LibrePhotos/librephotos/issues/616) | [❌](https://github.com/LycheeOrg/Lychee/issues/1844) | ✅9️⃣ | ✅9️⃣ | [❌](https://github.com/photonixapp/photonix/issues/432) | ❌ | [❌](https://github.com/bpatrik/pigallery2/issues/389) | [🚧](https://github.com/photoprism/photoprism/issues/782) | [❌](https://github.com/photoview/photoview/issues/624) | ✅5️⃣ | ❌ |

**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!

For links to other photo library projects, see:

- [Awesome Self-Hosted](https://github.com/awesome-selfhosted/awesome-selfhosted#photo-and-video-galleries)
- [Awesome Privacy](https://github.com/pluja/awesome-privacy#photo-storage)

An HTML version of this comparison table is here: https://meichthys.github.io/foss_photo_libraries/

## 🤝 Contributing

Please contribute additions and corrections!
When contributing, please add links to the source of the information.
(i.e. link to an issue that indicates that a feature does not exist)
Tip: Using a [Markdown Editor](https://marketplace.visualstudio.com/items?itemName=zaaack.markdown-editor) helps with formatting.

## 🆘 Support

Maintaining 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.
You can support me on Liberapay or Github Sponsors:

Donate using Liberapay