Export Spotify playlists to your self-hosted Navidrome music server
This project has been developed with the assistance of various Large Language Models (LLMs) for planning and writing code. All features and functionalities have been tested to meet the project's requirements and quality standards.
- β¨ Features
- π Quick Start
- π― How It Works
- πΈ Screenshots
- βοΈ Setup
- π¦ Deployment
- π Donations
- π οΈ Tech Stack
- π Documentation
- π License
- π Dual Integration β Connect Spotify & Navidrome simultaneously
- π― Smart Matching β ISRC, fuzzy, and strict matching strategies
- π Batch Export β Export multiple playlists at once
- π Differential Exporting β Sync only new tracks (single browser session)
- π€ JSON Export β Export unmatched tracks as JSON
- β‘ Real-time Progress β Live export tracking with match statistics
- ποΈ Export Preview β Review matches before committing
- Connect β Login to Spotify and enter Navidrome credentials
- Select β Browse and check playlists to export
- Export β Review matches and start the transfer
Matching Strategy Chain:
- ISRC β Exact match via unique recording code
- Fuzzy β Similarity matching (80% threshold)
- Strict β Normalized exact string match
Unmatched tracks can be exported as JSON for later addition to Navidrome.
| Login | Dashboard | Export Progress |
|---|---|---|
![]() |
![]() |
![]() |
| Connect to Spotify & Navidrome | Browse and select playlists | Real-time progress tracking |
- Node.js 18.17+
- Spotify Developer account
- Running Navidrome instance
# Clone & install
git clone https://github.com/betsha1830/navispot.git
cd navispot
bun install
# Configure
cp .env.example .env.local
# Edit .env.local with your credentials
# Run
bun devSpotify Setup:
- Create app at Spotify Developer Dashboard
- Add one of the following as your Redirect URI. or to Redirect URIs. Spotify only allows the following loopback addresses:
http://127.0.0.1:PORTorhttp://[::1]:PORT - localhost:
http://127.0.0.1:3000/api/auth/callback - Remote host:
https://your-domain.com/api/auth/callback - Copy Client ID & Secret to
.env.local
docker compose up -dProduction Variables:
SPOTIFY_REDIRECT_URI=https://your-domain.com/api/auth/callback # localhost: http://127.0.0.1:3000/api/auth/callback
NEXT_PUBLIC_APP_URL=https://your-domain.com #localhost: http://127.0.0.1:3000Update Spotify Dashboard with your production redirect URI.
If NaviSpot helps you migrate your music library, consider supporting development:
| Coin | Address |
|---|---|
| BTC | bc1q8madmx95n2ve8e7xr38d2fyldafxjg25ffeuts |
| ETH | 0xFee844879Bd716BE64580b8D2B8835ff76622671 |
| BCH | qqep38q5t9fm3kxe96pek4cr49xz3u4exsq0x9t4xe |
| TRX | TM5evHNFfcy2WbrDbMpUMZdKotZw958WcG |
| SOL | 9tXhy1xhs1MkXVonNkozwxwYHHwH4iifjrFakeY5wS55 |
| XNO (NANO) | nano_371m8ijecct9csm18eubojmfkf7rt1bxq4frs43bo5ybmsbpwxyywhqz9wh3 |
| POL | 0xFee844879Bd716BE64580b8D2B8835ff76622671 |
| LTC | ltc1qaf5an5qultyw47xjees3d7uwnext2rszg93njj |
| XMR | 84euv4YWNe4WGBm8hrPWKV8PSQpGvRzsFB9jyWhSCs45Z13mfU8qAyARaiqjc9CPCcSspyprd4Qv1KfbSVaHwxH9HRNmTjC |
Your support helps maintain and improve this open-source project! π
Found a bug or have a feature idea? We welcome your feedback!
Please open an issue and include:
- Error messages (screenshots or console logs)
- Spotify account type (Free or Premium)
- Navidrome setup (Local or Remote server)
- Browser you're using to access NaviSpot
- Steps to reproduce the issue
- Expected vs actual behavior
Please open an issue and include:
- Feature description β What you'd like to see
- Use case β Why this would be helpful
- Any examples from other apps (if applicable)
We appreciate detailed reports that help us improve NaviSpot for everyone!
- Framework: Next.js 16 (App Router)
- Language: TypeScript
- Styling: Tailwind CSS
- APIs: Spotify Web API, Navidrome Subsonic API
Feature docs available in docs/:
| Phase | Features |
|---|---|
| F1 | Setup, OAuth, API Clients, Auth |
| F2 | Matching (ISRC, Fuzzy, Strict), Export, Favorites |
| F3 | UI Components, Dashboard, Progress Tracking |
See full feature index for details.
We appreciate all contributions to NaviSpot!
Want to contribute? Check out our issue tracker for ways to help!
MIT License β Open Source
Copyright (c) 2026 NaviSpot
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.






