A Navidrome plugin that reads embedded star-rating tags from supported music files and syncs them into Navidrome's user rating system via the internal Subsonic API.
Warning: This is still in beta! Start with dry_run=true and verify the first import before allowing the plugin to write ratings.
- Reads embedded ratings from supported audio containers.
- Matches Navidrome songs to files by exact size + extension.
- Writes ratings via the Subsonic
setRatingAPI. - Supports per-library, per-user tag priority and overwrite behavior.
- Runs inside Navidrome's plugin sandbox using library filesystem mounts.
- MP3
- FLAC
- Ogg / Opus
- WAV
- DSF
- M4A / AAC
- WMA
The plugin supports these embedded rating sources:
MediaMonkeyfoobar2000MusicBeeWMP(Windows Media Player; also used by MusicBee)iTunes
The order in ratingTagOrder determines which tag wins when a file contains multiple rating formats.
For detailed rating value mappings, see DETAILS.md.
libraryIdmust be the numeric Navidrome library ID, not the display name.usernamemust exactly match the Navidrome username.- Each configured user must also be granted access under the plugin's User Access tab.
- Each configured library must be assigned to the plugin and granted filesystem access.
- The plugin only reads files; it does not write metadata back to your music library.
- Navidrome may label filesystem access as library permission with "write access". This is a host permission label, not an indication that the plugin writes files.
If your library is very large or hosted on slow storage, the normal filesystem walk can take too long.
In that case, enable Cache Libraries Filesystem Tree and set kv_storage_max_size to match permissions.kvstore.maxSize in manifest.json.
See HOW_TO_SETUP.md for detailed installation and configuration information, including normal setup and cache setup.
See DETAILS.md for runtime behavior and rating value mapping details.
- Start with
dry_run=true. - If every file is skipped as unreadable, verify library mount permissions and plugin assignment.
- If the first scan stalls during the directory walk, enable the cache and increase KV storage sizing.
- If
setRatingfails with API error 50, the user is not authorised in plugin User Access.
- The first full scan can be slow for large libraries or remote mounts.
- The plugin breaks work into budgeted chunks to stay safely under Navidrome's 30-second callback limit.
- The plugin relies on file size + extension matching because Navidrome does not provide a usable filesystem path for songs inside the sandbox.