# Wholphin: an Android TV client for Jellyfin with a Plex-style UI

> Wholphin is a from-scratch Android TV and Fire TV client for Jellyfin, with ExoPlayer or MPV playback and a Plex-inspired interface. It is a UI alternative, not a fork of the official client.

**damontecres/Wholphin** — An OSS Android TV client for Jellyfin

- Repository: https://github.com/damontecres/Wholphin
- Stars: 2,975 · Forks: 170
- Language: Kotlin
- License: GPL-2.0
- Published: 2026-09-24 · Updated: 2026-09-24 · Language: en
- Canonical page: https://hysenlabs.com/projects/damontecres-wholphin

## The gap Wholphin fills: a Plex-style UI on top of Jellyfin

Jellyfin's own Android TV client exists, and Wholphin is not a fork of it. The README is explicit on this point: the interface and controls were written completely from scratch, and the project exists for users who want "a different app UI that's inspired by Plex." That framing matters more than it first appears. Most Jellyfin client projects compete on codec support, transcoding behaviour or server compatibility. Wholphin competes on layout, navigation and playback controls, which is why the feature list leads with home screen customisation, a navigation drawer, and D-Pad seeking rather than with anything about the media pipeline.

The target user is someone migrating from Plex to Jellyfin who does not want to relearn a remote. The README describes Plex-inspired playback controls specifically: D-Pad left and right for seeking, quick access to chapters and the queue during playback, and an option to skip back a few seconds when resuming. Those are small decisions, but they are the ones that determine whether a household accepts a switch. If your users never touched Plex, the appeal is narrower, and the official client may be the more conventional choice.

## Two playback engines and what actually differs between them

The most consequential design choice is that Wholphin ships two media playback paths. The README lists ExoPlayer with optional extra audio, SSA/ASS and AV1 software decoding, and MPV "for direct playing anything with great SSA/ASS subtitle support." That is not a cosmetic toggle. ExoPlayer is the Android-native path; MPV is a separate engine that the project wires in for cases where the native path struggles, and the repository layout reflects the split with a top-level `wholphin-mpv-stub/` directory alongside `app/`.

Subtitle handling is the clearest dividing line. If your library leans on ASS or SSA subtitles, the README positions MPV as the better option, and it is the reason the project maintains a second engine at all. Everything else in the playback list is engine-agnostic: Live TV and DVR, music and music videos, cinema mode and pre-roll intros (which require a server plugin such as Intros), auto play of next episodes with pass out protection, automatic refresh rate and resolution switching on supported displays, and trickplay previews. The refresh rate switching option is worth noting because it depends on the display, not just the app.

The project also documents a separate subtitle workflow: searching and downloading subtitles requires a compatible server plugin such as OpenSubtitles. That is a server-side dependency, not something the client does on its own.

## Installing Wholphin on Android TV or Fire TV

The README states that Google Play and the Amazon AppStore are the fastest install routes, and both store links appear in the project's badges. If you want to avoid app stores, the sideloading path starts with enabling installation from unknown sources on the device, then getting the APK onto the TV. The project publishes a Downloader short code, `8668671`, and an equivalent URL.

In the Downloader app on the TV, enter the short code to fetch the latest APK:

```
8668671
```

Alternatively, download the APK from the releases page and move it to the device by SD card, USB stick, network share, a file manager such as FX File Explorer, or the Send files to TV app. The README warns that Android's preinstalled file manager probably will not work. For a computer-driven install, the README points to ADB as the expert route, linking to the Android developer documentation for the tool itself; it does not print an install command.

After the first install, the README says the app checks for updates on its own and installs them from settings. The first update attempt triggers an OS prompt to grant the additional permissions the app needs to install packages. If you installed through a store, the store handles updates instead.

Once the app launches, point it at your Jellyfin server. The README states the compatibility envelope plainly: Android 6+ or Fire TV OS 6+, and a Jellyfin server on 10.10.x or 10.11.x, tested primarily on 10.11. If your server is outside that range, stop before you install. The README does not document any fallback behaviour for unsupported server versions.

## Where Wholphin is the wrong tool

The version constraint is the first hard boundary. Jellyfin server 10.10.x or 10.11.x is the stated range, and there is no documented compatibility mode for older or newer servers. A user on a long-term-support server branch, or on a version the project has not tested, is outside the supported envelope and should not assume the app will degrade gracefully.

The platform constraint is the second. Wholphin is an Android TV and Fire TV client. There is no documented desktop, mobile or web build in the repository layout, which contains only `app/`, `wholphin-mpv-stub/` and Gradle build files. If you need Jellyfin on a laptop or a phone, this project is not the answer, regardless of how much you like its home screen.

Seerr integration carries its own caveat that is easy to miss. The README states it is only available when Wholphin is installed from GitHub or the Play store. That means the Amazon AppStore build and, by extension, users who prefer that route, do not get the discovery feature. The README also notes Seerr is generally tested against the latest stable version and that older versions may not work as expected, and that the Seerr server should be configured with integration to your Jellyfin server for full compatibility.

