Skip to content
View in the app

A better way to browse. Learn more.

Unraid

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

[PLUGIN] Stream Viewer

Featured Replies

A real-time media stream monitor and statistics tracker. View active streams from your Plex, Jellyfin and Emby servers directly from the dashboard, and track watch history through a dedicated statistics page.

Features

Dashboard Widget:

Monitor active streams in real-time from the Unraid dashboard

Multi-server support for up to 10 Plex, Jellyfin and Emby servers simultaneously

Stream details including user, device, IP address, playback progress, quality and codec info

Custom SVG media type icons for movies, series, music and photos

Collapsible Synopsis section with thumbnail, description and dominant color tinting from cover art

Collapsible technical details row per stream (codec, audio channels, container, subtitles, HW acceleration, transcode reasons)

Transcode monitoring with visual indicators for Direct Play, Direct Stream and Transcode sessions

Transcode speed badge on active transcodes

Docker CPU and RAM micro-bars per media server container with color thresholds

Kill Session button to terminate active streams directly from the widget

Badge Color Theme picker with 12 color options for server name badges

Configurable auto-refresh with adjustable polling interval

Mobile responsive layout

Performance friendly with micro-cache, backoff on errors and lightweight polling

Dashboard Widget Screenshots:

widget1.png

widget2.png

widget3.png

widget4.png


Statistics Tool Page (Beta):

Dashboard tab with active streams overview, most watched titles, top users and recent history

Libraries tab with server overview, collapsible sections and recently added items

Users tab with per-user play counts, watch time, content breakdown and play type distribution

History tab with full watch history, filters, search, pagination and CSV export

Graphs tab with daily streams, watch time distribution and play type breakdown charts

Alerts tab (placeholder for future alert rules)

SQLite database with automatic schema migration system

Configurable data retention and IP anonymization

Statistics Tool Screenshots:

statistics-dashboard.png

statistics-libraries.png

statistics-users.png

statistics-history.png

statistics-graphs.png

statistics-alerts.png


Supported Servers:

Plex: Sessions, Kill Session, OAuth Setup

Jellyfin: Sessions, Kill Session

Emby: Sessions, Kill Session

Installation:

Via Community Applications

Search for Stream Viewer and click Install.


Configuration:

After installation, go to Settings > Stream Viewer. The settings page is organized into three sections.

Widget Settings:

Auto Refresh: Enable or disable automatic stream refresh

Refresh Interval: How often to poll for new stream data (5 to 300 seconds)

Max Streams: Limit the number of streams shown (5, 10, 20, 50 or Unlimited)

Show Device: Show or hide the client device name

Show IP: Show or hide the viewer IP address

Badge Color Theme: 12 color options for server name badges (Default, Blue, Lime, Green, Purple, Unraid, Red, Cyan, Pink, Gold, Teal, Mono)

Show Progress: Show or hide the playback progress bar

Show Quality: Show or hide the stream quality badge

Show Transcode: Show or hide the transcode/direct play badge

Show Technical Details: Show or hide the collapsible details row

Technical Details Default: Start expanded or collapsed

Show Media Summary: Show or hide the Synopsis section with thumbnail and description

Media Summary Default: Start expanded or collapsed

Show Docker Stats: Show or hide CPU/RAM usage per container

Allow Kill Session: Enable the ability to terminate active streams

Statistics Settings:

Statistics: Enable or disable the statistics tool page

Database Path: Directory where the SQLite database is stored (must be under /mnt/user/)

Data Retention: How many days of watch history to keep (7 to 365 days)

Anonymize IP: Mask the last octet of IP addresses before storing

Library Sections: Default state (expanded or collapsed) for library server sections

Connections Servers Setting:

TLS Verification: Enable or disable SSL certificate checking

Servers Cards:

Server Type: Plex, Jellyfin or Emby

Server Name: Custom display name for each server

Server URL: The URL of the media server

API Token: Server access token (Plex uses OAuth, Jellyfin/Emby use API key)

Enable/Disable: Toggle individual servers on or off

Plex: Sign in with Plex via OAuth, no password stored. Auto-discovery finds your servers after sign-in. Add discovered servers with one click.

Jellyfin: Enter server URL and API key. Test Connection to verify before adding.

Emby: Enter server URL and API key. Test Connection to verify before adding.

Settings Screenshots:

settings1.png

settings2.png

settings3.png

settings4.png


Security:

CSRF token (nonce) protection on all API requests with sliding expiration

Rate limiting (120 requests per minute per IP)

Origin validation blocks cross-origin requests

Input validation and sanitization on all parameters

Prepared statements for all SQLite queries (no string concatenation)

LIKE wildcard escaping with explicit ESCAPE clause

Docker container ID hex-only validation before API use

Security headers on all API responses (X-Frame-Options, X-Content-Type-Options, CSP, X-XSS-Protection, Referrer-Policy)

Image proxy with URL allowlist, only proxies thumbnails from configured servers

MIME type validation on proxied images with 5 MB size cap

Plex account token never stored, only per-server access tokens are saved

Database file permissions restricted to owner only (0600)

