This is a fork of Gelatinarm, a Jellyfin client for Xbox originally created by gitman-101111.
GelBox builds on Gelatinarm with UI modernization, improved music queue management, and bug fixes.
A native Jellyfin client for Xbox One and Xbox Series X|S consoles, built with UWP (Universal Windows Platform) and optimized for controller navigation and TV viewing.
Note: This app requires a Jellyfin media server to connect to. GelBox is the client application that provides an Xbox-optimized interface for your Jellyfin content.
- Full controller support - Navigate entirely with your Xbox controller
- TV-optimized UI - Large text and controls designed for 10-foot viewing
- Xbox accent colors - UI respects your system theme preferences
- Movies & TV Shows - Stream your entire video library
- Direct Play - Play compatible formats without transcoding
- Hardware acceleration - Optimized decoding for smooth playback
- HDR support - HDR10 (all Xbox models), HDR10+, HLG, and Dolby Vision Profile 8.1 (Xbox Series S/X only)
- Auto-Play Next Episode - Seamlessly continue to the next episode
- Episode Shuffle Mode - Random episode playback for your favorite shows
- Multiple Audio & Subtitle Tracks - Switch between languages and subtitles on the fly
- Adaptive streaming - HLS/DASH support with automatic bitrate adjustment
- Buffering optimization - Smart buffering for smooth playback
- Background playback - Keep music playing while using other apps
- Mini player - Persistent playback controls
- Queue management - Play next, add to queue, shuffle, repeat (no reordering/editing at the moment...)
- Instant Mix - Create automatic playlists from any song
- 6-band Equalizer - Adjustable parametric EQ (60 Hz, 180 Hz, 500 Hz, 1.4 kHz, 4.0 kHz, 11 kHz) with optional video support
- Library browsing - Browse Movies, TV Shows, Music, and more
- Smart sorting & Filters - By name, date added, release date, rating; filter by several tags/metadata
- Search - Find content quickly across all libraries
- Collections - Browse curated collections
- Favorites - Quick access to your favorite content
- Unwatched indicators - See what's new at a glance
- Progress tracking - Visual progress bars for partially watched content
- Skip intro/outro/credits - Auto-skip or manual buttons (configurable) *Requires intro detection plugin on server
- Quick Connect - Easy pairing with your Jellyfin server using a simple code
- Memory optimization - Smart caching and resource management
- SSL certificate support - Optional self-signed certificate acceptance
| Codec | GelBox Support | Xbox Hardware Support | Notes |
|---|---|---|---|
| H.264/AVC | ✅ Direct Play | ✅ Full | Hardware accelerated, all profiles |
| H.265/HEVC | ✅ Direct Play* | ✅ Full | *Xbox One S/X and Series S/X only |
| VP9 | ✅ Direct Play | ✅ Full | Hardware accelerated |
| VP8 | ✅ Direct Play | ✅ Supported | All Xbox models |
| AV1 | ✅ Direct Play* | ✅ Limited | *Xbox Series S/X only, up to 4K@60fps |
| MPEG-1 | ✅ Direct Play | ✅ Supported | All Xbox models |
| MPEG-2 | ✅ Direct Play | ✅ Supported | All Xbox models |
| MPEG-4 Part 2 | ✅ Direct Play | ✅ Supported | All Xbox models |
| VC-1 | ✅ Direct Play | ✅ Supported | All Xbox models |
| Motion JPEG | ✅ Direct Play | ✅ Supported | All Xbox models |
| H.263 | ✅ Direct Play | ✅ Supported | All Xbox models |
| DV | ✅ Direct Play | ✅ Supported | All Xbox models |
| Format | Xbox One S/X | Xbox Series S/X | Notes |
|---|---|---|---|
| HDR10 | ✅ Supported | ✅ Supported | Hardware accelerated on all models |
| HDR10+ | ✅ Supported* | ✅ Supported* | *Display must support HDR10+ |
| HLG | ✅ Supported* | ✅ Supported* | *Display must support HLG |
| Dolby Vision | ❌ Not Supported | ✅ Profile 8.1 Only | Profile 5 and 7 not supported, will transcode |
Audio Direct Stream: Enable in Settings → Playback to allow audio stream copy to compatible receivers
| Codec | GelBox Support | Xbox Hardware Support | Notes |
|---|---|---|---|
| AAC/HE-AAC | ✅ Direct Play | ✅ Full | All profiles supported |
| MP3 | ✅ Direct Play | ✅ Full | All bitrates supported |
| FLAC | ✅ Direct Play | ✅ Full | See artwork limitation below |
| ALAC | ✅ Direct Play | ✅ Full | Apple Lossless |
| PCM/LPCM | ✅ Direct Play | ✅ Full | Uncompressed audio |
| WMA/WMA Pro | ✅ Direct Play | ✅ Full | All variants |
| WMA Voice | ✅ Direct Play | ✅ Full | Voice codecs |
| G.711 (A-law/µ-law) | ✅ Direct Play | ✅ Full | Telephony PCM |
| GSM 6.10 | ✅ Direct Play | ✅ Full | Telephony codec |
| IMA ADPCM | ✅ Direct Play | ✅ Full | Adaptive differential PCM |
| MS ADPCM | ✅ Direct Play | ✅ Full | Microsoft ADPCM |
| AMR-NB | ✅ Direct Play | ✅ Full | Adaptive Multi-Rate (narrowband) |
| AC3 (DD) | ✅ Direct Play | ✅ Full | Dolby Digital |
| MPEG-1/2 Audio | ✅ Direct Play | ✅ Full | MP2 in MPEG containers |
GelBox runs in standard app mode on Xbox, which means it prioritizes background music playback over expanded video resources. This is a deliberate design choice with the following implications:
- ✅ Background music works perfectly - Continue listening while playing games or using other apps
- ✅ 4K video playback is supported - Within the standard memory constraints
- ✅ HDR content works - HDR10 on all models, Dolby Vision Profile 8.1 on Series S/X
⚠️ Some 4K content may transcode - If it exceeds memory limits, Jellyfin will automatically adjust
Xbox apps must choose between two modes:
- Standard mode (what GelBox uses): Allows background audio but limits memory to ~1GB
- Expanded mode: Provides 5GB+ memory for 4K video but disables all background functionality
We chose standard mode because background music is a core feature for most users. The app handles 4K content well within these constraints, and any content that needs more resources will be seamlessly transcoded by your Jellyfin server.
For more technical details about this Xbox limitation, see Microsoft's documentation on HEVC video on Xbox.
Direct play support for all common containers:
- MPEG-4: MP4, M4V, MOV, M4A
- Matroska: MKV, WebM
- Windows Media: WMV, ASF, WMA
- MPEG: TS, M2TS, MTS, MPG, MPEG, VOB
- Legacy: AVI, FLV
- Mobile: 3GP, 3G2
- Audio: MP3, AAC, FLAC, WAV, ALAC, WMA, AMR
- SRT - Most compatible, external and embedded
- ASS/SSA - Advanced styling preserved
- VTT - WebVTT format
- PGS - Blu-ray subtitles
- VOBSUB - Requires server-side burn-in
- Issue: FLAC files with embedded artwork larger than ~1500×1500 pixels may fail to play directly
- Cause: Xbox MediaPlayer limitation with large embedded images
- Solution: The app automatically falls back to transcoding when this occurs
- Workaround: Ensure your Jellyfin server has separate album artwork
- External subtitles - Only embedded subtitles are supported due to UWP MediaPlaybackItem architecture. External subtitle tracks must be added when creating the MediaPlaybackItem and cannot be dynamically changed during playback. Since we initialize playback in MediaPlayerPage, we cannot pre-load external subtitles. The app will automatically request the server to embed all subtitles in the stream.
| Button | Action |
|---|---|
| A | Select/Confirm |
| B | Back/Cancel |
| X | Jump to Music Player controls |
| D-Pad/Left Stick | Navigate UI |
| Right Trigger (Hold 0.5s) | Jump to MiniPlayer |
| LB/RB | Switch tabs/pages (where applicable) |
Controls Hidden
| Button | Action | Parameter |
|---|---|---|
| A | Play/Pause | - |
| B | Exit playback | - |
| Y | Toggle statistics overlay | - |
| D-Pad Up | Show playback controls | - |
| D-Pad Down | Show playback controls | - |
| D-Pad Left | Rewind | 10 seconds |
| D-Pad Right | Fast forward | 30 seconds |
| Left Trigger | Rewind | 10 minutes (600 seconds) |
| Right Trigger | Fast forward | 10 minutes (600 seconds) |
| Button | Action | Notes |
|---|---|---|
| D-Pad | Navigate control buttons | Focus moves between buttons |
| A | Activate focused button | - |
| B | Exit playback | Always works |
| Y | Toggle statistics | Works even with controls visible |
| Up | Hide controls | Returns to full-screen video |
| Left Trigger | Rewind 10 minutes | Works even with controls visible |
| Right Trigger | Fast forward 10 minutes | Works even with controls visible |
The following buttons have no assigned functions during playback:
- Left/Right Shoulder (LB/RB) - Not used during playback
- View Button - Not used
- Menu Button - Not used
- Left/Right Thumbstick Click - Not used
Music playback uses the persistent mini player at the bottom of the screen. Press X on the controller to instantly jump focus to the playback controls from any screen. Use the Xbox Guide button to access media controls while music plays in the background.
- Xbox One, Xbox One S, Xbox One X, Xbox Series S, or Xbox Series X
- Internet connection
- Jellyfin server (version 10.8.0 or later recommended)
- Xbox configured to Developer Mode for sideloading (or install from Microsoft Store when available)
Install directly from the Microsoft Store - search for "GelBox" or use the link at the top of this page.
- Enable Developer Mode on your Xbox
- Download the latest release package
- Use the Xbox Device Portal to install the package
- Launch GelBox from your Apps list
- Windows 10/11
- Visual Studio 2022 with UWP development workload
- Windows 11 SDK (10.0.22621.0)
- Clone the repository
- Open
GelBox.slnin Visual Studio 2022 - Set configuration to Release and platform to x64
- Build the solution
- Deploy to your Xbox in Developer Mode
Note: This method is ONLY needed if you cannot sign the package due to cross-architecture limitations (e.g., building x64 packages on ARM machines). If you can sign normally in Visual Studio, use the standard publishing workflow instead.
- Building x64 packages on ARM development machines
- Cross-architecture builds where signing fails
- When Visual Studio's built-in Store publishing fails due to signing errors
- Open
Package.appxmanifestin Visual Studio - Go to the Packaging tab
- Increment the Version number (e.g., 1.0.8.0 -> 1.0.9.0)
- Save the file
Run the following command from the project root:
cd C:\GelBox
& 'C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\MSBuild.exe' `
GelBox.csproj `
/p:Configuration=Release `
/p:Platform=x64 `
/p:UapAppxPackageBuildMode=StoreUpload `
/p:AppxBundle=Always `
/p:AppxPackageSigningEnabled=false `
/p:AppxPackageDir=".\AppPackages\"- The build creates an
.msixuploador.appxuploadfile in.\AppPackages\ - Upload this file to Microsoft Partner Center
- Microsoft will sign the package with their certificate during publication
Why Unsigned? The /p:AppxPackageSigningEnabled=false parameter bypasses the signing step that fails when building for a different architecture than your development machine. Microsoft Store handles the final signing, so unsigned packages are acceptable for Store submission.
Contributions are welcome! Please:
- Check existing issues before creating new ones
- Follow the existing code style and patterns
- Test on actual Xbox hardware when possible
- Update documentation for new features
- The Jellyfin team for the excellent media server
- Microsoft for the UWP platform and Xbox development tools
- Claude (Anthropic) for extensive development assistance
- All contributors and testers who helped improve the app
This project is licensed under the MIT License - see the LICENSE file for details.
GelBox is not affiliated with Jellyfin or Microsoft. Xbox is a trademark of Microsoft Corporation.