selfhosted-music-overview
selfhosted-music-overview copied to clipboard
A table listing software network services which can be hosted on your own servers
selfhosted-music-overview
selfhosted-music-overview intends to provide an overview of self-hostable music streaming servers and clients.
Table of Contents
- Server Overview
- Client Overview
- Emoji Definitions
- How to Contribute
- Footnotes
Server Overview
Scrobbling | Jukebox Mode | Read Tags | Write Tags | API | Share Music | Multi-User | Multi-Library | Smart Playlists | Heart/ Favorites | 5 Star Rating | Replay Gain | Transcode | DLNA | Multi-Room | Lyrics | free | Demo | Source Code | License | Reviewed Version | ||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Airsonic | last.fm | :grey_question: | :heavy_check_mark: | :heavy_check_mark: | Subsonic | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark::heavy_dollar_sign: | :heavy_check_mark::heavy_dollar_sign: | :x: | GitHub | GPLv3 | 10.6.2 | Airsonic | ||||||
Airsonic-advanced | last.fm | :grey_question: | :heavy_check_mark: | :heavy_check_mark: | Subsonic | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | GitHub | GPLv3 | 11 | Airsonic-advanced | ||||||
gonic | last.fm, ListenBrainz | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | Subsonic | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | GitHub | GPLv3 | 0.14.0 | Gonic | |||||||
Ampache | :grey_question: | :grey_question: | :heavy_check_mark: | :heavy_check_mark: | Subsonic | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | Demo | GitHub | aGPLv3 | 5.1.0 | Ampache | |||||
Jellyfin | last.fm [^github-lastfm-jellyfin], ListenBrainz[^github-jellyfin-plugin-listenbrainz] | :x: | :heavy_check_mark: | :heavy_check_mark: | Jellyfin, Subsonic[^addon-jellysub] | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | Demo | GitHub | GPLv2 | 10.7.7 | Jellyfin | ||
Funkwhale | last.fm, ListenBrainz, libre.fm, Maloja [^funkwhale-scrobbling] | :grey_question: | :heavy_check_mark: | :heavy_check_mark: | WIP custom, subsonic | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :x: | :heavy_check_mark: | :x: | GitLab | aGPLv3 | 1.2.6 | Funkwhale |
Lightweight Music Server | ListenBrainz | :x: | :heavy_check_mark: | :x: | Subsonic | :x: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :x: | :heavy_check_mark: | Demo | GitHub | GPLv3 | 3.27.0 | Lightweight Music Server |
Logitech Media Server | last.fm | :heavy_check_mark: | :heavy_check_mark: | :x: | custom | :heavy_check_mark: [^logitech-share] | :heavy_check_mark: :grey_question: [^review1] | :heavy_check_mark: [^logitech-multi] | :heavy_check_mark: [^logitech-comment-playlist] | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | GitHub | GPLv2 | 8.2 | Logitech Media Server |
mStream | last.fm | :heavy_check_mark: | :heavy_check_mark: | :x: | custom | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :x: | :heavy_check_mark: | Demo | GitHub | GPLv3 | 5.9.4 | mStream |
Navidrome | last.fm, ListenBrainz | :x: [^roadmap-navidrome] | :heavy_check_mark: | :x: | Subsonic | :x: [^roadmap-navidrome] | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | Demo | GitHub | GPLv3 | 0.47.0 | Navidrome | |
Plex | last.fm | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :grey_question: | :heavy_check_mark: :heavy_dollar_sign: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark::heavy_dollar_sign: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark::heavy_dollar_sign: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark::heavy_dollar_sign: | Demo | GitHub | :grey_question: | :grey_question: | Plex | ||
Polaris | last.fm | :grey_question: | :heavy_check_mark: | :x: | custom | :grey_question: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | GitHub | MIT | 0.13.5 | Polaris | ||||||
Scrobbling | Jukebox Mode | Read Tags | Write Tags | API | Share Music | Multi-User | Multi-Library | Smart Playlists | Heart/ Favorites | 5 Star Rating | Replay Gain | Transcode | DLNA | Multi-Room | Lyrics | free | Demo | Source Code | License | Reviewed Version |
[^logitech-share]: Native Plugin enabling UPnP/DNLA support [^review1]: needs review [^logitech-multi]: Plugin [^logitech-comment-playlist]: works best if music library has been analysed by MusicIP beforehand, otherwise limited capability [^github-logitech]: https://github.com/Logitech/slimserver [^github-lastfm-jellyfin]: https://github.com/jesseward/jellyfin-plugin-lastfm [^roadmap-navidrome]: on Navidrome''s public road map [^mstream-api]: https://github.com/IrosTheBeggar/mStream/blob/master/docs/API.md [^addon-jellysub]: https://github.com/nvllsvm/jellysub [^github-jellyfin-plugin-listenbrainz]: https://github.com/lyarenei/jellyfin-plugin-listenbrainz [^funkwhale-scrobbling]: https://docs.funkwhale.audio/users/builtinplugins.html
Client Overview
OS | Gapless Playback | Album View | Songs View | Folder View | Album Artist View | Artist View | Genre View | Decade View | Year View | Playlist Support | Most Played Song | Most Played Album | Recently Played Song | Recently Played Album | Recently Added Song | Recently Added Album | Frequently Played Album | Offline Mode | Download Music | Podcasts | Scrobbling | Musicbrainz | Similar Songs | Artist Top Songs | Shuffle Play | Random Album | Favorites / Starred | Bookmarks | 5 Stars | Search function | Chromecast Support | Android Auto | Dark Mode | Themeable | Open Source | free | Smart Recommendations | Video Support | Internet Radio | Lyrics | Crossfade | API | f-droid | Source Code | License | Reviewed Version | ||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Dsub | Android | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :heavy_check_mark: | :grey_question: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | Subsonic | :heavy_check_mark: ^fdroid-dsub | GitHub | GPLv3 | 5.5.2 | Dsub |
Finamp | Android, iOS | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :x: | :x: | :x: | Jellyfin | :heavy_check_mark: ^fdroid-finamp | Github | MPL 2.0 | 0.5.1 | Finamp |
Gelli | Android | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :grey_question: | :x: | :x: | :x: | :x: | Jellyfin | :heavy_check_mark: ^fdroid-gelii | GitHub | GPLv3 | 1.3.2 | Gelli |
Polaris Android | Android | :x: | :x: | :x: | :heavy_check_mark: | :x: | :grey_question: | :x: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :x: | last.fm | :x: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :x: | :grey_question: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :x: | :x: | :x: | custom | :heavy_check_mark: ^fdroid-polaris | GitHub | MIT | 0.13.5 | Polaris Android |
substreamer | Android, iOS | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :grey_question: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :x: | :x: | Subsonic | :x: | :x: | :grey_question: | 0.5.1 | substreamer |
Subtracks | Android | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :x: | :grey_question:[^help-subtracks-download] | :x: | :heavy_check_mark: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :white_circle: | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :x: | :x: | :x: | Subsonic | :heavy_check_mark: ^fdroid-subtracks | GitHub | GPLv3 | 1.0.1 | Subtracks |
Ultrasonic | Android | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | Subsonic, Airsonic, Supysonic, Ampache | :heavy_check_mark: ^fdroid-ultrasonic | GitHub | GPLv3 | 2.23.1 | Ultrasonic |
Lightweight Music Web Player | Web | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :x: | :white_circle: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :x: | :x: | proprietary | :white_circle: | GitHub | GPLv3 | 3.27.0 | Lightweight Music Web Player |
Navidrome | Web | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark:[^cannot-write-tags] | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | :white_circle: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :x: | :x: | :x: | Subsonic | :white_circle: | GitHub | GPLv3 | 0.47.0 | Navidrome |
Polaris Web | Web | :x: | :x: | :x: | :heavy_check_mark: | :x: | :grey_question: | :x: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :x: | :white_circle: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :x: | :x: | :x: | custom | :white_circle: | GitHub | MIT | 0.13.5 | Polaris Web |
Tauon Music Box | Linux | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :grey_question: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :x: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | :white_circle: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :x: | :heavy_check_mark: | :x: | Airsonic, Jellyfin, Plex, Subsonic, Koel, Emby, Spotify | :white_circle: | Github | GPLv3 | 7.0.1 | Tauon Music Box |
Jellyamp | L, W, M | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :x: | :white_circle: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :x: | :x: | Jellyfin | :white_circle: | Github | MIT | 1.1.1 | Jellyamp |
Sonixd | L, W, M | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :grey_question: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :x:[^sonixd-offline] | :heavy_check_mark: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :grey_question: | :x: | :heavy_check_mark: | :x: | :white_circle: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | Jellyfin, Subsonic | :white_circle: | Github | GPLv3 | 0.8.5 | Sonixd |
Funkwhale | Web | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :x: | :white_circle: | :grey_question: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :x: | :x: | :x: | custom | :white_circle: | Gitlab | aGPLv3 | 1.2.6 | Funkwhale |
Funkwhale Android | Android | :x: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | :grey_question: | :grey_question: | :x: | :x: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :grey_question: | :grey_question: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :x: | :x: | :x: | custom | :heavy_check_mark:[^fdroid-funkwhale] | Gitlab | MIT | 0.1.4 | Funkwhale Android |
OS | Gapless Playback | Album View | Songs View | Folder View | Album Artist View | Artist View | Genre View | Decade View | Year View | Playlist Support | Most Played Song | Most Played Album | Recently Played Song | Recently Played Album | Recently Added Song | Recently Added Album | Frequently Played Album | Offline Mode | Download Music | Podcasts | Scrobbling | Musicbrainz | Similar Songs | Artist Top Songs | Shuffle Play | Random Album | Favorites / Starred | Bookmarks | 5 Stars | Search function | Chromecast Support | Android Auto | Dark Mode | Themeable | Open Source | free | Smart Recommendations | Video Support | Internet Radio | Lyrics | Crossfade | API | f-droid | Source Code | License | Reviewed Version |
[^help-subtracks-download]: There is a download button. It doesn't work for me. [^website-subsonic]: http://www.subsonic.org/pages/index.jsp ^website-funkwhale: https://funkwhale.audio/ [^fdroid-funkwhale]: https://f-droid.org/en/packages/audio.funkwhale.ffa/
[^cannot-write-tags]: Can't write tags to file.
[^sonixd-offline]: Is planned
Emoji Definitions
- :heavy_check_mark: means yes, it is supported
- :x: means no, it is not supported
- :heavy_dollar_sign: means the service/feature has a price
p
wherep>0
- :grey_question: means help wanted, original author wasn't sure or couldn't judge the covered topic.
- :white_circle: means the feature doesn't apply to this service and cannot be evaluated.
- an empty cell is missing information. It is not intentionally left blank.
How to Contribute (WIP)
-
work in an editor that supports no forced line breaks (word wrap), otherwise you can't read the raw markdown table. VSCodium, Atom, Notepad++, Kate and others are suitable for raw markdown editing.
-
work in an editor that supports some sort of WYSIWYG like Obsidian or Typora otherwise it is a real mess to fill a markdown table. Typora can clean the final raw markdown table as well, and so can Obsidian with the Advanced Tables plugin.
-
To add a service it is always good to take the current version of the table to match the columns. I'll try to merge all PRs in a timely manner.
-
open issue or a PR
-
matrix-room: #selfhosted-music-overview