Open Source • Beta Expect bugs!

Your Jellyfin server,
re-imagined for every screen

JellyPlay is a high-fidelity, open-source media player for Jellyfin. Built with Kotlin and Jetpack Compose, it features dynamic color theming, offline downloads, and multi-engine playback — on phones, tablets, foldables, Android TV & Fire TV, with a Windows desktop preview from the same shared codebase.

3 Engines ExoPlayer, mpv, VLC
8 Themes Expressive + OLED
GPL-3.0 100% Free & Open
Features

Everything you need to stream

A feature-rich Jellyfin experience crafted for every Android device — phones, tablets, foldables, and TV.

movie

Multi-Engine Video

Three built-in players — ExoPlayer, libmpv, and LibVLC. HDR support, Chromecast, Picture-in-Picture, trickplay thumbnails, and gesture controls.

ExoPlayer Engine
play_arrow
hdr_onHDR10+ picture_in_picturePiP Mode gestureGestures speedAuto-Bitrate
music_note

Rich Audio Player

Enjoy synced lyrics, a 10-band equalizer, ambient mode with animated color blobs, waveform seeking, and mood-based smart playlists.

Midnight Stream JellyPlay Beats

Press play to start the soundtrack...

Synchronized lyrics flowing in real-time

Ambient color blobs shift with the rhythm

Equalizer bands auto-tune to your mood

tv

Android TV Ready

Fully adaptive interface with D-pad navigation and Leanback launcher integration. Looks and feels great on your big screen.

08:15 PM
movie Movies
tv TV Shows
music_note Music
settings Settings
Browse your 4K Ultra HD movie library
groups

SyncPlay Watch Parties

Watch together in perfect sync with real-time playback coordination, in-player group chat, and automatic speed/skip correction.

IN SYNC 0ms delay
A
Y
download_for_offline

Offline & Sync

Take media offline with multi-connection downloads and HTTP Range resumption. A durable outbox syncs watch progress on reconnect.

The Matrix.mp4 78%
content_paste_search

Seerr Integration

Connect to Jellyseerr or Overseerr to discover trending content and request new movies & shows via Radarr/Sonarr — directly from the app.

Dune: Part Two Approved
admin_panel_settings

Admin Dashboard

Monitor server health, manage active sessions, browse server logs, trigger scheduled tasks, and control your Jellyfin server from your phone.

CPU 24%
Streams 3 Active
live_tv

Live TV & DVR

Browse live channels, view the electronic program guide (EPG), and manage DVR recordings — all from a clean, intuitive interface.

LIVE HBO • Game of Thrones
Platforms

One app, every screen

A shared Kotlin Multiplatform core with native shells — stable on Android, preview on desktop.

phone_android
Stable

Android

Phones, tablets, and foldables with adaptive Material 3 Expressive layouts, edge-to-edge immersion, widgets, shortcuts, and Picture-in-Picture. Requires Android 9.0 (API 28) or later.

tv
Stable

Android TV & Fire TV

Dedicated TV flavor with a Leanback launcher, D-pad navigation, Watch Next rows, and a Daydream screensaver. Sideload-friendly APKs for Fire TV Stick, Cube, Shield, and Google TV.

computer
Preview

Windows Desktop

Compose Multiplatform shell with bundled libmpv — browsing, search, details, music with the full effect stack, in-player video, keyboard media keys, and frame capture. Packaged MSI ships with releases when available.

Theming

Make it yours

8 theme variants, 9 accent swatches, 3 contrast levels, and OLED mode — 390+ settings in all. Tap a style to preview it live on this page, or open the palette in the nav bar for accents.

You are previewing Standard — your choice is saved on this device only.

Get started

Up and running in minutes

All you need is a Jellyfin server — the app handles the rest.

1
dns

Run Jellyfin

Install the free Jellyfin server on your NAS, PC, or VPS and add your media libraries.

2
download

Install JellyPlay

Download the APK for your device — pick Universal if you are unsure of the architecture. TV users can sideload the TV build.

3
qr_code_2

Sign in

Enter your server address or approve via Quick Connect, then pick a video engine. LAN/WAN failover keeps you connected at home and away.

Why JellyPlay

A native client, not a web wrapper

How JellyPlay stacks up against the official Jellyfin clients (Android & Android TV).

