Repository navigation
Features
Moonfin builds on the foundation of Jellyfin with targeted improvements for the TV viewing experience. Playback specifics live on their own page, see Playback and Codecs.
Sign in to more than one server and browse everything as one library.
- Emby server support, including sign-in through Emby Connect.
- Multi-Server Libraries combines content from all connected Jellyfin servers into a single view, with server badges showing where content came from.
- Browse, search, favorites, and genres aggregate results from every connected server, and progress is tracked correctly per server.
- Quick Connect and fast user switching from your avatar, with auto-login and last-server memory.
Moonfin is the first smart TV client with native Seerr support. Setup goes through the Moonfin server plugin, see Seerr Setup.
- Browse trending, popular, and recommended movies and shows, filtered by genre, studio, network, or keyword.
- Add Seerr discover rows (Trending, Popular, Upcoming, My Requests, and more) to your home screen.
- Request content in HD or 4K directly from your TV, with smart season selection for shows.
- Request, cancel, report an issue, and add to your watchlist right on the normal detail screen, with a status badge, live download progress, and per-season availability. Show Seerr Availability Badges (on by default) turns the season badges on or off.
- Seerr's Recommendations and Similar titles on the detail screen, and a Trailer button on titles that are only on Seerr.
- Show Missing Collection Items (on by default) adds the films a collection is missing, taken from Seerr, in release order with a badge. Selecting one opens its request page. Both toggles are under Settings > Integrations > Seerr.
- View all your pending, approved, and available requests as a poster grid with the type, status, requester, and date, plus a download bar that counts up (like 1.6 GB of 4.4 GB) and then shows Importing. Your remaining request quota is there too.
- A Seerr shortcuts row on the home screen with Discover, Movies, Series, Requests, and Issues tiles.
- Report issues and follow their comment threads, browse collections, and approve or decline requests as an admin.
- Optional NSFW content filtering, and Seerr results in global search.
- An in-app on-screen keyboard with QWERTY, AZERTY, and QWERTZ layouts chosen by your language, symbol and number pages, a phone-style pad for PINs and ports, long press for accented characters, a movable cursor, and a paste key. It suggests recent servers, usernames, and searches, and there is a setting to hand back to your TV's own keyboard.
- Sign-in that finds your server, scanning your network instead of only offering servers you typed in, and keeping saved users listed even when the server is unreachable.
- Search results grouped into tabs by media type, with your last ten searches offered as chips and game results included.
- A shuffle button for instant random discovery, and a genres menu to browse all media by genre in one place.
- Long press any card for a quick menu with Play or Resume, Mark as Watched or Unwatched, Hide from Continue Watching, Hide from Next Up, favorites, Add to Collection, and Add to Playlist. Episodes add Go to Series, a collection's own page adds Remove from Collection, and admins on Jellyfin also get Refresh Metadata, Identify, and Change Artwork.
- A Favorites Home View with a tab for each kind of favorite (Movies, Series, Episodes, Collections, People, Music Videos, Artists, Albums, and Songs) and a line of details over the focused item's backdrop. The older grid is still there as Library View, under View style in the Favorites settings.
- Dynamic library buttons that populate from your own libraries, so any library or collection is one click away.
- Folder view with breadcrumb navigation, plus a built-in photo and comic viewer.
- Samsung Smart Hub Preview lets you jump straight into content from deep-linked cards on the TV's home screen.
- Group a library into rows by Genre, Parental Rating, Decade, or Studio, set per library. Rating groups run mildest to strongest, and decades run newest first.
- The playlist library groups by what each playlist holds, splitting into Video, Music Video, Audio, Audiobook, Book, Photo, and Mixed rows.
- Group into Collections (off by default) folds movies and series into their collections when you browse libraries and genres. It's under Settings > Personalization > Libraries.
- In-library search that matches sort names, so "Matrix, The" answers to "matrix".
- Liked and Disliked filters driven by your own ratings.
- Show Media Details and Hide Backdrops while Browsing toggles, with library pages showing a crossfading backdrop of the focused item.
Advanced: the full set of sorts and filters
Sorts include date episode added, play count, and album, artist, track number, and random for music. Filters cover in progress, unreleased series, subtitles, trailers, extras and theme songs, quality from SD to 4K and 3D, and source media like DVD, Blu-ray, and ISO. The faceted genre, rating, tag, year, and language pickers only list what your library actually holds.
- Home layout sync through the server plugin, so your rows follow you across devices.
- Since You Watched rows, up to five of them. Their Source setting picks Moonfin Recommends (scores your own library), Jellyfin Recommends (the server's own picks), TMDb Similarity (TMDB data through the plugin or Seerr), or Hybrid (the server's picks, topped up from your library). It's under Settings > Personalization > Home Screen once a Since You Watched row is turned on.
- Rewatch and Recently Released rows alongside Recently Added.
- Playlists rows with sortable ordering, plus Music Artists, Music Albums, Music Playlists, and Continue Listening.
- Recordings and Live TV rows, 13 TMDB chart rows, IMDb list rows, and Radarr and Sonarr calendar rows.
- Synced hide filters for Continue Watching and Next Up, plus a max day limit for Next Up.
Advanced: how the home screen loads and dedupes
- Progressive loading renders local rows immediately while slower rows fill in behind them, and all media server traffic shares one request queue with a concurrency cap.
- Merge Recent Rows by Type folds the per-library Recently Added and Recently Released rows into one row per type, deduplicated and sorted by date.
- A Playlist Order sort for the playlist and collection rows, so a curated order is honored instead of being re-sorted alphabetically.
- Duplicate titles collapse when the same film sits on two servers or in two libraries, keeping the copy that has your watch progress.
- Pre-playback track selection, with your audio and subtitle picks remembered for the rest of a series.
- Trickplay preview thumbnails while scrubbing, loaded ahead so they're ready when you start to seek, and media segment skipping for intros and credits.
- Pause While Scrubbing (on by default, needs trickplay) pauses playback while you seek and carries on from the new spot when you press play. Chapter Marks (off by default) marks where each chapter starts on the seek bar. Both are under Settings > Playback & SyncPlay > Video Playback Preferences.
- Next episode countdown, a still watching prompt, cinema mode pre-rolls, and a sleep timer.
- Theme music playback for shows and movies, with volume control.
- Subtitle downloads and in-app trailers without leaving the app. Subtitle search results show the provider, rating, and download count, with badges for AI Translated, Machine Translated, SDH, Forced, and Perfect match. Trailers play in up to 1080p and keep the original soundtrack instead of YouTube's automatic dubs.
- A separate subtitle style for HDR, since white subtitles read far brighter in HDR than in SDR.
- A full subtitle color palette of 15 colors for the text, shadow, and background, in both the SDR and HDR styles. Transparent is offered for the shadow and background but not for the text.
- A subtitle offset timeline that lays the cues out on a 10 second ruler while you adjust the offset of a text subtitle.
- PGS subtitles on LG in a direct played MKV are read straight from the file, so they don't wait for the server to extract them first.
- Wait for ASS/SSA subtitles on LG (off by default) holds the video until styled subtitles are ready, so the first lines show. It's under Settings > Playback & SyncPlay > Subtitle Preferences while Direct play ASS/SSA subtitles is on.
- Configurable time labels around the progress bar, with six slots for elapsed time, total duration, time remaining, the current time, and a wall clock "Ends at".
- The title logo during playback, with the season and episode under it for shows.
- Remote media keys for play, pause, fast-forward, rewind, and stop.
- Remote control from other Jellyfin apps, covering play, pause, stop, seek, next, previous, the TV's volume and mute, messages, the d-pad, audio and subtitle tracks, repeat, shuffle, and Play Now, Play Next, and Add to Queue. A phone remote can open Search on the TV and type into it as you go.
- SyncPlay for synchronized watch-together playback. While you're in a group, detail screens show a Watch with group button, and the SyncPlay dialog has Watch now.
- Music libraries with albums, artists, playlists, and synced lyrics.
- OLED burn-in protection through a screensaver that starts after a set time in the menus or while playback is paused. Settings > Personalization > Screensaver picks the backdrop (Library Art, Black, Moonfin, Calm, Neon Pulse, or Aurora) and a component on top of it (Moonfin Logo, Clock, Runner, or None), with its movement from Static to Ultra, its size from Thumbnail to Large, and one of nine positions when it's static. Library Art can be limited by content type, libraries, collections, and excluded genres. A live preview shows each change, and the settings sync through Moonbase.
- A clock offset setting from -12 to +12 hours for TVs that report the wrong time.
- An Electronic Program Guide with a hero band that shows the focused program's artwork, genre tinted cells, ended programs faded out, and episode titles with their numbering. It has a filter rail for movies, series, sports, news, kids, premieres, and favorites, channel sorting that's saved and synced, a date picker, and Now, Earlier, and Later controls. Fast-forward and rewind page through the channel rows.
- The guide opens on the channel you last watched, and Back returns there first before it leaves the guide.
- A quick channel changer during live playback. Press Up, or the Channels button in the player, for a carousel of channels in guide order that wraps around at both ends. If a channel fails to tune, the one you were watching comes back, and the carousel closes after 2 minutes without a key press.
- A Live TV button in the top bar or sidebar when the server has Live TV. Show Live TV Button under Settings > Personalization > Navigation is on by default, and Live TV leaves the Libraries list while the button is showing.
- DVR recordings browsing and playback with a single button press.
- Series recordings scheduled and canceled right from the guide.
- Game library, details, and player built on EmulatorJS and backed by the Moonbase server plugin.
- Needs webOS 5 or Tizen 5 and newer, since the emulator runs on WebAssembly.
- Save states sync through the server, so you can pick a game back up on another device.
- Box art comes from the server's Games thumbnail endpoint.
- Moonfin provides no games or BIOS files. They come from a library you assemble on your own server. The full disclaimer is on the plugin's Retro Games page.
- Shows up under Settings > Integrations > Achievement Badges when the Jellyfin server runs the third-party Achievement Badges plugin. It isn't available on Emby, and Moonbase isn't needed for it.
- Your rank, score, and a showcase of badges, with badge pages that show your progress and suggest titles to watch.
- Daily and weekly quests with one reroll each, power-ups, a shop, stats, a leaderboard, and an activity feed.
- Avatars and rank titles to change how your profile looks.
- Five detail screen styles under Settings > Personalization > Details Screen > Details Screen Style, all of them offered in the setup wizard. Modern is the default, a cinematic layout with Read More collapsible descriptions and focusable tabs. Classic is the original layout with everything centered in one stack. Classic has a Details Background Blur setting, and the other four styles have Details Background Opacity.
- Spotlight puts the artwork first, with Play and a few actions up front and the rest under More Actions. A band of summary cards with counts, for things like seasons and episodes, cast, crew and studios, chapters and extras, More Like This, and collections, opens each one as a pop-up grid. Extras are sorted into Behind the Scenes, Deleted Scenes, Featurettes, Interviews, Scenes, and Shorts.
- Nouveau scrolls the whole screen as one page, with every section stacked as a row. It opens on the season you're up to, selecting an episode's artwork plays it, and a footer holds the studios, the Seerr details, and the file information.
- Minimalist is the artwork, one row of buttons, and the episodes with season tabs. It covers movies, series, seasons, episodes, and videos, and anything else opens in Spotlight.
- File Information in Modern's Details tab shows the file size, the date added, the audio and subtitle tracks, and a direct play check that explains in plain words why a file won't direct play, with hints.
- Action Buttons on Screen sets how many buttons stay on the screen before the rest move into More Actions. Choose Auto (Theme Default), 1 (Play only), any number from 2 to 10, or All (Horizontal Scroll).
- Metadata Row, under Details Screen > Media Details and Spoilers, shows, hides, and reorders Release Year, Parental Rating, Runtime & Seasons, Series Status, Upcoming Episodes, Genres, and Seerr Availability, and it syncs through Moonbase. Upcoming Episodes shows the next air date from Sonarr through Moonbase, with TMDB as the fallback.
- Anime markers from Moonbase (Filler, Mixed Canon/Filler, Recap, Manga Canon, Anime Canon, and Subbed, Dubbed, or Subbed/Dubbed) on episode, season, and movie cards, on detail screens, and on the player's Next Up card. There's no toggle in the app. The server admin turns them on in Moonbase.
- Recommendation Source picks where More Like This comes from, with up to 20 titles: Moonfin Recommends, Jellyfin Recommends, TMDb Similarity, or Hybrid.
- Collections play as a queue, starting from the film you're part way through or the first one you haven't watched, and they get a Shuffle button.
- Metadata organized into clear sections for genres, directors, writers, studios, and runtime, with taglines above the description and circular cast photos.
- Playlist management to add an item to a playlist or create a new one, reorder, and remove.
- Add to Collection, an artwork selector, and an admin Identify option.
- Chapters, collections, and media versions, so you can jump to a chapter, see which collections a title belongs to, and pick between versions.
- Extras and special features such as behind-the-scenes clips and trailers, when the server has them.
- Person pages with Movies, Series, Guest Appearances, and Music Videos, plus Crew Contributions and Appearances from Seerr. People who are only on Seerr open on the same screen.
- Ratings from Rotten Tomatoes and the community, plus your own rating as a like and dislike, out of five stars, or a score out of ten.
- Spoiler-free browsing with toggles to hide descriptions on the home screen and detail screens, and to use series artwork in place of episode stills.
Both are under Settings > Account & Security.
- Kids Mode strips the app back for a child and locks the way out with a new 4-digit PIN each time you turn it on. Settings shrinks to a single Exit Kids Mode entry. Libraries, Live TV, Seerr, and SyncPlay leave the navigation, and anything that would open Live TV, Recordings, or Seerr goes Home instead. Home keeps the My Media tiles, Recently Added, and one combined Continue Watching and Next Up row, and search leaves Seerr out. Detail screens always use Minimalist with only Play, Shuffle, and Favorite, and no description or technical details. It's off by default, stays on that TV instead of syncing, and your own layout comes back when you exit.
- Blocked Ratings apply everywhere: home, search, suggestions, favorites, libraries, genres, people, detail screens, and playback, including SyncPlay and the next episode. A blocked title shows a padlock and "This isn't available", and it won't play. Blocking a rating also blocks everything stronger than it, and ratings that can't be ranked are listed under Only blocks itself. Episodes without a rating use the series rating, and unrated titles always pass. Blocked ratings are kept per server and per user, and they don't sync.
- Wrong PINs lock you out for a while. After five wrong tries at the Kids Mode PIN or the sign-in PIN from PIN Code Protection, each new try waits longer, up to 15 minutes. The sign-in PIN is stored as a hash.
- Built with Enact/Sandstone, a React-based framework optimized for TV, with Spotlight navigation.
- A setup wizard on first run covering navigation position, media bar style, home rows style, and detail screen style, each with a live preview built from your own library artwork, and ending with a theme pick. It skips anything already decided, is fully skippable, and can be replayed from Settings.
- Themes: four built-in looks (Moonfin, Neon Pulse, Glass, and 8-bit Hero), a Theme Store for community themes, a custom theme menu, and per-device persistence. Glass is a dark frosted look, and its blur only applies while Glass is selected.
- Media bar styles with six options (Moonfin, MakD, Gallery, Banner, Bookshelf, and Aya), each with auto-advance and smooth transitions. Aya is a rounded hero frame that floats in the page and keeps the backdrop alive behind it.
- Button customization for the details row and player controls, synced through the server.
- Settings search to jump straight to the setting you're after.
- Accent color customization, UI scale for your viewing distance, backdrop blur settings, and watched and favorite badges right on the cards.
- Item details appear in the row, so you don't have to open every title to see what it is.
- Loading animations under Settings > Personalization > Loading Animation, with a live preview. Pick the image (Moonfin Logo, Spinner, Runner, Moon Phases, Moonfin Phases, Neonfin Phases, or None), its size, one of nine positions or Bouncing, its speed, and whether it shows text. The settings sync through Moonbase.
- Skeleton placeholders on Home, libraries, music, and the detail screen, so a screen shows its shape while it loads.
- Messages from your server admin through the Moonbase plugin. Turn on Show messages button under Settings > Personalization > Navigation (off by default) for a Messages list with an unread count, Mark all as read, and links shown as a QR code. Popup messages open by themselves, but never during playback, and messages you've received stay readable offline. It needs a Moonbase version that supports messages.
- A diagnostics log viewer that can send reports to the server, on Emby too when the Moonbase plugin has client log upload turned on.
- Automatic performance tuning detects how capable your TV is and dials the heaviest visual effects up or down, so older sets stay responsive while newer ones keep the full look.
- Performance mode lets you choose the tradeoff yourself: Auto, High Quality, Balanced, or Performance.
- Background blur is reduced or disabled on weaker hardware, where it would slow things down.
Using Moonfin
Going deeper
For developers