r/Lidarr • u/jasonvelocity • 52m ago
discussion How Tubifarry's Slskd search actually works (fallback tiers, Minimum Results, and blocked terms
Claude and I went through the Tubifarry source to figure out why some Soulseek searches send a dozen queries and others send one. None of this is in the README or the setting help text, so I'm sharing it in case it's useful. This is based on the source as of early October 2026 and may change in later releases. It's unofficial, so for support, use the Tubifarry repo.
The short version
Tubifarry doesn't send one query per album search. It builds an ordered list of query strategies and runs them one at a time, stopping as soon as one returns enough results.
How the chain runs
- It classifies the album. It checks for Various Artists releases, self-titled albums, very short album titles, EPs and singles that need the release type added, volume numbers, Roman numerals, and accented characters or punctuation.
- It orders the strategies in four groups: Special, Base, Variation, then Fallback. Strategies that are turned off or don't apply to this album are skipped.
- Each strategy is its own tier. Tiers run in order, and a tier's query isn't built until that tier runs.
- It stops at the first tier with usable results. With Minimum Results set to 0, one result is enough. Otherwise, the tier needs at least that many results. The count is per tier, not a running total. Results from earlier tiers are still kept.
- It never sends the same query twice.
The strategies, in order
| Strategy | Setting | What it searches for |
|---|---|---|
| Template | Search Templates | Your custom template |
| Various Artists / Self-Titled / Short Name | Always on, when they apply | Album or artist, plus the year and release type |
| Base Search | Always on | Artist + album, plus the year if Append Year is on |
| Volume Variation / Roman Numeral | Volume Variations | Swaps formats, for example Vol. 1 and Volume I |
| Edition Stripped | Always on, when the title has edition text | Removes text like "(Deluxe Edition)" or "Remastered" |
| Normalized | Normalize Search | Removes accents and punctuation |
| Trimmed Fallback | Enable Fallback Search | Shortens words by one letter to match more broadly |
| Partial Album / Distinctive Album | Enable Fallback Search | Artist + only the most distinctive words of the album title |
| Artist Alias | Enable Fallback Search | An artist alias from metadata + album |
| Track Fallback | Track Fallback | Artist + the album's longest track title |
| Blocked Term Evidence | Always on, when it applies | See below |
Blocked search terms
The Soulseek server filters certain search phrases. Tubifarry has its own hardcoded list of about 30 terms, mostly big artist names and a few album and song titles. You can't edit the list from Lidarr.
When a query contains one of these terms, Tubifarry first tries adding an accent to get past the filter, for example Beyonce becomes Bèyonce. If that isn't possible, it drops the word. As a last resort, it removes the blocked words and searches with a track title from the album instead.
Related: slskd receives the server's real list of excluded phrases but doesn't expose it through its API. You can see it by turning on debug logging in slskd and searching the log for Excluded search phrases.
Things that may catch you out
- Track Fallback works on its own. The help text says it needs Enable Fallback Search, but in the current code it runs whenever Track Fallback is on.
- Track Fallback tries only one track, the one with the longest title.
- A high Minimum Results means many queries. Each tier has to reach the number on its own, so a high value can run most of the chain for every album. On Soulseek, that can slow you down or get you rate-limited.
- Edition Stripped and Blocked Term Evidence have no setting. They always run when they apply.
See it for yourself
Turn on debug logging in Lidarr and run a search. Each query appears as [Strategy Name] Search: '<query>', and the tier that ended the search appears as Tier N found X usable results.
Corrections are welcome. I'll update the post if anything's wrong.