Jellyfin AI Recommendations in 2026: LocalRecs, Smart Collections & Privacy-First Discovery

Jellyfin AI Recommendations in 2026: LocalRecs, Smart Collections & Privacy-First Discovery

Jellyfin AI Recommendations in 2026: Privacy-First Discovery Without the Cloud

Plex has Discover. Netflix has its algorithm. Jellyfin has... nothing built-in. And that is intentional - Jellyfin does not phone home, does not track you, and does not sell your viewing habits.

But "no tracking" does not have to mean "no recommendations." In 2026, the community has built tools that deliver personalized suggestions entirely on your server - no external API calls, no cloud dependency, no data leaving your network.

This guide covers every method available.


The Recommendation Stack

ToolMethodPrivacySetup
LocalRecsML embeddings (TF-IDF)100% localPlugin install
jellynextTrakt lists per userTrakt account neededPlugin + Trakt
Smart CollectionsRule-based dynamic lists100% localPlugin install
KometaExternal list syncTMDB/Trakt API callsDocker container

Method 1: LocalRecs - Machine Learning, 100% Local

LocalRecs is the most exciting Jellyfin plugin of 2026. It generates personalized movie and TV recommendations using machine learning - entirely on your server, with zero external API calls.

How it works

  1. LocalRecs scans your library metadata (genres, actors, directors, tags, decades, ratings)
  2. It builds TF-IDF embeddings (~1200-dimension vectors) for each item
  3. It creates a taste profile from each user's watch history
  4. It ranks unwatched items by cosine similarity to the user's taste
  5. Results appear as a "Recommended For You" section

This is the same mathematical approach used by Spotify's Discover Weekly - but running locally on your hardware.

Installation

  1. Dashboard → Plugins → Repositories → Add:
    https://raw.githubusercontent.com/rdpharr/jellyfin-plugin-localrecs/main/manifest.json
    
  2. Dashboard → Plugins → Catalog → LocalRecs → Install
  3. Restart Jellyfin

Configuration

Dashboard → Plugins → LocalRecs:

SettingRecommendedWhy
Minimum watch history10 itemsNeed enough data for meaningful recommendations
Include genres weight0.4Genres are the strongest signal
Include actors weight0.2Actors indicate taste
Include directors weight0.2Directors indicate style preference
Include tags weight0.1Tags add nuance
Include decade weight0.1Era preference matters
Refresh intervalDaily (3 AM)Recalculate after new watches

What users see

After configuration, each user gets a personalized "Suggested For You" row on their home screen. The recommendations improve as they watch more content.

Performance impact

  • Initial embedding calculation: 2-5 minutes for 1000 movies
  • Daily refresh: under 1 minute
  • RAM usage: ~50-100 MB for the model
  • CPU: negligible after initial build

Limitations

  • Needs at least 10 watched items per user for meaningful results
  • Works best with well-tagged libraries (use TMDB metadata)
  • Does not consider ratings (only watched/unwatched)
  • Movie-focused - TV show support is basic

Method 2: jellynext - Trakt-Powered Per-User Recommendations

jellynext creates virtual libraries for each user containing personalized Trakt recommendations and upcoming new seasons.

How it works

  1. Each user links their Trakt account
  2. jellynext fetches Trakt's personalized recommendations for that user
  3. It creates a virtual "Recommended" library visible only to that user
  4. It also shows upcoming new seasons for shows the user watches

Installation

Repository: https://raw.githubusercontent.com/luall0/jellynext/main/manifest.json

Install from catalog → Restart → Configure Trakt API credentials.

Trade-off: Privacy

Unlike LocalRecs, jellynext requires a Trakt account and makes API calls to Trakt servers. Your watch history is shared with Trakt. For users who already use Trakt for scrobbling, this is not a new concern. For privacy purists, use LocalRecs instead.

Best for

  • Users who already scrobble to Trakt
  • Discovering content NOT in your library (Trakt recommends from its full database)
  • Tracking upcoming seasons

