A modern client for Plex and Jellyfin on desktop, mobile, and TV. Built with Flutter for native performance and a clean interface.
Download · Contributing · License
Grab the latest build from the GitHub releases:
| Platform | Download |
|---|---|
| Android (arm64) | Plezy-v3.0.0-arm64.apk — sideload on your device |
| iPad / iOS | No prebuilt download — build it yourself with a free Apple account (see Building for iOS / iPadOS). Free-account installs expire after 7 days |
Note on the Android APK: this build uses the upstream package id
com.edde746.plezyand is signed with the maintainer's debug key, which is different from the official Plezy's signing key. If you have the official Plezy installed (e.g. from Google Play), this APK will not install alongside it — Android rejects the same package id with a different signature ("App not installed"). Uninstall the official Plezy first, then sideload this build.
- Libraries, collections, and playlists
- Discover hub — Continue Watching, Next Up, trending, and recommendations
- Cross-server search
- Filtering, sorting, and alphabetical jump navigation
- Extras — trailers, deleted scenes, behind-the-scenes
- Wide codec support (HEVC, AV1, VP9, and more)
- HDR and Dolby Vision1
- Full ASS/SSA subtitles with customizable styling
- Online subtitle search & download2
- Audio & subtitle choices remembered per title
- Progress sync and resume
- Auto-play next episode with skip intro / skip credits
- Chapter navigation with thumbnail scrub previews
- Playback speed, audio sync offset, sleep timer
- Ambient lighting and GLSL shader presets3
- Picture-in-Picture4
- Refresh-rate matching5
- External player launch (VLC, MX Player, etc.)
- Live TV channel browsing with favorites
- DVR support with EPG guide, recording rules, and scheduled recordings2
- Multi-server Live TV support where available
- Download media for offline viewing
- Background queue with pause / resume
- Sync rules for automatic downloads
- Offline browsing with watch state sync-back on reconnect
- Synchronized playback with friends
- Real-time play / pause / seek sync
- Discord Rich Presence6
- Trakt, MyAnimeList, AniList, and Simkl tracking & rating
- Plezy Remote — control desktop and TV from mobile
- Watch Next row7
- Desktop, mobile, and TV — full D-pad, keyboard, and gamepad support
- Customizable keyboard shortcuts6
- Metadata and artwork editing2
- Settings import/export
- Localized in English plus 14 translations
- Flutter SDK 3.44.0+
- A Plex account or Jellyfin server with user credentials
git clone https://github.com/toffbrawny/plezy.git
cd plezy
flutter pub get
scripts/codegen.sh
flutter runAfter modifying model classes or other generated sources:
scripts/codegen.shAfter modifying translations:
dart run slangscripts/ci_checks.shTo install the same pre-commit checks locally:
scripts/setup_hooks.shThere is no prebuilt iOS download. A free Apple Developer account can only sign apps for your own registered devices, so a published .ipa wouldn't install for anyone else (and it expires after 7 days). Build it yourself — it takes a few minutes.
- Xcode 16.x with an iOS Simulator runtime installed
- Flutter SDK on
PATH - A JDK — set
JAVA_HOME(e.g. Amazon Corretto 21) - A free Apple ID added to Xcode → Settings → Accounts
- Your iPad/iPhone paired via USB and trusted (wireless works once paired)
The iOS target is configured with the maintainer's bundle ID and team. To build under your free account, edit ios/Runner.xcodeproj/project.pbxproj:
PRODUCT_BUNDLE_IDENTIFIER→ your own unique value (e.g.com.<your-handle>.plezy)DEVELOPMENT_TEAM→ your Apple Developer team ID (Xcode → Settings → Accounts)
export JAVA_HOME=/path/to/jdk
export PATH="$JAVA_HOME/bin:$PATH"
# 1. Build the archive. The default export step fails on a free account — that's expected;
# the archive is still produced at build/ios/archive/Runner.xcarchive
flutter build ipa --release
# 2. Export with development signing (free-account compatible)
cat > /tmp/export.plist <<'EOF'
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>method</key><string>debugging</string>
<key>teamID</key><string>YOUR_TEAM_ID</string>
<key>signingStyle</key><string>automatic</string>
<key>compileBitcode</key><false/>
</dict>
</plist>
EOF
xcodebuild -exportArchive \
-archivePath build/ios/archive/Runner.xcarchive \
-exportOptionsPlist /tmp/export.plist \
-exportPath build/ios/ipa \
-allowProvisioningUpdates
# 3. Install on your device (find the ID with: xcrun devicectl list devices)
xcrun devicectl device install app --device YOUR_IPAD_ID build/ios/ipa/*.ipaFree-account installs expire after 7 days. Rebuild and reinstall to refresh — app settings and data are preserved across reinstalls. The reinstall_ipad.sh template in this repo automates the build → export → install steps; set the IPAD_ID, TEAM_ID, and JAVA_HOME environment variables and run it.
macOS: no prebuilt/download is provided, and macOS builds currently require a newer Xcode/MPVKit toolchain than this setup targets — see CONTRIBUTING.md for the general build workflow.
See CONTRIBUTING.md for development workflow, formatting, tests, and translation guidelines.
Plezy is licensed under GPL-3.0.
- Built with Flutter
- Supports Plex Media Server and Jellyfin
- Playback powered by mpv, MPVKit, Android ExoPlayer, libass-android, and libmpv-android
This fork builds on Plezy with the following additions:
- Client-side Watchlist — bookmark movies/shows/seasons/episodes; stored locally on-device, works offline.
- Seer integration — connect to Jellyseerr/Overseerr to request media and browse trending, genres, studios, and networks.
- StreamyStats AI recommendations — vector-based movie & series recommendations in the Search tab.
- Genre / Studio / Network discovery with request enrichment.
- iOS / iPadOS support — app icon and free-Apple-account build fixes (team ID, bundle ID, Xcode 16.2 Swift compatibility).
Mirrored from git.toffbrawny.com/toffbrawny/plezy.
