Navidrome

Stream your own music library from anywhere

Media & Streaming GPL-3.0 beginner ★ 23,918 stars

What is Navidrome?

Navidrome is a lightweight music server that reads the music files you already own and streams them to any browser or to Subsonic-compatible mobile apps. There is no library lock-in, no upload step and no account requirement: point it at a folder and it builds the library. It handles large collections well because it is a single Go binary with a small footprint.

Best for

Anyone who owns a music library and wants Spotify-style access to it on any device

Why choose Navidrome

Navidrome is what you install when you realise you have thousands of music files and no convenient way to listen to them. It streams your own collection to a browser or phone, supports proper playlists and favourites, and handles multiple users, so a household can share one library without stepping on each other. It speaks the Subsonic protocol, which means there is a large ecosystem of mature third-party players to choose from rather than one you are stuck with.

Replaces

  • Spotify
  • Apple Music
  • Plex

Key features

  • Streams your existing music files to browser and mobile
  • Works with any Subsonic-compatible player app
  • Playlists, favourites and multi-user libraries
  • Single small binary with low memory use

What to watch out for

The hard part is not Navidrome, it is your library. Files with inconsistent tags, compilations with missing album artist metadata, and duplicate tracks will all show up exactly as they are — the server organises what you give it. Transcoding keeps things playable on weak connections but needs CPU, and on a low-power box it can stutter. There is no store, no recommendations and no discovery, which is the point, but it also means the experience is only as good as your collection.

How to deploy

  • Docker
  • Static binary
  • Linux packages

Getting started

Mount your music library read-only and put the database on the server, then run a full scan and wait for it to finish before judging anything. Fix your tags in a dedicated tool first if the library is messy — it is far easier than fighting the scanner's output. Create accounts for the household so each person gets their own playlists, and set per-user transcoding limits rather than a global one. Install a Subsonic-compatible mobile player of your choice; the listening experience improves dramatically compared to the web UI on a phone.

Typical setup

A home server or NAS holds the music library, usually read-only to the server, with the database on faster local storage and the binaries in Docker. Users install a Subsonic-compatible player on their phones and a web player elsewhere, and each household member keeps their own playlists and favourites. Transcoding settings are normally tuned per user, so a phone on mobile data gets a smaller stream than a desktop on the local network.

Who should look elsewhere

Wrong choice if you do not have a music library. There is no streaming catalogue, no store, no recommendations, and no way to discover anything new — if your listening happens on subscription services, this is an empty shell. It also requires a consistent, well-tagged collection to be enjoyable, which is real ongoing work.

Project health

  • GitHub stars: 23,918
  • Last code push: 2026-10-01
  • Open issues: 283
  • Status: actively developed

Figures pulled from the GitHub API and refreshed periodically.

Navidrome as an alternative

More in Media & Streaming