Jellyfin TV app alternative: run MediaLab TV in the TV browser with your own branding

Older Samsung, LG, Philips and hotel TVs often have no Jellyfin app. Here is how to open MediaLab TV in the TV browser, sign in by phone and brand it as your own.

The problem: a Jellyfin server, and a TV with no Jellyfin app

You run Jellyfin at home or for a small group of users. The server is fine. The problem is the television: an older Samsung or LG set, a Philips model, or a hotel TV that has a browser but no Jellyfin app in its store. Casting is not always an option, and putting a second box behind every TV is not what you want either.

MediaLab TV takes a different route. It is a Jellyfin plugin that serves a web app, opened once in the TV's own browser. From then on the TV signs in by itself and shows a Netflix-style interface built for the remote, with its own player, Skip buttons and your name, logo, colors and address instead of ours. If you have been looking for a Jellyfin TV app alternative for sets that will never get one, this is the angle: the browser is the client.

One honest note before we start: MediaLab TV is not an app from the TV's app store. It has been tested in an emulated Philips TV browser; Samsung (Tizen), LG (webOS), Android TV / Google TV and real Philips sets are handled in the code (TV mode, remote keys, Magic Remote pointer) but not yet checked on the devices. What a TV can play depends on its browser, and the server transcodes what the browser cannot play.

Prerequisites

  • Jellyfin Server 12.2 or newer, official or medialab Server, on Linux, Windows or Docker.
  • A TV with a web browser. That is the whole client requirement.
  • Quick Connect turned on in Jellyfin (Dashboard → General), if you want phone sign-in and new accounts from the phone. Without it, the TV shows only the usual username and password form.
  • A MediaLab Works account with a license that covers the plugin: an active subscription, a lifetime license within its update window, the Jellyfin bundle, or the free 30-day trial.
  • Optional extras: Quick Connect by MediaLab (QR code to the approval page), Registration by MediaLab (sign-up from the phone) and Cashier by MediaLab (payment before the account activates).

Step 1 — Install the plugin from your private repository

The recommended path lets Jellyfin install and update the plugin by itself.

  1. In your MediaLab Works account open Licenses → Jellyfin plugin repository and click Create address. Copy it. The address is private because it contains a token, so do not share it; you can regenerate or revoke it at any time.
  2. In Jellyfin open Dashboard → Plugins → Repositories, click +, name it (for example MediaLab Works), paste the address and save.
  3. In Dashboard → Plugins → Catalog find MediaLab TV, click Install, then restart Jellyfin.

The repository lists only the plugins your licenses cover, and only the versions they allow. Its download links are signed and expire after a few hours, so Jellyfin always reads a fresh list.

If you prefer, the public catalog at https://medialab.works/jellyfin/manifest.json lists every released MediaLab Works plugin with its public build (medialab Server adds it by itself). You can also install manually: download jf-tvapp_x.y.z.zip from Account → Licenses, extract it into a new folder MediaLab TV_x.y.z.0 inside the plugins folder (/var/lib/jellyfin/plugins/ on a Linux package install, /config/plugins/ in the config volume on the official Docker image, %ProgramData%\Jellyfin\Server\plugins\ on Windows) and restart Jellyfin.

Step 2 — Activate the license

  1. Open Dashboard → Plugins → MediaLab TV and click License.
  2. Paste your license key and click Activate with key. The plugin contacts the license server, binds the key to this server and shows the license as Active.
  3. No key yet? On the same page enter your e-mail and start the 30-day free trial, or buy a license; the plugin activates itself when the payment is done.

The license is checked once a day and at every Jellyfin start. Without internet the plugin keeps working for 7 days after the last successful check. Without a valid license the TVs see only a neutral "Service unavailable" screen, in English and Romanian, without your name or logo — nothing is deleted, and everything resumes once the license is valid again. Move license (release this server) on the same page frees the key for another server.

Step 3 — Set your branding

