# Plezy: a Flutter Plex, Jellyfin and Emby client for desktop, mobile and TV

> Plezy is a GPL-3.0 Flutter client that talks to Plex, Jellyfin and Emby from one interface, with mpv and ExoPlayer handling playback. It is aimed at people running their own media servers who want more control than the first-party apps give them.

**edde746/plezy** — Modern cross-platform Plex & Jellyfin client built with Flutter. Acknowledgments Built with Flutter Supports Plex Media Server and Jellyfin Playback powered by mpv, MPVKit, Android ExoPlayer, libass-android, and libmpv-android.

- Repository: https://github.com/edde746/plezy
- Website: https://plezy.app
- Stars: 3,535 · Forks: 326
- Language: Dart
- License: GPL-3.0
- Published: 2026-08-04 · Updated: 2026-08-18 · Language: en
- Canonical page: https://hysenlabs.com/projects/edde746-plezy

## What Plezy is for, and who it is aimed at

Plezy is a media client, not a server. The README describes it as "a modern client for Plex, Jellyfin, and Emby on desktop, mobile, and TV", built with Flutter. That sentence contains the whole pitch: one application that connects to three different server backends and presents them side by side. The README states that multiple servers can run at once, with Plex, Jellyfin and Emby "side by side", and that cross-server search spans every connected server.

The audience is people who already run a media server. If you have a Jellyfin box in the corner and a Plex account you have not migrated away from, Plezy does not ask you to pick. That is a different posture from the first-party clients, which each assume their own backend. It also means the interesting comparison is not Plezy against Plex in the abstract, but Plezy as a single front end over a heterogeneous setup.

The feature list is unusually wide for a client: libraries, collections and playlists, a Discover hub, Live TV and DVR, downloads with a background queue, music with gapless playback, watch-together sync, and integrations with Trakt, MyAnimeList, AniList, Simkl and Seerr. Breadth like that is a warning as much as a selling point. Every integration is another thing that can break when an upstream API changes, and the README marks many features with footnotes limiting them to one backend or one platform.

## How Plezy is put together: Flutter shell, two playback engines

The repository layout tells you most of the architecture. There is a lib/ directory for Dart code, and alongside it android/, ios/, macos/, linux/, windows/ and tvos/ platform folders, which is the standard Flutter arrangement. There is also a server/ directory, a shared/ directory, a packages/ directory and a relay_protocol.json at the top level. The presence of a server component and a relay protocol file is consistent with the README's Plezy Remote feature, which lets a phone control a desktop or TV instance. That is a real design decision: remote control is not implemented as a peer-to-peer protocol inside the client alone, it has a server-side counterpart in the repository.

Playback is not one engine. The repository description credits mpv, MPVKit, Android ExoPlayer, libass-android and libmpv-android. In practice that means the mpv backend is the desktop path, ExoPlayer is the Android default, and libass provides the ASS/SSA subtitle rendering the README advertises as "full ASS/SSA subtitles with customizable styling". The README attaches a footnote to the mpv-only features, noting that ambient lighting and GLSL shader presets require the mpv player backend and are unavailable on iOS and tvOS, while Android defaults to ExoPlayer. So the same app presents different playback capabilities depending on where you installed it, and the shader and ambient-lighting features are effectively desktop-only.

A mpv-build.lock.json file sits at the top level, which suggests the mpv build is pinned rather than floating. For anyone building from source that is a good sign: a pinned player build reduces the chance of a codec regression arriving silently.

## Installing Plezy on macOS, Windows, Linux and Android

The README's Download section is the canonical source. For macOS there is a DMG covering x64 and arm64. For Linux there are .deb, .rpm, .pkg.tar.zst and portable tar.gz archives for both x64 and arm64. Android and iOS builds are distributed through the Google Play and Apple App Store listings linked from the README, with an Amazon Appstore listing as well. Windows is distributed through the Microsoft Store installer link.

Package managers are the cleaner route where they exist. On macOS, the README gives a Homebrew tap and cask:

```bash
brew tap edde746/plezy https://github.com/edde746/plezy
brew install --cask plezy
```

The first line registers the repository as a tap; the second installs the cask. On Arch Linux, plezy is in the extra repository, so the install is a single pacman command:

```bash
sudo pacman -S plezy
```

On Windows, the README documents WinGet:

```bash
winget install edde746.Plezy
```

Nix users have a community package, which the README credits to two contributors and links to search.nixos.org. Note the wording: community package, not official. If you are on NixOS, that distinction matters when you file a bug.

A first real use is the same on every platform: launch the app, add a server, sign in, and browse. For Jellyfin and Emby the README mentions local-server discovery and multiple URLs per server, plus Quick Connect sign-in, which is the Jellyfin flow where the server displays a code and you approve it from another device. For Plex, profiles and Plex Home switching with PIN are supported. What you should see after a correct setup is a Discover hub with Continue Watching and Next Up rows, and your libraries listed for browsing. If the hub is empty, the most likely cause is that no playback progress exists yet on that server, not a broken connection.

## Where Plezy falls short, and when it is the wrong client

The README is honest about platform gaps through its footnotes, and those gaps are the first thing to check against your hardware. Picture-in-Picture is listed for Android, iOS and macOS, with an explicit note that it is not on Android TV or Apple TV. Refresh-rate matching is limited to Windows, Android and tvOS. Audio passthrough is limited to desktop, Android TV and Apple TV. HDR support needs an in-app toggle on Windows, macOS, iOS, tvOS and Linux, and on Linux the README states it requires a colour-managed Wayland compositor. If you are on an X11 desktop, that line tells you HDR is not going to work.