Cache directory created with restricted permissions (0700)

Cache-Control: no-cache, must-revalidate header

AJAX-only enforcement (X-Requested-With check)

HTTP method restriction (GET/POST only)

URL validation on outbound HTTP requests

MD5 package integrity verification on install

PHP 7 compatible (no PHP 8 only functions)

File and Directory Permissions:

Plugin directory: 755

PHP files: 644

Page files: 755

Static assets (JS, CSS, PNG): 644

Config directory: 755

Cache directory: 700

Nonce and database files: 600


Requirements:

Unraid 7.2.0 or later

GitHub Repository: https://github.com/Lazaros-Chalkidis/unraid-streamviewer

GitHub Profile: https://github.com/Lazaros-Chalkidis

To suggest features, report bugs or share feedback, post here or open an issue on GitHub.

Edited by Lazaros Chalkidis
Update Content and Photos for v.2026.03.30

  • Replies 102
  • Views 3.5k
  • Created
  • Last Reply

Top Posters In This Topic

Most Popular Posts

  • NachoServer
    NachoServer

    Dude, love the plugin, thanks for all the awesome work! Easy to setup, miles ahead of the previous deprecated plugin I was using, and looking forward to checking out the stats after I have some data

  • Lazaros Chalkidis
    Lazaros Chalkidis

    Hello @NachoServer, thanks for the kind words, really appreciate it! Yes, the server name badge color was changed intentionally in this update. It used to match the server type color (orange for Plex,

  • Hello @Lazaros Chalkidis , thank's for this plugin. Working fine and easy to configure. Just a detail, I'm french and I noticed that a character (quote) is not shown correctly:

Posted Images

Hello @Lazaros Chalkidis ,

thank's for this plugin. Working fine and easy to configure.

Just a detail, I'm french and I noticed that a character (quote) is not shown correctly:

image.png

  • Author

Hi @Nonoss ,

thanks for the kind words and for catching this!

It's a double encoding bug apostrophes in titles and descriptions from Plex get HTML encoded twice, which is why you see ' instead of '. I've already identified the root cause and a fix is on the way.

I'll push an update shortly.

Thanks again for reporting it!

Edited by Lazaros Chalkidis

Hello,

I can`t get plugin configured. i try everything always i get this message.

image.png

Thank you

3 hours ago, Liviu said:

Hello,

I can`t get plugin configured. i try everything always i get this message.

image.png

Thank you

Same for me also.

  • Author

Hello @Liviu and @Xceed, thanks for the reports.

I've identified the root cause.

The Jellyfin "Add Server" and "Test Connection" functions were referencing a form element that doesn't exist in the UI, so the server type was always coming back empty hence the "Please select a server type" error regardless of what you entered.

Emby wasn't affected because it handles the type differently.

I have the fix ready and will push an update today.

Stay tuned, sorry for the inconvenience!

  • Author

Stream Viewer v2026.03.17 is out!

This update fixes the Jellyfin issues several of you reported adding/testing a Jellyfin server no longer fails with "Please select a server type", and quality info (1080p etc.) now shows correctly in the widget.

Emby Test Connection freezing is also fixed.

Other highlights:

Parallel fetching: if you have multiple servers, sessions are now fetched simultaneously instead of one by one. Much faster.

SSL toggle: new option under Settings → Dashboard Widget → Connection to verify TLS certificates. Off by default (self-signed certs are fine), connections to plex.tv always verify.

Network hints: if your media server runs on a custom Docker network (ipvlan / macvlan) and the connection fails, the plugin now tells you exactly what to enable.

Reset/Clear Form: the Reset button now works on all tabs.

Full changelog in the first post. Update via Community Applications as usual.

Thanks to everyone who reported the Jellyfin issue much appreciated!

It seems like the add server button is non-functional. (Emby)

  • Author

Hi, @Vaichi,

thanks for reporting this, you're right, there's a bug in the Add Server function for Emby.

I've identified it and the fix will be ready in the next update.

Quick question since I don't have an Emby server to test with, does Test Connection work fine for you (shows Connected or an error), and it's only the Add Server button that does nothing?

That would help me confirm the exact behavior!

38 minutes ago, Lazaros Chalkidis said:

Hi, @Vaichi,

thanks for reporting this, you're right, there's a bug in the Add Server function for Emby.

I've identified it and the fix will be ready in the next update.

Quick question since I don't have an Emby server to test with, does Test Connection work fine for you (shows Connected or an error), and it's only the Add Server button that does nothing?

That would help me confirm the exact behavior!

Just tested and yes test does work, but not add.

  • Author

@ricostuart thanks for confirming!

That matches exactly what I found. Fix is ready, expecting to push an update later today.

  • Author

Thanx @darkdiablo for the report and the video showing the issue in Emby.

Other users have also pointed this out above.

Within the next few hours, I will upload a new update that fixes the problem.

9 hours ago, ricostuart said:

Just tested and yes test does work, but not add.

Just FYI - test only confirms conneection (looking for a 200 OK i guess?) but it dosent validate with API key :-)

  • Author