Method 3: Smart Collections with jellyfin-smartlists-plugin

Dynamic collections that auto-update based on rules - a simpler but effective recommendation system.

JellyWatchTry JellyWatch — Your Jellyfin companion, everywhere.

Example smart lists that feel like recommendations

Collection nameRuleEffect
"Because You Watched Sci-Fi"Genre = Sci-Fi AND unwatched AND rating > 7Shows high-rated unwatched sci-fi
"Hidden Gems"Rating > 7.5 AND plays = 0 (across all users)Nobody has watched these yet
"New This Month"Added in last 30 daysFresh content discovery
"Short Films for Tonight"Runtime < 100 min AND unwatchedQuick watch suggestions
"Critically Acclaimed"Rating > 8.0 AND unwatchedTop-rated unwatched content

Installation

Repository: https://raw.githubusercontent.com/jyourstone/jellyfin-smartlists-plugin/main/manifest.json

Configuration example

After install, create lists in Dashboard → Plugins → Smart Lists:

Name: Hidden Gems
Type: Movie
Filters:
  - Community Rating >= 7.5
  - Play Count = 0
  - Year >= 2020
Sort: Rating descending
Limit: 50
Auto-refresh: Daily

Method 4: Kometa for Curated Discovery

Kometa (formerly Plex Meta Manager) can sync external recommendation lists into Jellyfin collections:

  • IMDb Top 250 - auto-updated collection
  • Trakt Trending - what's popular right now
  • Trakt Anticipated - upcoming releases people are excited about
  • Letterboxd Top Films - curated by the film community
  • MDBList custom lists - community-curated themed lists
# kometa config.yml
libraries:
  Movies:
    metadata_path:
      - pmm: imdb          # IMDb Top 250, Popular
      - pmm: trakt         # Trending, Anticipated
      - pmm: basic         # Decades, Genres

This is not personalized per-user, but it surfaces content your users might not find on their own.


Combining Methods: The Ultimate Discovery Stack

For the best experience, layer multiple approaches:

  1. LocalRecs - personalized per-user ML recommendations (home screen row)
  2. Smart Lists - rule-based collections visible to everyone
  3. Kometa - curated external lists (IMDb Top 250, Trending)
  4. Editors Choice plugin - manually featured content on the home page hero banner

This gives you:

  • Personal recommendations (LocalRecs)
  • Dynamic discovery (Smart Lists)
  • Cultural relevance (Kometa/Trakt)
  • Admin curation (Editors Choice)

FAQ

Does LocalRecs send my data anywhere? No. All computation happens locally on your server. Zero network calls.

How is this different from Jellyfin's built-in "Suggestions"? Jellyfin's built-in suggestions are basic (recently added, continue watching). LocalRecs uses actual ML embeddings to find content similar to your taste profile.

Can I use LocalRecs and jellynext together? Yes. They create separate recommendation sources that complement each other.

Does this work for TV shows? LocalRecs is primarily movie-focused. For TV, jellynext (via Trakt) and Smart Lists work better.

How much watch history is needed? LocalRecs needs ~10 watched items minimum. Quality improves significantly after 30+ items.

Will this slow down my server? No. The initial model build takes 2-5 minutes. After that, daily refreshes take under a minute. RAM usage is ~50-100 MB.


Recommendations running? Monitor who is discovering new content. Download JellyWatch on Google Play - viewing statistics, watch history, and server health for Jellyfin.

On Emby? Download EmbyWatch on Google Play

Comments 2

MLEnthusiast·

LocalRecs is genuinely impressive for a Jellyfin plugin. After 50 watched movies, the recommendations are surprisingly accurate. It correctly identified my preference for slow-burn thrillers over action movies.

PrivacyFirst·

The fact that this runs 100% locally with zero API calls is exactly what the Jellyfin community needed. No Trakt account required, no data leaving my network. This is how recommendations should work.

Leave a comment

Never displayed publicly.
0 / 2000 · Supports limited Markdown: **bold**, *italic*, `code`, [link](url), lists, > quote.