Open MediaLab TV in the Jellyfin dashboard menu. Everything here is optional, but this is the part your users actually see.

  • App name: the title on the TV (default "MediaLab TV").
  • Short name: shown in the server's device list and as the name of the app saved on the TV.
  • Line under the name and footer line: for example your website and how to reach support. An empty footer shows "Unofficial app, compatible with Jellyfin servers" in the TV's language.
  • Colors: the accent (buttons, focus) and the background, as #rrggbb. The text color is chosen automatically so it stays readable.
  • Language: automatic (the TV browser's language), English or Romanian.
  • Logo: PNG or SVG, at most 512 KB; a square image looks best. SVG files with scripts are refused.

The preview shows the result before you click Save. The branding settings and the logo stay on your server.

Step 4 — Pick the address for the TVs

Two addresses work:

  • /MediaLabTv/ on your server address: always works.
  • Your own path, for example /web/tv/ (the default path is tv), served directly by the plugin itself. The address bar keeps /web/tv/, nothing is written into Jellyfin's files, and nothing has to be redone after Jellyfin updates. A base URL set in Jellyfin is respected. A path that already exists in Jellyfin's web interface is never covered, so choose another one if there is a conflict.

On medialab Server the app also gets an entry in the users' menu.

Step 5 — Open it once on each TV

On the TV, open the browser, type the short address once and save it as the start page or a favorite. That is the whole setup on the device side.

A TV mode is chosen by itself on Tizen, webOS, Android TV, Google TV and Philips TVs, or switched from the profile menu. It is sized for 720p, 1080p and 4K screens, with safe margins and a large focus. Arrows, OK, Back (with a question before leaving), the media, color, channel and number keys work, and so does the LG Magic Remote pointer. Full screen is available from a header button where the browser allows it and with the F key; on a TV, or when opened from Quick Connect, the first OK / click switches to full screen (since 1.2.1).

Step 6 — Decide how people sign in

The TV keeps the server's sign-in token, not the password. The token is checked at every start; if it was revoked, the TV shows the sign-in form. "Remember the password on TVs" is off by default — turn it on only for TVs that keep losing the token.

For most households, phone sign-in is the friendlier option:

  • Sign in with your phone: the TV shows a 6-digit code. A signed-in user approves it on the phone, in the Jellyfin app (Settings → Quick Connect). With Quick Connect by MediaLab installed, the TV also shows a QR code that opens the approval page.
  • New account (from the phone): with Registration by MediaLab, the TV shows a QR code to the sign-up page and a code to type in the form. When the account becomes active — after the admin's approval or, with Cashier by MediaLab, after the payment — the TV signs in by itself.

Remember that both rely on Jellyfin's Quick Connect being turned on in Dashboard → General.

Step 7 — What your users get

The interface is its own: a rotating banner and rows for Continue Watching, Next Up, recently added movies and series, each library, My List, collections, genres and live TV (on now, movies tonight, sports, kids, coming up). Title pages include backdrop, ratings, cast, seasons and episodes, similar titles and the local trailer. There are grids, search with an on-screen keyboard and profiles ("Who's watching?").

The player is its own too: audio tracks, subtitles, resume, next episode and the Skip intro / recap / credits buttons (Jellyfin's Media Segments). Playback is reported to Jellyfin, so it shows in Continue Watching everywhere. If someone prefers the stock client, the setting "After sign-in, open" sends them to Jellyfin Web instead; the MediaLab TV interface is the default.

Tips and troubleshooting

  • "Service unavailable" on the TV: the license is not valid, or the server has not reached medialab.works for more than 7 days. Check the plugin's License page.
  • "Sign in with your phone" is missing: Quick Connect is not enabled in Jellyfin. Turn it on in Dashboard → General.
  • Something broke after an update: on the plugin's License page use Roll back to x.y.z (with a valid license), then restart Jellyfin. If your private repository is added, Jellyfin's scheduled task Update Plugins (at start-up and daily) will install the newest version again — remove its triggers in Dashboard → Scheduled Tasks if you want to stay on the previous version for a while, and add them back later.
  • Privacy: the TV talks only to your Jellyfin server; the page blocks anything from elsewhere (no web fonts, no CDN, no outside trailers). To medialab.works only the license check is sent.
  • Compatibility expectations: treat the browser as the client. If a file will not play smoothly, let the server transcode it rather than blaming the TV.

Conclusion

For a TV that will never get a Jellyfin app, a browser-based client with its own remote-friendly interface is the pragmatic answer. MediaLab TV gives you that, plus phone sign-in through Quick Connect, Skip buttons backed by Media Segments, and branding that makes the server feel like yours. Install it from your private repository, set the name, logo and colors, open /web/tv/ once on each TV — and the set is done. The user guide covers every setting in detail, the changelog lists each release with its source code, and the knowledge base and FAQ are there when something does not behave; you can also contact us directly.

This post was written with AI assistance from our product documentation or the sources listed and checked automatically before publication.

Read next

Running Emby, Jellyfin or Nextcloud?

Our plugins and apps add Live TV, subtitles, sign-up and security to your own server, with a free trial.