Finally, the project is a client, not a server. It does not replace Jellyfin, and every feature that depends on a server plugin (OpenSubtitles for subtitle downloads, Intros for cinema mode) fails without that plugin installed on the server side.

## Wholphin against the official Jellyfin Android TV client

The obvious alternative is the official Jellyfin Android TV client, and the difference is architectural rather than cosmetic. Wholphin's README states it is not a fork, and that its UI and controls were written from scratch. The official client shares the Jellyfin project's own codebase and release process. Wholphin does not, which cuts both ways: you get a different interface and a second playback engine, but you also depend on a separate maintainer's release cadence and on the Jellyfin Kotlin SDK for server communication, which the acknowledgements credit.

There is one point of contact between the two. The acknowledgements note that "some code for creating the device direct play profile is adapted from" the official client developers. So the projects are not entirely independent at the media-profile level, even though the user interface is.

The practical difference for a household is the remote. Wholphin's D-Pad seeking, chapter access during playback, resume skip-back option and configurable home rows are the reasons to pick it. The official client is the safer choice if you want a client maintained inside the Jellyfin organisation and do not care about the Plex-style layout. Wholphin also supports MPV as a second engine, which the README presents as the stronger option for SSA/ASS subtitles; if your library is mostly plain-text subtitles, that advantage largely disappears.

## Licence, maintenance and upgrade cost

Wholphin is licensed under GPL-2.0. For anyone running it on a TV, that is mostly invisible. For anyone considering a fork or a redistribution, GPL-2.0 carries obligations around source distribution that differ from permissive licences, and the repository includes a `LICENSE` file at the top level. This is a description of the licence, not legal advice; if you plan to redistribute a modified build, read the licence itself.

The repository is not archived, and the last push was on 2026-09-18, with a v1.0.8 release on 2026-09-14 and a develop build tagged v1.0.8-7-g365f8f8a on the same day as the last push. That is a project with current activity, and the presence of a `renovate.json` file suggests dependency updates are automated. Note that pre-release tags such as `develop` and `develop-strm-file` appear in the release list alongside stable versions; those are development builds, and a user who installs one is opting into unreleased code.

Upgrade cost is low by design. The README states the app checks for updates and installs them from settings, with a one-time permission prompt on the first update. Store installs are handled by the store. The real maintenance cost sits on the server side: the Jellyfin version range of 10.10.x or 10.11.x means a server upgrade outside that window puts you in untested territory, and the README does not document a rollback path for the app. If you sideload, you are also responsible for keeping the APK current if the in-app updater is blocked by device policy.

## Conclusion

Adopt Wholphin if you run Jellyfin 10.10.x or 10.11.x and want a Plex-style ten-foot UI on Android TV or Fire TV, especially if you need MPV for SSA/ASS subtitles. Skip it if your server is outside those versions, if you need a client for a platform other than Android TV or Fire TV, or if you want a client that shares code with the official Jellyfin app. Before committing, verify the Jellyfin server version you are running, check that your device is on Android 6+ or Fire TV OS 6+, and confirm whether Seerr integration matters to you, since the README states it is only available in the GitHub and Play store builds.

## FAQ

### Is Wholphin better than Jellyfin?

They are not the same kind of thing. Wholphin is an Android TV client for a Jellyfin server, so it needs Jellyfin to work at all; it is not a replacement for the server. The README describes it as a different app UI inspired by Plex, written from scratch rather than as a fork of the official client.

### How do I use Wholphin?

Install it on an Android TV or Fire TV device, then connect it to a Jellyfin server running 10.10.x or 10.11.x. The README says the app is available through Google Play and the Amazon AppStore, and that after the first install it checks for updates itself, which you install from settings.

### What is the Wholphin Jellyfin app?

It is an open-source Android TV client for Jellyfin, licensed GPL-2.0 and written in Kotlin. Its README states that the interface and controls were written completely from scratch and that it supports playback through either ExoPlayer or MPV.

### How do I install Wholphin?

The README says Google Play and the Amazon AppStore are the fastest routes. To sideload instead, enable installation from unknown sources, then use the Downloader app with short code 8668671, or download the APK from the releases page and transfer it by SD card, USB, network share or ADB.

### What is the Wholphin app?

It is an open-source Android TV client for Jellyfin, written in Kotlin and licensed GPL-2.0. The README says it supports playing media using either ExoPlayer or MPV and requires a Jellyfin server on 10.10.x or 10.11.x.

## Sources

- [damontecres/Wholphin on GitHub](https://github.com/damontecres/Wholphin)
- [Issues](https://github.com/damontecres/Wholphin/issues)
- [License: GPL-2.0](https://github.com/damontecres/Wholphin/blob/main/LICENSE)
- [README](https://github.com/damontecres/Wholphin/blob/main/README.md)
- [Releases](https://github.com/damontecres/Wholphin/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/damontecres-wholphin