Stream Viewer v2026.03.18

Big update for Emby and Jellyfin users:

Emby Add Server: fixed, was silently failing. Thanks to the user who reported this!

Emby Kill Session: fixed, was returning HTTP errors due to incorrect request format

API key validation: Test Connection now actually validates your API key for both Jellyfin and Emby, not just server reachability

Play type detection: Jellyfin/Emby now correctly shows Direct Play, Direct Stream, and Transcode. Was stuck on Direct Stream due to a wrong API field name

New feature:

Technical Details row. Each stream now has a collapsible "Details" section showing:

Video/audio codecs and channels (e.g. H264, EAC3 5.1)

Audio spatial format (Dolby Atmos)

Container format (MKV, MP4)

Active subtitles

HW acceleration type (NVENC, VAAPI, or SW)

Transcode reasons and buffer %

Also, transcode speed (e.g. 8.2x) is now visible inside the TRANSCODE badge for Plex streams, with live updates.

All toggleable from Settings → Dashboard Widget → Display.

Full changelog in the first post. Update via Community Applications as usual.

streamviewer.png

  • Author

Coming soon: Stream Viewer Statistics page

I'm working on a new Tool page for Stream Viewer that will track and display viewing statistics across all your Plex, Jellyfin, and Emby servers.

Think Tautulli, but built natively into Unraid and supporting all three platforms.

Here's an early look at the design:

Screenshot_1.png

Planned features:

Total plays, watch hours, unique users, peak concurrent streams

Daily/weekly/monthly stream charts per server

Direct Play vs Direct Stream vs Transcode ratio

Most watched media and top users

Full watch history with search, filters, and pagination

Configurable data retention

CSV export

All data is stored locally on your server (SQLite in appdata), nothing leaves your network.

Expecting to ship this by end of March.

Stay tuned!

@Lazaros Chalkidis I know everyone loves dark themes these days (I do as well) but I can't read anything if i'm using the default 'White' theme (i'm seeing this more and more lately with plugins). Can we have it dynamically change with whatever the system theme is set too? Thanks in advance and great work on this

  • Author

Hello @Cino, thanks for pointing this out.

Right now the plugin uses its own dark styled framework, so it does not automatically inherit the Unraid system theme.

What I can do, however, is add proper light theme support in the CSS so it remains fully readable when the default White theme is used.

Making my plugins compatible with the White GUI as well is already in my immediate plans, so this is something I’ll be working on soon.

Thanks again for the feedback and for bringing it up.

@Lazaros Chalkidis Anytime :)

I did notice the same thing with your other plugin. Sounds good and glad its already on the roadmap (: Normally I enable dark themes on everything but with unRaid, the contrast isn't the greatest with the lighting I'm custom to.

Hello @Lazaros Chalkidis ,

I'm connecting to Plex and the options I have are the following:

relay (plex.tv)

remote (IP)

remote (URL)

local

I have it set up to local and it works great, but after a server restart (or perhaps after plex container restart, due to backups running) it is defaulting to the remote URL option and loses connection.

  • Author

Hi @Bren8, thanks for reporting this.

I found the bug. The auto rediscover logic that kicks in after a connection failure was sorting connections with remote URLs first instead of local.

So after a container restart, it would overwrite your local URL with the remote one.

Fix is ready and will be in the next update.

  • Author

v2026.03.19a is out!

For those of you using the White - Gray - Azure Unraid theme, the widget and settings page now fully adapt to your theme.

No more invisible text or washed out buttons.

Also in this update:

Smart rediscover: the plugin now retries 3 times before triggering URL rediscovery, and respects your URL type (local stays local, remote stays remote).

No more switching from local to remote after a server restart.

Jellyfin / Emby Docker auto discovery: if your local container changes IP, the plugin can now detect the new IP automatically via Docker Engine API.

Thanks to the users who reported this!

widget.png

settings.png

azure.png

Gray.png

Gray-settings.png

hi sir, cant see second of my stream, am I doing something wrong or?

OhwS19d.png

btw, thx for this plugin, its like dream come true, lovely, maybe more customization pls :) like

icon for plex? change colour of name of server? details opened without must click on it

Edited by Pepeb007xx

  • Author

Hello @Pepeb007xx,

thanks for the kind words!
Regarding the second stream not showing: I've tested with 2-3 simultaneous streams and it works fine with default settings.

A few things to check:
Make sure both streams are actually active at the same time in your Plex dashboard
Check Settings → Dashboard Widget → Display → "Max streams" is set to 10 (default)
If the second stream is on a different Plex server, make sure that server is also added and enabled in Settings

If it still doesn't work, can you open your Plex dashboard and confirm both streams show as active there at the same time?

A screenshot would help.

Regarding your feature requests:

unfortunately I can't use the Plex, Jellyfin, or Emby logos as they are registered trademarks.

That's why the plugin uses colored text badges instead.

Changing the server name color and other settings is something I can consider for a future update.

Edited by Lazaros Chalkidis

I mean seconds in time in dasboard of stream u can see 33:13/2:59:and cant see seconds like I need it push it more to left 😅

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.