- Dart 90.4%
- C 2.3%
- Kotlin 2.1%
- Swift 1.6%
- C++ 1.5%
- Other 2%
| .github | ||
| android | ||
| assets | ||
| ios | ||
| lib | ||
| linux | ||
| macos | ||
| native | ||
| packages | ||
| patches | ||
| scripts | ||
| test | ||
| tvos | ||
| web | ||
| windows | ||
| .editorconfig | ||
| .gitignore | ||
| .metadata | ||
| analysis_options.yaml | ||
| build-android.ps1 | ||
| build-android.sh | ||
| build-ios.private.env.example | ||
| build-ios.sh | ||
| build-linux.sh | ||
| build-macos.sh | ||
| build-web-plugin.sh | ||
| build-windows.ps1 | ||
| firebase.json | ||
| l10n.yaml | ||
| LICENSE | ||
| PRIVACY_POLICY.md | ||
| pubspec.lock | ||
| pubspec.yaml | ||
| README.md | ||
Moonfin
Premium Jellyfin & Emby client for mobile, tablet, desktop, TV, and web
Moonfin is a media client for Jellyfin and Emby servers, built with Flutter. One shared codebase powers phones and tablets, Windows, macOS, and Linux, Android TV, Fire TV, and Apple TV, and the browser. It's made for people who want a modern, customizable experience on every screen they own.
Where to get it
| Platform | Download |
|---|---|
| Android Mobile / TV | |
| Fire TV | |
| iOS | |
| Linux | |
| macOS | |
| tvOS | |
| Windows |
Supported Servers
| Server | Minimum Version | Status |
|---|---|---|
| Jellyfin | 10.8.0+ | Full support |
| Emby | 4.8.0.0+ | Full support |
Platform Support
| Platform | Minimum Version | Status |
|---|---|---|
| Android | 7.0 (API 24) | Full support |
| Android TV / Google TV | Android 7.0 (API 24) | Full support |
| Fire TV | Fire OS 6 | Full support |
| iOS | 16.0 | Full support |
| Apple TV (tvOS) | 17.0 | Full support |
| macOS | 14.0 (Sonoma) | Full support |
| Windows | 10 (x64 and ARM64) | Full support |
| Linux | GTK 3+, CMake 3.13+ | Full support (Wayland only) |
| Web | Modern browsers (installable PWA) | Full support |
Android TV, Fire TV, and Apple TV ship from this same codebase with a TV-tuned interface and D-pad navigation. Fire TV runs the same native backend as Android TV. Web runs as an installable PWA through the Moonbase server plugin.
Features
- One codebase, every screen. Phones, tablets, desktop, Android TV, Apple TV, and web, with navigation tuned for touch, pointer, and remote.
- Playback that just works. Wide codec support including AV1, HEVC, Dolby Vision, Dolby Atmos, HDR10+, and audio passthrough. Dolby Vision Profile 7 direct plays on Apple and Android TV, converted in real time instead of transcoded. See Playback and Codecs.
- Offline downloads in original or smaller server-transcoded quality, with automatic folder organization and offline subtitles. See Downloads.
- Ebooks and audiobooks. Read EPUB, MOBI, AZW/AZW3, PDF, and comic archives. Play M4B audiobooks with chapter navigation.
- Retro games browsed and played in-app from a server game library, with gamepad support and save states that sync between devices. See Retro Games.
- Multi-server unified library that merges several Jellyfin and Emby servers into one browsable, searchable UI.
- A setup wizard on first run that asks how you want the app to look, with live previews built from your own artwork.
- Featured media bar with six layouts, plus optional in-bar trailer previews.
- Themes and a Theme Store with a built-in editor, server-side sync, and an OLED mode for true blacks.
- An integrated admin panel for settings, users, libraries, logs, devices, and analytics, plus a messages window for notes from your server admin.
- Discovery with Seerr built into the details screen, with trending, popular, and upcoming rows and request status overlays.
- Live TV and DVR with a program guide and recording management.
- Trickplay scrubbing as a single thumbnail, a filmstrip, or full screen, on both Jellyfin and Emby.
- Cinema Mode and segment skipping for pre-rolls, intros, credits, and SponsorBlock.
- Casting and remote control over Google Cast, DLNA, and AirPlay, plus control of other Jellyfin devices on your network.
- SyncPlay for synchronized group watching.
- Personal ratings as a like, five stars, or a score out of ten, usable to sort or filter a library.
- Ratings from MDBList and TMDB, home row customization, parental controls with PIN, and in-app update checks.
The full list is on the Features wiki page.
Screenshots
More in the Screenshots gallery.
Installation
The store links above are the easy route. To install a file yourself, download it from the Releases page and pick the one for your device:
| Platform | File |
|---|---|
| Android (phones and tablets) | Moonfin_Android_v<version>.apk |
| Android TV / Google TV / Fire TV | Moonfin_AndroidTV_v<version>.apk |
| iOS | Moonfin_iOS_v<version>_unsigned.ipa (for self-signing) |
| Apple TV | Moonfin_tvOS_v<version>_unsigned.ipa (for self-signing) |
| Windows x64 | Moonfin_Windows_v<version>.exe |
| Windows ARM64 | Moonfin_WindowsARM64_v<version>.exe |
| macOS | Moonfin_macOS_v<version>.dmg |
| Linux x64 | Moonfin_Linux_v<version>.<ext> (AppImage, deb, rpm, snap, flatpak, tarball) |
| Linux ARM64 | Moonfin_LinuxARM64_v<version>.<ext> (same formats) |
| Web | Served as a PWA by the Moonbase server plugin, no download needed |
On Arch Linux, install from the AUR with yay -S moonfin (or paru, pamac build).
Per-platform notes are on Installation.
Building
Flutter stable 3.47+ and Dart 3.13+ are the only prerequisites.
git clone https://github.com/Moonfin-Client/Moonfin-Core.git
cd Moonfin-Core
flutter pub get
The per-platform build commands are on Building from Source.
Documentation
The deeper reference material lives in the Wiki:
| Page | What it covers |
|---|---|
| Features | The full feature list, section by section |
| Playback and Codecs | The backend per platform, the codec table, HDR, and audio passthrough |
| Downloads | Original and transcoded downloads, quality presets, and storage paths |
| Retro Games | Playing server game libraries in-app, cores, controllers, and save states |
| Installation | Which release file to pick, and the AUR package |
| User Guide | Keyboard shortcuts, subtitle downloads, and remote device control |
| Collecting Logs | Capturing a diagnostic report for a bug report |
| Custom mpv Configuration | Tuning playback with your own mpv.conf, allowed options, and SVP on Windows |
| Building from Source | Toolchain versions, quick start, and per-platform build commands |
| Development | Developer notes, contributing guidelines, and the pull request process |
Contributing
Contributions are welcome. Check the existing issues first, discuss major feature changes before implementing them, match the existing code style, run flutter analyze, and test on at least one target platform. Keep pull requests focused and include context, screenshots or logs where useful.
See Development for the full guidelines and the pull request process.
Help translate Moonfin here
Support and Community
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Discord: Discord
- Upstream Jellyfin: jellyfin.org
Credits
Moonfin is built on the work of:
- Jellyfin Project
- Jellyfin client contributors
- Moonfin contributors
- MakD - Original Jellyfin-Media-Bar concept that inspired our featured media bar
- MediaLyze The Admin analytics UI was inspired by this open-source project
License
Moonfin is free software. You can redistribute it and modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License or, at your option, any later version. See LICENSE for the version 2 text.
Moonfin is an independent project and is not affiliated with the Jellyfin or Emby projects.
← Back to main Moonfin project