Skip to content

fabienpiette/navilist

Navilist

CI

Self-hosted web UI for managing Navidrome playlists, M3U editor, smart rule builder, dedup, merge, and bulk ops. No filesystem access required.


Quick Start

# Clone and configure
git clone https://github.com/fabienpiette/navilist.git
cd navilist
# Edit docker-compose.yml: set NAVIDROME_URL, NAVIDROME_USER, NAVIDROME_PASS

# Run
docker compose up -d

# Open
open http://localhost:8080

Or from source (Go 1.22+ required):

NAVIDROME_URL=http://localhost:4533 \
NAVIDROME_USER=admin \
NAVIDROME_PASS=yourpassword \
go run ./cmd/server

Features

  • Smart playlist builder, visual rule editor with 40+ filterable fields, live autocomplete for genre/artist/album, 12 preset templates, raw NSP JSON fallback
  • M3U playlist editor, create and edit playlists with live search-as-you-type track search
  • Dedup, find playlists with identical track lists, pick which to keep, delete the rest in one click
  • Merge, combine two or more playlists into one (tracks deduplicated); optionally delete the sources
  • Smart rename, suggest Artist – Album names based on track metadata; edit before applying
  • M3U import, upload a .m3u file, get a match report (exact path → title fuzzy fallback), confirm to create
  • Batch ops, delete selected, delete all empty, export multiple playlists as a .zip
  • Single binary, all templates and static assets embedded; no volume mounts needed in Docker
  • Dark mode, stored in localStorage; no cookies, no server round-trip

Install

Prerequisites: a running Navidrome instance (v0.50+). Docker or Go 1.22+.

Note: the Navidrome account must have admin privileges. Non-admin accounts can only see public playlists and their own.

Docker Compose (recommended)

services:
  navilist:
    image: ghcr.io/fabienpiette/navilist:latest
    container_name: navilist
    restart: unless-stopped
    ports:
      - "8080:8080"
    environment:
      NAVIDROME_URL: http://navidrome:4533
      NAVIDROME_USER: admin
      NAVIDROME_PASS: yourpassword
    networks:
      - navidrome-net

networks:
  navidrome-net:
    external: true
docker compose up -d

From source

git clone https://github.com/fabienpiette/navilist.git
cd navilist
go build -o navilist ./cmd/server
NAVIDROME_URL=http://localhost:4533 NAVIDROME_USER=admin NAVIDROME_PASS=secret ./navilist

Usage

# Environment variables (all required except PORT)
NAVIDROME_URL=http://navidrome:4533   # Navidrome base URL
NAVIDROME_USER=admin                  # Navidrome username (must be admin)
NAVIDROME_PASS=secret                 # Navidrome password
PORT=8080                             # Listening port (default: 8080)

Playlist list (/), filter by All / M3U / Smart, client-side search, inline delete, batch delete/export, merge selected, dedup selected, smart rename selected, delete all empty.

New M3U (/playlists/new), type a name, search tracks, reorder with drag, save.

New Smart (/playlists/new/smart), add rules visually or paste NSP JSON directly; set sort field and limit. In a rule row, set field to genre/artist/album for live autocomplete suggestions.

Import (/import), upload a .m3u file; review the match report; confirm to create the playlist.

Merge, check two or more playlists, click merge selected, name the result, optionally delete sources.

Dedup, check two or more playlists, click find duplicates; for each group of identical playlists choose which to keep.

Smart rename, check smart playlists, click smart rename; suggested names are derived from track metadata; edit before applying.

Known Issues

  • Smart playlists require Navidrome v0.50+ (earlier versions don't expose the rules field via /api/playlist).
  • The M3U import fuzzy-match uses title search only; tracks with identical titles may match the wrong song.
  • No authentication layer, intended for private/LAN use only. Do not expose port 8080 to the internet without a reverse proxy with auth.
  • Genre autocomplete fetches the full genre list on each keystroke (Navidrome has no server-side genre filter); performance degrades with very large genre libraries.

Documentation

Contributing

Contributions welcome. See CONTRIBUTING.md for dev setup and guidelines.

Acknowledgments

Thanks to all contributors.

Buy Me A Coffee

License

AGPL-3.0, if you distribute a modified version, you must release its source under the same terms.

About

Self-hosted web UI for managing Navidrome playlists, M3U editor, smart rule builder, dedup, merge, and bulk ops. No filesystem access required.

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors