Navidrome turns your folder of music files into a personal streaming service. Browse by album, artist or genre, make playlists, star favourites and see song lyrics, from a web page or dozens of free phone apps. Each family member gets their own playlists and play counts. It is light enough for a Raspberry Pi and copes happily with very large collections.
Streams almost any audio format to the browser and phone apps
Separate users with their own playlists, favourites and play counts
Smart playlists, lyrics and more than 30 themes
Light enough for a Raspberry Pi, fine with huge collections
Great for: Music lovers with their own MP3 or FLAC collection who want to stream it anywhere without a subscription.
A tidy, well-tested project: a Go backend (server/, core/, persistence/, scanner/) and a React web interface in ui/ built on react-admin. Themes are small JavaScript files, and many options are a single ND_ variable. The WebAssembly plugin system lets you add features in Go, Rust, Python or TypeScript without forking. Code changes need Go and Node. Your AI always tries the gentlest step first, so your version stays easy to update.
1
Settings 3 options
No code. Change it in the app or its config.
Light, dark, Spotify-like, Nord, Catppuccin and more, chosen by each person.
Welcome message, login background, sharing, downloads, scan schedule, lyrics order and more.
An account for each person, and which music libraries each one can see.
2
Extend 3 options
Themes, plugins, webhooks and the API. Still no fork.
Playlists that fill themselves, e.g. "five-star songs not played this month" or "80s rock".
Add metadata sources, scrobblers, lyrics providers, webhooks or scheduled tasks without forking.
Use phone and desktop apps such as Symfonium, Substreamer, play:Sub or Feishin, or scripts.
3
Code 3 options
Your AI edits the source for anything else.
A theme in your own colours, which upstream also welcomes as a contribution.
Change screens, such as a big-button view for the kitchen.
New data or behaviour. Database changes need a migration (make migration-sql / migration-go).
Can I trust it?
GPL-3.0-only. Free to use and change. If you give copies of the program (changed or not) to other people, you must share the source code under the same licence. Running it for your household, or as a service others use online, has no extra obligations.
Your data: stores personal data, on your own device or server. Music files stay in your music folder (mount it read-only). Users, playlists, play counts, favourites and the library index live in navidrome.db (SQLite) in the data folder.
Other services: Last.fm (optional, free (needs your own API key)); ListenBrainz (optional, free); Deezer (optional, free); Navidrome Insights (optional, free)
Pinned version 56cc32a. Every handover uses exactly this code, which we've reviewed.
The first account created becomes the admin. Create it straight after starting, before anyone else can reach the page.
Use HTTPS through a reverse proxy if you open it to the internet; Subsonic apps send passwords with every request.
Keep ND_ENABLETRANSCODINGCONFIG off except while you set up transcoding, because it lets admins run commands.
Anonymous usage statistics are sent daily by default. Set ND_ENABLEINSIGHTSCOLLECTOR=false if you prefer not to.