OpenSourcePicks

Open source alternatives to popular software, with live GitHub data

GitHub stats refreshed every day

Navidrome

Lightweight music server with a web player and Subsonic API support

Open source alternative to

Visit NavidromeGitHubDocumentation

Main features

  • Web player with themes
  • Subsonic and OpenSubsonic API for third-party apps
  • Experimental Jellyfin API for Jellyfin music clients
  • Multiple users with their own play counts, playlists and favorites
  • Several libraries with per-user access
  • Per-user or per-player transcoding, including Opus
  • Smart playlists and synced .m3u playlist import
  • Last.fm and ListenBrainz scrobbling
  • Public share links for songs, albums and playlists
  • Lyrics from tags and sidecar files
  • Jukebox mode on the server's audio output
  • Plugins and reverse-proxy authentication

What Navidrome does

Navidrome turns a folder of music files into a personal streaming service. It ships its own web player, built with React and Material UI, and it implements the Subsonic API and the OpenSubsonic extensions. That second part matters most in practice: dozens of existing mobile and desktop music apps already speak Subsonic, so you can pick the client you like on each device instead of depending on one official app.

The server is multi-user. Each person gets their own play counts, ratings, favorites and playlists, and newer releases support several libraries with access granted per user. Smart playlists are built from rules, and .m3u files placed in the library are imported and kept in sync.

Listening features

Transcoding happens on the fly with FFmpeg, configured per user or per player, so a phone on mobile data can receive Opus at a low bitrate while a desktop gets the original FLAC. Plays can be scrobbled to Last.fm and ListenBrainz (and to services such as Maloja through a custom URL), and artist images can come from Deezer. Albums, songs and playlists can be shared through public links. Lyrics are read from embedded tags and sidecar files.

There are a few less common extras: a jukebox mode that plays on the server’s own audio device, a plugin system, and external authentication through a reverse proxy. An experimental Jellyfin-compatible API, off by default, lets Jellyfin music clients connect.

Self-hosting Navidrome

Navidrome is a single Go binary with an embedded SQLite database. You can run it in Docker or Podman, from pre-built binaries for Linux, Windows, macOS and ARM, from FreeBSD ports or from community packages. FFmpeg must be installed for transcoding. The documentation says it runs well on hardware as small as a Raspberry Pi Zero.

The important design choice is that Navidrome organizes music only by tags. Folder browsing is simulated from tag data, and the FAQ says untagged libraries are not supported, so a library tidied with a tagger such as MusicBrainz Picard or beets works best. Navidrome never writes to your music files and has no upload function; the FAQ suggests FileBrowser, network shares or similar tools for adding music.

Hosted version

The developers do not run a hosted service. The documentation lists partner providers (PikaPods, Zenith Hosting and ElfHosted) that offer managed Navidrome hosting described as officially supported, with part of the revenue going to the project.

Limitations

Poorly tagged collections will look messy, because there is no true folder view to fall back on. You cannot upload or edit tags from the web interface. Like every self-hosted music server it only plays the files you own: there is no catalog and no recommendation engine beyond what Last.fm and ListenBrainz data provide. The Jellyfin API is still experimental.

Who it suits

Navidrome suits people with a well-tagged music collection who want a low-maintenance server, a decent browser player and freedom to choose Subsonic apps on their phones. It is a common first choice when replacing Spotify for music you already own. If you browse mainly by folder, look at gonic or Ampache; for a video library as well, see Jellyfin.

Technical details

Self-hosting needs

  • FFmpeg

Built with

  • Go
  • React

GitHub topics

  • airsonic
  • madsonic
  • media-server
  • music
  • music-server
  • navidrome
  • opensubsonic
  • raspberry-pi
  • self-hosted
  • streamer
  • streaming-api
  • streaming-audio
  • subsonic
  • subsonic-server

Reviewed by the OpenSourcePicks editors from the project's repository and documentation. Something out of date? Tell us.