The larger gap is Roku. The README's download table covers macOS, Linux, iOS, Android, Amazon devices, Windows and tvOS. Roku is absent. If Roku is your primary television device, Plezy is simply not the tool, regardless of how good the rest of the feature list looks.

Backend-specific features are the second trap. Favorites and unwatched library filters are marked Jellyfin and Emby only. Online subtitle search and download is marked Plex only. DVR recording rules and a rememberable recording target library are marked Plex only. The Explore tab pulls from Plex Discover, Trakt, MyAnimeList, AniList, Simkl and Seerr, and the README notes that connecting those services requires going to Settings > Services. A Jellyfin-only user should read the footnotes carefully before assuming parity with a Plex setup, because several headline features carry a Plex-only marker.

Finally, there is the question of what Plezy is not. It is a client. It does not index, transcode or store media. If your problem is that your server cannot handle transcoding, Plezy's transcode presets from 240p/320 kbps up to 1080p/20 Mbps are a workaround, not a fix.

## Plezy compared with the first-party Plex and Jellyfin apps

The obvious alternative is the official client for whichever server you run. The difference is architectural rather than cosmetic. The first-party Plex app is built around Plex and Plex alone, and its feature set tracks Plex's roadmap. Plezy treats Plex, Jellyfin and Emby as interchangeable backends behind one interface, and its playback layer is not Plex's player: it is mpv on desktop, ExoPlayer on Android, with libass for subtitle rendering.

That choice shows up in specific features. Full ASS/SSA subtitle styling is something mpv and libass do well, and the README lists it as a first-class feature. Ambient lighting and GLSL shader presets are mpv capabilities exposed through the client, though the README limits them to the mpv backend and excludes iOS and tvOS. Refresh-rate matching and video zoom from 50 to 200 percent with pinch and hotkeys are the kind of controls that come from a player-first design rather than a catalogue-first one.

The trade-off runs the other way too. A first-party client will generally be the first to support new server-side features, and it is the reference implementation for how a given backend is supposed to behave. Plezy has to track three backends, and the footnotes in its own README show the cost: features land per-backend and per-platform rather than everywhere at once. If you want the sanctioned experience for one server, the official app is the safer choice. If you want one client across several servers and a player with mpv's subtitle and shader behaviour, Plezy is the more interesting option.

## Maintenance, releases and what the GPL-3.0 licence means here

The repository is not archived, and its last push was on 2026-08-24. Releases in the same window are dense: 2.16.0 on 2026-08-19, 2.17.0 on 2026-08-24, and 2.17.1 on 2026-08-24. Two releases on the same day suggests a quick patch after a feature release rather than a long stabilisation period. For a client that tracks three server APIs plus external services like Trakt and Simkl, that cadence is the cost of staying current: expect to update reasonably often, and expect the occasional patch release.

Upgrading is mostly a matter of your install channel. Homebrew, WinGet, pacman and the store listings all handle updates themselves. The portable tar.gz builds do not, and neither does a manually downloaded .deb or .rpm unless you have configured a repository. If you install from a static archive, you own the upgrade process.

The licence is GPL-3.0. In plain terms, that is a copyleft licence: if you distribute a modified build, the source for your modifications has to be available under the same terms. Running the app for yourself, or installing it from a package manager, is not distribution in the sense that triggers those obligations. What you should not assume is that you can take Plezy's code, modify it, and ship a closed-source derivative. The repository also contains Casks/ and scripts/ directories, and the README points to a CONTRIBUTING.md, so the project expects outside contributions. This is a description of the licence text, not legal advice; if you plan to redistribute a build commercially, read the licence yourself or ask a lawyer.

## Conclusion

Adopt Plezy if you run Plex, Jellyfin or Emby yourself and want one client across desktop, mobile and TV, with mpv playback, ASS subtitles and per-title audio memory. Skip it if your viewing happens on Roku, since the README lists no Roku build, or if you need the first-party Plex apps' exact behaviour. Before committing, check the release assets for your platform and architecture, confirm whether your server needs a transcode preset rather than direct play, and read the GPL-3.0 licence against how you intend to distribute or modify the build.

## FAQ

### Is Plezy a good app?

The repository does not publish user ratings or reviews, so quality cannot be judged from what it documents. What can be checked is scope: the README documents playback via mpv, MPVKit, ExoPlayer and libass, plus Live TV, downloads, music and watch-together sync across desktop, mobile and TV.

### Is Plex TV completely free?

The README does not describe Plex's pricing or what Plex TV includes, and it says nothing about Plezy's own cost either. Plezy is a client rather than a service, so any question about Plex TV billing has to be answered by Plex, not by this repository.

### Does Plezy work on Roku?

No Roku build appears in the README. The download table lists macOS, Linux x64 and arm64, iOS, Android, Amazon devices, Windows and tvOS, and the repository has no roku/ directory at the top level.

### What is Plex and how does it work?

The README treats Plex as one of the server backends Plezy connects to, alongside Jellyfin and Emby, and does not explain Plex itself. It does note that several features, including online subtitle search and DVR recording rules, are marked Plex only.

### How do you install Plezy?

The README gives package manager commands for macOS via a Homebrew tap and cask, Arch Linux via pacman, and Windows via WinGet, plus direct DMG, .deb, .rpm, .pkg.tar.zst and tar.gz downloads and store listings for mobile.

### Is Plezy free?

The repository is licensed GPL-3.0, and the README points to the LICENSE file rather than describing a paid tier. No price, subscription or in-app purchase is stated anywhere in the README.

## Sources

- [Official documentation](https://plezy.app)
- [Official README](https://github.com/edde746/plezy#readme)
- [Project repository](https://github.com/edde746/plezy)
- [Release notes](https://github.com/edde746/plezy/releases)

---

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