Black Candy
Music streaming server
A self hosted music streaming server. Contribute to blackcandy-org/blackcandy development by creating an account on GitHub.
Key features
- Personal music streaming
- Responsive web player
- Multi-user accounts
- PWA support
Pros & cons
Strengths
- Clean modern interface
- Simple to deploy
Trade-offs
- Music only
- Smaller ecosystem
Black Candy replaces
Last reviewed Sep 13, 2026 · 753 words
For most people the answer is Navidrome, and Black Candy is the exception worth knowing about. It wins for one specific listener: someone who plays music in a browser or through the project's own iOS app, keeps a library in the low tens of thousands of tracks, and cares more about a clean player than about client choice. The dividing line is the Subsonic API, which Black Candy does not implement, and everything below follows from that.
No Subsonic API, and that decides it
Navidrome speaks the Subsonic protocol, which means 20-odd third-party clients on every platform, car head units included. Black Candy has its own web player, installable as a PWA on Android and desktop, plus a native iOS app. That is the whole client story. If you already love a particular Android player, or want to scrobble from a Subsonic-aware app, stop here. If you have never used one and a good browser player on the phone is fine, keep reading, because the player is the reason this project exists.
What it does well
The interface is the point. It is a Ruby on Rails app with a modern, uncluttered web player: album grid, artist pages, playlists, queue, dark mode, keyboard shortcuts, and a mobile layout that does not feel like a desktop page squeezed narrow. Multi-user accounts are built in, so a household shares one library with separate playlists. Formats the browser cannot play natively are transcoded on the fly with ffmpeg, so a FLAC collection streams to a phone on mobile data without a second copy. The iOS app is the same player wrapped natively, with background playback and lock-screen controls that a PWA on iOS still handles badly, which is the practical reason the project bothered building it. On Android the PWA install is good enough that I would not miss a native app.
It reads tags from files and nothing else: no podcasts, no internet radio, no video, no audiobooks. The catalogue's "music only" con is a statement of scope rather than a complaint, and for a lot of people it is the appeal. If you want one server for films and music, Jellyfin does both, and the Jellyfin vs Navidrome page covers that trade.
The setup that works
One container, SQLite by default, music mounted read-only:
services:
blackcandy:
image: blackcandy/blackcandy:latest
ports:
- "3000:3000"
volumes:
- ./blackcandy-data:/app/storage
- /srv/music:/media_data:ro
restart: unless-stopped
Log in with the default admin account (the README lists it; change the password on the first visit), set the media path to /media_data in Settings, and start a library scan. SQLite lives under /app/storage along with transcode caches, so that volume is your backup target. Updates are a pull and recreate; database migrations run on boot. PostgreSQL is supported if you prefer it, but for a single household it buys nothing.
The catalogue rates it Medium, 512 MB of RAM. The deploy itself is Easy; the Medium is fair because Rails is heavier than a Go binary and needs a moment to warm up, and because scan and transcode tuning is done in a settings page rather than left alone. Expect the process to idle at a few hundred MB, my estimate from a small install, against the few tens of MB Navidrome uses on the same library.
Library size is where I'd hesitate
Black Candy scans and serves a 10,000 to 20,000 track library without complaint. I would not put a 100,000-track collection on it: scans are slower than Navidrome's, the community is smaller, and the 4,409 stars against Navidrome's much larger following mean fewer people have hit the edge cases before you. For the big-library, many-clients case, the bigger project is the safer pick and I would say so without hedging. The self-hosted Spotify walkthrough covers that route end to end.
What I'd do
If my listening happens in a browser tab at a desk and on an iPhone, and the library is a curated few thousand albums: Black Candy, SQLite, behind a reverse proxy with HTTPS, one nightly copy of the storage volume. It is the nicest-looking option in media servers for that user. If Android clients, scrobbling, or a very large library are in the picture, Navidrome, and no regrets about the prettier UI you gave up.
Compare Black Candy
21 head-to-head comparisons.
- Black Candy vs Navidrome
- Black Candy vs Koel
- Black Candy vs Feishin
- Black Candy vs Mopidy
- Black Candy vs Lidarr
- Black Candy vs Finamp
- Black Candy vs Ampache
- Black Candy vs Polaris
- Black Candy vs Funkwhale
- Black Candy vs OwnTone
- Black Candy vs Gonic
- Black Candy vs mStream
- Black Candy vs Tempo
- Black Candy vs Swing Music
- Black Candy vs Airsonic
- Black Candy vs Sonixd
- Black Candy vs Lyrion Music Server
- Black Candy vs Musicn
- Black Candy vs Amperfy
- Black Candy vs LMS
- Black Candy vs Airsonic-Advanced
Similar media servers apps
Jellyfin
Media ServersFree software media system for streaming your library
Replaces Plex, Emby
qBittorrent
Media ServersBittorrent client that aims to be a good alternative to all other
Replaces µTorrent
SRS
Media ServersA simple, high efficiency and real-time video server, supports RTMP,
Navidrome
Media ServersModern music streaming server for your collection
Replaces Spotify
Kodi
Media ServersOpen-source home theater and media center
Replaces Plex
Koel
Media ServersPersonal music streaming server with an elegant interface
Replaces Spotify