CapabilityOfficial Jellyfin ClientsJellyPlay
Native UI Pure Kotlin & Jetpack Compose, no web wrapperscloseCordova (Mobile) / Leanback (TV)check100% Jetpack Compose (Unified)
Playback engines Multi-pipeline video core switchable per devicecloseExoPlayer onlycheck3 engines (Media3, libmpv, LibVLC)
Complex subtitles Styled ASS/SSA rendering without server transcodingcloseServer burn-in requiredcheckClient-side libmpv (Direct Play)
Adaptive form factors Single app for phone, tablet, foldable, and TVclose2 separate appscheckSingle unified adaptive app
Material You & Theming Dynamic palette extraction from poster artwork + OLEDcloseWeb / static themescheckMaterial 3 Expressive (8 themes + OLED)
Offline downloads WorkManager queue, HTTP Range, bundled trickplay & subswarningBasic file save (Mobile only)checkFull WorkManager engine
Watch-progress sync Durable Room outbox auto-syncs progress on reconnectcloseNo offline synccheckDurable outbox (Latest-wins)
Freshness resync SHA-256 signatures update assets without redownloadcloseNo (Full re-download)checkSelective SHA-256 diff
SyncPlay Synchronized watch parties with in-player chat & frame syncwarningWeb only (Limited on TV)checkNative multi-screen (With chat)
Rich music player & DSP LRCLIB synced lyrics, 10-band equalizer, night mode & visualizercloseBasic web audiocheckFull audio DSP suite
Seerr & Arr integration Jellyseerr / Overseerr requests, Radarr/Sonarr queues & calendarcloseNocheckJellyseerr + Sonarr/Radarr
Server admin Monitor CPU/RAM, manage sessions, tasks & logswarningWeb UI (Mobile only, no TV)checkNative UI (Mobile & TV)
Metadata editor Fix titles, posters, genres, tags, and external IDswarningWeb UI (Mobile only, no TV)checkNative UI (Mobile & TV)
Desktop Windows preview from one shared codebasecloseMobile & TV onlycheckWindows preview
Connection failover Seamless automatic switching between LAN and WAN/VPN URLscloseManual server addresscheckAutomatic LAN/WAN failover
Screenshots

See it in action

A beautifully crafted Material 3 interface with expressive animations and dynamic theming.

JellyPlay home screen with Continue Watching and personalized picks
01 / 09

Home

Continue Watching, Next Up, and personal picks on a dynamic-themed home.

Tech Stack

Built with modern tools

Leverages native Android Jetpack libraries and high-performance playback engines.

codelayerswidgetsdevicespaletteplay_circlehubstoragesettingsimagevideocamsmart_displayrouteschedulebolt
FAQ

Frequently Asked Questions

Everything from server setup and supported devices to engines, downloads, and privacy.

JellyPlay is a free, open-source Jellyfin client for Android phones, tablets, foldables, Android TV, and Fire TV — with a Windows desktop preview. It is written natively in Kotlin and Jetpack Compose with Material 3 Expressive, not a web wrapper like the official Android app.

Yes. JellyPlay is licensed under the GNU GPL v3.0 — free to download, use, modify, and redistribute. No ads, no in-app purchases, no telemetry, and no accounts required.

Unlike the official client which acts as an HTML/Web wrapper, JellyPlay runs 100% natively on your device. This enables features like fluid Material 3 dynamic color generation, complex local SSA/ASS subtitle rendering using libmpv without server-side transcoding, and real-time gapless audio equalization.

JellyPlay includes three media pipelines. Use ExoPlayer for battery efficiency, HDR10+, and standard formats. Use libmpv if you stream heavy anime files requiring styled ASS subtitles or 10-bit color profile rendering. Use VLC as a backup pipeline for raw ISO file formats or legacy LAN streams.

Yes. Create or join a watch group, stay in real-time sync with friends, and use the in-player group chat. Server-time synchronization plus speed and skip-to-sync correction keep everyone in frame — try the interactive demo in the features section above.

Yes. Connect Jellyseerr or Overseerr to browse trending, popular, and upcoming content, request movies and shows via Radarr/Sonarr, and track request status with admin approve/decline actions — all without leaving the app.

JellyPlay features an enterprise-grade offline system powered by a custom WorkManager engine and OkHttp. It bundles not just media files, but all sibling assets — external subtitles, trickplay preview tiles, intro/outro markers, and rich metadata — into an offline-ready library. While offline, a durable playback outbox captures playback progress, stop events, and watched status, automatically syncing back to your Jellyfin server on reconnect with intelligent conflict reconciliation. It also includes selective freshness resync to update changed artwork or metadata without re-downloading videos.

Yes! JellyPlay compiles separate architectures specifically optimized for big screens. The TV builds feature a dedicated Leanback UI tailored for standard D-pad TV remotes, letting you navigate your movie library grids on Fire OS, Android TV, or Chromecast with Google TV without touch emulators.

A Windows desktop preview (Compose Multiplatform + bundled libmpv) already runs browsing, search, details, music, and in-player video — treat it as a preview, not a release. It ships from the same shared Kotlin codebase as the Android app; check the Platforms section above and the release notes for current status.

No. JellyPlay is fully self-hosted: no analytics, no tracking, no phone-home, no cloud dependency. Your library, server connection, and viewing history stay between you and your Jellyfin server. Optional PIN/biometric lock and Kids Mode keep shared devices safe.

Upgrade your Jellyfin experience

JellyPlay is developed entirely by volunteers. Download the stable installer package or view the source files on GitHub.