If you run Jellyfin for a household, you already know the worst part of the evening: someone opens the app on the TV, the sign-in screen appears, and a password has to be entered with a remote. Arrow keys, an on-screen keyboard, a wrong character, start again. It is the single most common reason people ask you to "just log them in" on your server.
Jellyfin already ships its own Quick Connect: the app on the TV shows a 6-digit code, and a signed-in user approves it somewhere else. The awkward part is where — finding that screen deep in the Jellyfin settings on a phone is not obvious for most people. Quick Connect by MediaLab puts a short phone page with a QR code in front of that flow, plus a code-and-QR screen for TV browsers. This tutorial walks through installing it, configuring it and helping your users when something does not work.
What this solves
The plugin sits on top of Jellyfin's native Quick Connect and does not replace it. Codes are created and expired by Jellyfin itself; the plugin only approves them. That has a practical consequence I like as a self-hoster: if you ever remove the plugin, no account is locked out, because passwords stay exactly as Jellyfin manages them. There is deliberately no one-time code to type instead of a password (unlike the Emby version of the product) — every sign-in goes through Jellyfin's own Quick Connect.
What you get:
- A phone page (
/Connect/Pageon your Jellyfin address) with a QR code that approves the Quick Connect code of any Jellyfin app: Android TV, Fire TV, webOS, Tizen, Roku, iOS or Jellyfin Web. - A screen page for TV browsers (
/Connect/Screen) that shows the code and a QR code leading to the phone page; after approval it signs in to Jellyfin Web by itself. - An admin panel in the Jellyfin dashboard with the Quick Connect status, settings and recent approvals.
Prerequisites
- Jellyfin Server 12.2 or newer (Linux, Windows or Docker).
- Quick Connect turned on in Jellyfin (Dashboard → General). The plugin page shows its state and can turn it on for you.
- 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.
Step 1 — Install the plugin
From your private repository (recommended). Jellyfin then installs and updates the plugin by itself.
- In your MediaLab Works account open Licenses → Jellyfin plugin repository and click Create address. Copy it — it contains a token, so keep it private; you can regenerate or revoke it at any time.
- In Jellyfin open Dashboard → Plugins → Repositories, click +, give it a name (for example MediaLab Works), paste the address and save.
- In Dashboard → Plugins → Catalog find Quick Connect by MediaLab, click Install, then restart Jellyfin.
From the public catalog. https://medialab.works/jellyfin/manifest.json lists every released MediaLab Works plugin with its public build. Add it the same way if you want to install before you have a key; the plugin then asks for the license, or starts the trial, on its License page.
Manually, from a zip. Download jf-quickconnect_x.y.z.zip from Account → Licenses (the SHA-256 is shown next to the button), extract it into a new folder Quick Connect by MediaLab_x.y.z.0 inside the Jellyfin 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
- Open Dashboard → Plugins → Quick Connect by MediaLab and click License.
- 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.
- No key yet? On the same page enter your e-mail to 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. If you move servers, Move license (release this server) on the same page frees the key.
Step 3 — Check that Quick Connect is on
Open Quick Connect in the Jellyfin dashboard menu. The first panel shows whether Jellyfin's own Quick Connect is enabled. If it says it is off, click Turn on Quick Connect (or do it in Dashboard → General). While it is off, Jellyfin apps cannot ask for codes at all, so this is the first thing to check when a user reports a problem.
Step 4 — Decide your settings
In the same panel:
- The phone and screen pages are active — your master switch for the plugin's own pages.
- Approval from the phone with username + password too — useful for phones where Jellyfin is not signed in. Turn it off if you want approvals only from a phone that already has a Jellyfin session.
- Administrator accounts cannot approve through the phone page — off by default; worth turning on if you want admin accounts to stay out of the TV sign-in path.
Under How to use you will find the two addresses on your server: the phone page (/Connect/Page) and the screen page (/Connect/Screen). Share the phone page address with your users, or put its QR code next to the TV. The full walkthrough is in the user guide.
Step 5 — Show your users how it works
In a Jellyfin app on the TV (Android TV, Fire TV, webOS, Tizen, Roku and the others): choose Quick Connect on the sign-in screen. The app shows a 6-digit code.
In a TV browser: open the screen page. It shows the code and a QR code that leads to the phone page.
On the phone: scan the QR code or open the phone page, type the code if it is not filled in already, then approve with one tap as the Jellyfin user already signed in on the phone, or with a username and password. The TV signs in by itself.
No account yet? With Registration installed, the phone page shows a link to create one — handy when a new person joins the household and you do not want to walk them through a TV keyboard either.
Security notes worth knowing
- The codes are Jellyfin's own: Jellyfin creates them and they expire by themselves. The plugin only approves them.
- 10 wrong attempts (wrong codes or wrong passwords) from one address within 10 minutes block it for 10 minutes.
- Disabled accounts are refused, and optionally administrator accounts cannot approve through the phone page.
- The phone and screen pages are served with a strict content security policy and send no referrer.
- Every approval is logged with the user, the address and how it was approved; the panel lists recent approvals.
On data: QR codes are generated on the server, and the screen and phone pages load only the plugin's files. Pending codes live in memory; state/approvals.json keeps the last 500 approvals (time, user, device, app, IP, method). Passwords and tokens are never sent to third parties. After sign-in the TV or browser is sent to the address set by the admin (default: the server's web UI), and the session token is written to browser storage before the redirect, never put in the URL. Local and external addresses are HTTPS only.
Tips and troubleshooting
"Quick Connect is not available on this server." Turn on Quick Connect in Jellyfin (the panel has a button for it) and check that the plugin's license is active.
"The code is not valid or has expired." Check the digits on the TV; Jellyfin's codes expire after a while. Ask the app for a new one.
"Too many attempts." Wait 10 minutes. The block is per address, so a shared NAT can affect several users at once — if it happens often, check whether someone is repeatedly entering the wrong code rather than assuming the plugin is broken.
A lifetime license and automatic updates. The public catalog always offers the newest version. When the update window of a lifetime license has ended, versions released after it are not licensed: if Jellyfin's automatic plugin updates install one, the plugin stops with "version not licensed" until you use Roll back to x.y.z on its License page or buy an update pass. To avoid it, use your private repository, which offers only the versions your license allows, or remove the triggers of the scheduled task Update Plugins in Dashboard → Scheduled Tasks (this stops automatic updates for every plugin).
Something broke after an update. On the License page, Roll back to x.y.z installs the previous version; restart Jellyfin afterwards. This turns off Jellyfin's automatic update for the plugin until the next Install update, so the daily task does not bring the newer version back.
Client coverage. The screen and phone flow was emulated in Chrome with a Philips NETTV User-Agent (25/25) but not tested on physical TVs. Approving codes from native Quick Connect apps was simulated via API with the "Jellyfin Android TV" client; real Android TV, Swiftfin, Findroid, Kodi/JellyCon, Infuse and Streamyfin were not tested. If a particular client misbehaves, that is useful feedback — tell us.
Conclusion
Typing a password with a remote is friction you can remove without weakening anything: the codes stay Jellyfin's, the passwords stay Jellyfin's, and the plugin just makes the approval step obvious. Install it from your private repository, turn on Quick Connect in the dashboard, decide whether phone approvals may use username + password, and put the phone page address where your users can find it. More details on the product page, the changelog for version and source-code notes, and our knowledge base and FAQ for the rest of the stack.