Navidrome Lite is an offline-first local music library browser and player that runs entirely in your browser.
It gives your local music collection a proper library experience — browse by album, artist, or genre, build playlists, import/export .m3u/.m3u8, and even play HLS streams — with no accounts, no server, and no tracking. Everything runs locally in a single page.
Navidrome Lite is NOT affiliated with, endorsed by, or connected to the real Navidrome project in any way.
The real Navidrome is an excellent, self-hosted music server. This project is a small, standalone, browser-only tool that was inspired by the library-browsing experience of Navidrome — hence the "Lite" name. It shares none of Navidrome's code, does not talk to a Navidrome server, and is not a client for it.
If you want the real thing — a powerful self-hosted music streaming server — please go support the actual Navidrome project. This is just a humble local library browser that admired the vibe.
(This project is part of the same personal "Navi" family as NaviWriter and NaviPlayer Pro, which follow the same naming pattern.)
A single-page local music library app. It includes:
- Loading a whole music folder (via the folder picker or the File System Access API)
- Automatic album / artist / genre grouping with cover art
- Reading embedded tags (title, artist, album, album artist, genre, year, track number, cover) via jsmediatags
- A metadata cache (IndexedDB) so re-loading the same folder is fast
- Global search across tracks, albums, artists, genres, and playlists
- A three-pane layout: Library (left) · Tracks/Queue (middle) · Preview/metadata (right), with resizable panes
- Playlists — create, save from what's visible, import/export
.m3u/.m3u8 - Smart playlist matching on import (matches entries to your library by path, filename, or artist/title)
- HLS streaming support (add a
.m3u8URL) via hls.js - Playback: play/pause, seek, volume, shuffle, repeat (all/one/off), queue
- Light / dark theme + compact row mode
- Keyboard shortcuts
- Virtualized track list (handles big libraries smoothly)
It is not a polished commercial product. It's a focused local music browser built through iterative development and a good deal of Copilot.
Navidrome Lite (v8.5) is complete and stable for what it is.
It is a self-contained music library browser. It is not actively developed anymore — its ideas were carried forward and expanded into NaviPlayer Pro, which is the larger, more feature-rich player. Navidrome Lite is preserved here as the leaner, library-first option.
You may still encounter:
- Browser-specific format/codec support
- The usual local-file limitations (see below)
- Minor UI quirks
Fork it, tweak it, or open a pull request if you'd like to improve it.
Navidrome Lite was created and directed by me, a human.
All of the code was generated with Microsoft Copilot Thinking Mode. My role was designing features, testing, reviewing behavior, asking for fixes, and directing the UI/UX. If you open the code and find something strange, please have mercy.
The internals are compact — it's index.html + app.js + styles.css, with the JS written in a dense, minified-ish style. It's small, but it's terse; read it with coffee.
Download all three files from the Navidrome Lite V8.5 folder and keep them together:
-Navidrome Lite V8.5
- index.html
- app.js
- styles.css
Then open index.html in a browser.
It also loads two small libraries from a CDN (so a connection helps on first load):
- jsmediatags — reads embedded music tags
- hls.js — enables HLS stream playback
Preferably use a Chromium-based browser (Chrome, Edge, Brave, Vivaldi). The "Load Library" folder picker uses the File System Access API, which is best supported in Chromium browsers; other browsers fall back to a standard folder <input>.
- Open
index.htmlin a browser. - Click ☰ → Load Library (or use Folder Input) and pick your music folder.
- Wait a moment while it reads tags (progress shows in the status bar).
- Browse by Albums / Artists / Genres in the left pane.
- Click a track to preview it; click ▶ to play.
- Make playlists, import
.m3ufiles, or add an HLS URL from the menu.
- Folder loading (File System Access API or folder input)
- Album / Artist / Genre columns with cover art
- Embedded tag reading + IndexedDB metadata cache
- Global fuzzy search across everything
- Virtualized list for large libraries
- Play / pause / seek / volume
- Shuffle and repeat (all / one / off)
- Queue (queue the visible tracks, reorder via play-next)
- Now-playing bar with cover, title, and transport
- Create new playlists
- Save whatever's currently visible as a playlist
- Add visible tracks to an existing playlist
- Import
.m3u/.m3u8(with smart library matching) - Export playlists as
.m3uor.m3u8 - Right-click / ⋯ context menus on tracks and playlists
- Add an HLS (
.m3u8) URL and play it via hls.js - Streams can be saved into playlists alongside local tracks
- Three resizable panes (Library / Tracks / Preview)
- Preview pane showing full metadata for the selection
- Light / dark theme (remembered)
- Compact row mode
- Responsive layout (panes collapse on smaller screens)
When you import an .m3u/.m3u8, Navidrome Lite tries hard to match each entry to a track in your loaded library, in this order:
- Exact relative path
- Path without extension
- Path suffix match
- Filename
- Base filename (no extension)
Artist - Titlefrom the#EXTINFlabel
Anything it can't match is reported as "missed" (or kept as an HLS stream if it's a .m3u8 URL). So for best results, load your music library first, then import the playlist.
Navidrome Lite plays local files using in-memory blob URLs, and it does not permanently store your audio files (browsers don't allow that). What it does keep:
- Playlists and settings — saved in
localStorage - Track metadata — cached in IndexedDB (so re-scanning the same folder is fast)
But the actual audio must be re-loaded each session by pointing it at your music folder again. Your saved playlists then re-match to the freshly loaded tracks automatically.
This is a browser security limitation, not a bug — the tradeoff for a zero-install, fully-local app.
Find the license in the LISCENSE file I guess.
Part of the Navi family alongside NaviWriter, NaviPlayer, and NaviPlayer Pro. Enjoy your music. 🎶