Streaming a tagged music collection over OpenSubsonic
Navidrome is a self-hosted music streaming server, written in Go and licensed under the GPL-3.0. It reads a folder of audio files, builds its catalogue from their tags, and serves it through a React web UI (Material UI and React-Admin) and through the Subsonic API, which any Subsonic, Madsonic or Airsonic app understands. The README calls it "your personal Spotify", fed by your own music collection.
Subsonic apps and Jellyfin music clients on the same server
- Subsonic and OpenSubsonic apps: the docs list clients for iOS, Android, Windows, macOS and Linux, plus Android TV, CarPlay and Android Auto.
- A Jellyfin API since 0.64.0, experimental and off by default. Music apps built for Jellyfin, Finamp and Jellify among them, connect to Navidrome with no Jellyfin server involved. Video and live TV are outside its scope.
- Tested with about 900,000 tracks, two thirds FLAC and one third MP3. The overview page says it runs well even on a Raspberry Pi Zero, and the database is a SQLite file in the data folder.
- On-the-fly transcoding per user or per player, Opus included, so streaming to a phone does not eat the data plan.
- Multiple libraries with per-user access: music kept apart from audiobooks, or a family collection apart from a personal one. Each account has its own play counts, favourites and playlists.
- Public share links for albums, tracks and playlists, and scrobbling to Last.fm, ListenBrainz or Maloja (the latter through a custom ListenBrainz URL).
Tags or nothing, and a music folder it never writes to
Navidrome organises music by tags only. The FAQ calls this a design decision. There is no folder view: folder browsing is simulated from tags as /AlbumArtist/Album/01-Song.ext, and an untagged library is explicitly unsupported. A Various Artists album only holds together when every track carries the compilation flag (TCMP=1 in ID3, COMPILATION=1 in FLAC). The project recommends beets or MusicBrainz Picard for tagging, and points anyone who needs folder browsing to other music servers.
The music folder is read-only from Navidrome's side. The UI has no tag editor and cannot rename files. The FAQ gives security as the reason: on an internet-facing server, a single exploit would then be enough to wipe the whole collection. Uploads are left out by design too, and the FAQ suggests a separate tool such as FileBrowser or a network share.
ffmpeg must be installed alongside the binary. The installation guide lists it as a requirement for Navidrome to work properly, and the .deb package pulls it in as a dependency through apt.
Smart playlists are still in beta and have no editor in the web UI. Their rules are JSON, written in a .nsp file that the library scan imports, or sent by a client with a rule editor such as Feishin. A built-in editor is on the roadmap.
Version 0.64.2, released on 24 September 2026, is the latest, and the project is still in 0.x. Four minor releases shipped between 0.61.0 on 31 March and 0.64.0 on 12 September 2026. The README warns that the master branch can be unstable or broken and points to the releases instead. Release 0.64.0 re-encodes every internal ID and tells users to back up the database before upgrading, and 0.64.2 fixes the database is locked errors reported since then on slow storage such as USB disks and remote drives.
