Totality: For those obsessed with perfect libraries

I started my Plex server with almost no storage, so I heavily compressed everything just to make it fit. As my setup grew, the quality of my encodes improved, but the library I ended up with was a mix of old low‑bitrate files and newer high‑quality ones. I wanted a way to quickly spot which items still needed a proper upgrade.

That turned into Totality, a desktop app I originally built for myself (with help from Claude). It now supports Plex, Jellyfin, Emby, Kodi, and local folders. Totality uses the metadata your servers have already collected. Then uses FFprobe, TMDB, and MusicBrainz to fill in the blanks.

  • Multi‑server support
    Connects to Plex, Jellyfin, Emby, Kodi, and local folders, using existing server metadata whenever possible.

  • Video quality analysis
    Resolution, HDR format, bitrate, codec efficiency, audio format, and quality scoring.

  • Music quality analysis
    Four‑tier system from low‑bitrate lossy to hi‑res lossless.

  • Collection completeness

    • Movies: TMDB collection grouping, owned vs missing

    • TV: Missing episodes, season breakdowns

    • Music: MusicBrainz discographies, missing albums/tracks

  • Local folder scanning
    FFprobe analysis, filename parsing, embedded metadata, and TMDB lookups only when needed.

  • Wishlist
    Track movies, shows, and albums you want to add.

  • Live monitoring & task queue
    Detects library changes and manages long‑running scans.

  • Customizable UI
    Grid/list views, quality badges, themes, and real‑time search.

If you’ve built your library over years of changing hardware, storage, and encoding habits, Totality might help you make sense of it again.

Repo: https://github.com/bbidwell85/totality

Please stress test, break, criticize, and critique.

Happy to answer questions or hear what features would help others.

6 Likes

Fantastic! I’ll be trying this. Great idea and thanks for making it.

Edit: Your app is unbelievably good, really. This is exactly what I needed and so far I’ve had no issues.

I like that it is simple to install, looks good, and is very intuitive to use. You basically just came out with an essential companion to Plex with functionality that I’ve been looking after for years.

1 Like

2026 is all about trying new things! First was trying out a Tautulli replacement, now this.

I’ll check it out! Thanks for taking the time :slight_smile:

My first question for you though @chaser180 don’t the ARR’s do most of this already? What sets Totality apart from the ARR stack?

At first glance from the screenshots, etc it looks kinda like an all-in-one tool, which I’m all for.

Ah, sadly all of my Plex related servers are headless Ubuntu servers, so unless there’s a web interface or a way to remote manage from a Windows PC - I won’t be able to use this.

I’m glad it’s working well for you and is adding functionality you’ve wanted. I’ll be curious to see how you like it after using it for a few weeks. I’m pretty close to it, so I’m comfortable with the UI at this point and it’s easy for me to overlook flaws.

1 Like

I have never used the ARRs and hadn’t even considered the overlap of features when I made it. Based on my understanding I always saw the ARRs as acquiring media. Totality is more about analyzing what you already have and providing a quality audit dashboard. Admittedly, I am not well educated on all the features that come with the ARR stack, so this may be redundant for you. As far as being able to connect to a headless Ubuntu server, Totality should work perfectly with that. It connects to Plex over the network via the Plex API. Running it on a Windows PC and connecting remotely using your Plex account should discover the servers automatically. If that’s not working let me know and I’ll look into a fix.

True, there is a bit of a feature overlap, but the focus of the ARR’s is different for sure.

I’ll give it a spin and see how it works!

1 Like

Well, this is so cool, and very impressed here!

But you need labels on your GitHub Issues, so we can create like bug, Feature Request and siml.

Created two issues so far, and hope it’s okay?

1 Like

Thank you! I saw the issues you brought up I’m prioritizing pagination right now.

1 Like

I don’t know if you consider this out of scope, but considering all the data you are ingesting, how about implementing a simple-ish recommendation system to go with the current functionality?

For example, you could fetch “similar movies/shows" via the TMDB API and then simply summarize a list with items with the most hits that isn’t in the users library yet. Perfect use for the wishlist.

For music you could do the same, but using the last.fm open API instead. They have great recommendations and it is what Plex is using for similar artists as well.

Well I already have a few feature requests regarding the UI :slightly_smiling_face:

And btw, I stress tested it a bit scanning and analyzing my 200k tracks music library. It took all night and half the day too but it seems to have gotten through it all just fine. Very nice. The UI is now extremely slow though. Especially trying to browse the items. So it would be good if this can be more optimized.

Anyway, some feature requests:

  • Exclusions. It would be almost essential to be able to exclude items. Perhaps I’m happy about the quality of a file, or I simply can not get any better version. This is true for collections also, perhaps I don’t want to have some of the movies in a collection. Same with music.
  • Sorting on the Dashboard. Like “most recently added" perhaps to get the new problematic stuff to the top. Etc.
  • Being able to exclude Singles and EPs from artist completeness.
  • Being able to click on items on the Dashboard. It could just show the detail pane, same as via browsing. That would be very useful.

Thanks for the suggestions! Make some great points. I will look into how to incorporate these into the UI. I’m not surprised it took so long to process the music library, especially the completeness analysis. Musicbrainz public API is throttled quite a bit. When you say the UI is slow, is that just in the music library view or is it impacting performance regardless of where you are in the app?

1 Like

It is basically on the whole app. The movies section takes maybe over 30 seconds to be fully responsive. TV and music too. After fully loading, it is sluggish but at least workable.

So I just installed this and am having it process my libraries.
One suggestion I have from my initial look around is regarding audio bit rates, though I am not quite sure how difficult this would be to implement.

Basically, when applicable, I have multiple audio tracks. At minimum that would be a 5.1 track (DTS or Dolby) and a stereo track, usually created from the 5.1 track. If I have lossless audio, then I would have the lossless track, “core” surround track and stereo. Based on how your program currently handles the bitrate setup, my stereo track (which I normally create at 224 kbps, don’t ask why I use that as I made that decision a long time ago and do not remember my logic :rofl:), Show as below threshold quality. I shall include a screenshot below just for visual sake.

My suggestion would be to allow thresholds for different channel and codec configurations (I think codec is correct, but what I am referring to would be Dolby Stereo vs Dolby Digital Surround/Dolby Digital Plus Surround and Dolby TrueHD and the same for the DTS side for clarification). Essentially, in my case if there are 2 channels and it is Dolby (I do not create DTS stereo and only have that if it was an actual track for the media), the bitrate being 224 kbps is fine for me. However, I would probably prefer minimum of 448 kbps (640 kbps being preferred) for a lossy Dolby 5.1 track and then Dolby TrueHD, I am generally not looking at the bitrate for that.

Additionally, on top of that as I just remembered, there are also audio commentary tracks which which I would not care about the bitrate. The example I show below is a movie that has this.

And something else I just thought that would be nice to include is the track name of the audio and subtitles (notice you do not actually include details about subtitles it looks like). I know Plex stores that in the database. Not sure if that info is available via the API endpoint but if it is, would be nice to have.

Here is a screenshot as I mentioned:

Also a screenshot from Plex (web app) of the movie in the above screenshot showing the track titles.

Hopefully that is clear, but if not, let me know what needs clarification.

Edit: Something else to implement that I just noticed browsing my libraries is to use the sort order that Plex does, so using the sorting name from Plex. I would say that is the best option because if people know how to change the option to exclude articles in Plex, as it is an advanced change to make, it would be better to have the library sorted the same way as it is in Plex.

Also, if one has 2 TV libraries, how would they go about seeing them both in your program? I have a TV Shows and Anime library, both TV types, but I am only seeing “TV Shows” at the top. I cannot view my “Anime” library from within the program even though the side bar shows it under my sources (and it is selected to be visible) and I saw that it was successfully scanned.

Edit 2: Sorry, something else I noticed/thought of. For movie collections, when expanding “Collection Completeness”, that is showing I have 137 incomplete, however on the dashboard in the “Collections” section it is saying I have 92 incomplete. Not sure why there would be a discrepancy between those 2 numbers.

Something that would be nice. In the “Collection Completeness” section, it tells how many collections are missing. It would be nice if we could click on that to go to a view to see the collections that are missing. To @d2freak’s suggestion, being able to exclude items would be great for movies and series as well. For movies, being able to exclude a collection or even a movie from within a collection would be nice for instances where you either do not want that movie/collection or if you are just unable to acquire the movie. For instance, the “Code 8” collection includes the short which the first movie was created from. I have no intention of getting that, even if I can, so it would be nice to exclude that movie so that the collection does not appear incomplete. I would not want to exclude that collection just in case a 3rd movie actual comes out so that I am aware of it.

Sorry for all that info with my additional edits.

-Shark2k

@shark2k @d2freak GitHub - bbidwell85/Totality: Analyze quality, track collection completeness, find upgrades, manage media wishlists.

Firstly, thanks for all the suggestions. Shark, I didn’t see your edit until now, so I’ll review that and see what I can do.

I’ve made several optimizations that should help with the slow UI issue. My library is only 5k songs, so I’ll need you to test it against your 200k library to confirm whether the improvements hold up.

I’ve added a dismiss feature so you can hide suggested upgrades or movies in a collection. For example, if you own 2 out of 3 movies and dismiss the third, the collection will now show as 100% (2/2). If you remove a movie from a collection and only one remains, the collection disappears and the remaining movie is treated like any other standalone title. All of this can be undone in Settings > Library > Managed Exclusions. There’s also a new toggle in the settings to disable EPs and singles from music analysis.

On the dashboard, you can now click items in the upgrade list to open their details. I didn’t implement a similar interaction for collections because the current dropdown already shows all missing films, and there aren’t additional details to display. The dashboard also includes new sorting options.

The details view has been overhauled. Subtitles are now listed. Audio tracks now use the titles shown in Plex. The scoring system now evaluates only the highest‑quality audio track in the file. Other tracks are still visible but no longer affect the score.

I’ve also added an auto‑update function, which I’ll continue testing as I push new releases.

I experimented with a content‑recommendation feature as well. In its current state, it’s not ready for release. Recommending any film with a similar genre felt too broad, so I tried focusing on franchise‑based recommendations instead. For example, a Star Wars collection recommending Andor, The Mandalorian, etc., since they share the same IP. So far, the results have been inconsistent, and I want to refine it more before sending it out for testing.

There are other small tweaks that I’m probably forgetting. This update uses a new database structure, but the migration to the new database should be automatic. If there are any issues, it may require resetting the app in settings and starting fresh.

Thanks again for all the testing and suggestions.

2 Likes

Appreciate the update you pushed out. Just checked it out and I’m liking the tags you have for the audio tracks (particularly the commentary track tag). I have not used it yet, but the dismiss option is a nice upgrade as well.

This might have already been the case, but I just noticed it because I was checking out the track info. I appreciate the collection percentage going over 100% if you have more movies in a collection then the actual number. In this case it is for my Star Wars collection because I have 2 versions of each of the original trilogy movies (the GOUT/GOUT-ish versions and the special editions).
image

Bringing in the track titles that exist is also a nice upgrade (not sure if you were working on that or you got that from my suggestion, but either way :+1:).

I like the way you decided to handle the audio tracks, rather than my suggestion. Your solution is actually more straightforward and definitely easier to implement. It also makes sense if there is a high quality track to ignore the other ones based on what your initial goal with this project is.

And now that I am looking at my edit 2 after doing the upgrade, I am not sure if the wording changed or if I just misread what the dashboard was showing.

Here is a screenshot of what I was referring to:

Now, I am not sure if I just misunderstood what that completeness means (and also if it always said that and I just misread it) or if there actually is an issue. Hopefully the screenshot will make it clear what I am referring to (if you did not already understand) and then you can let me know if I am just an idiot or if there is actually something wrong :D.

Thanks,
-Shark2k

Good observation. That was intentional when I first created the dashboard. The goal was for the application to highlight collections that appear to be actively collected, so I filtered out collections that were less than 50% complete. I can see how the two different numbers could be confusing, so I’ll remove the filter to ensure the dashboard and the completeness panel match and all collections appear in the dashboard.

1 Like

Would be nice when logging into Plex if it used the default browser instead of it’s own. This why people can use their password managers or login if they already are.

Super helpful already, just what I needed. Thanks you for the app!

2 Likes

@chaser180
Would you prefer observations, issues, feature requests on GitHub or on this thread?

No preference, but I’m managing just fine on this thread if you want to keep it here.

Observations with multiple versions:

Identifies Clerks as low resolution which is correct.

However, I previously trumped the file.

Looks like it’s grabbing the first version of the file that created the movie in the DB

Similar with the harry potter series, where I try to keep a BD rip of FHD and UHD if/ when it becomes available. I’ll also keep an HDR10 version and add a DV version since they’ve been remaster and releasing movies with DV when they were previously released in HDR10

When you filter movies by FHD, it only shows two editions of the harry potter series that I only have FHD versions of… However, I do have FHD versions for the regular releases but also have UHD versions so the collection, when filtered by FHD doesn’t show all the movies that are available.

Which leads me into some feature requests/ ideas.

Having it understand and track multiple versions, because I know some FHD versions of films where I have a high quality UHD version of is not the quality I want and is something I want to work on replacing. Without it being aware of versions, it might not catch those cases.

Having the ability to identify versions where I have replaced the low quality version, but forgot to delete the lower quality version.

This would be extra, but nice to have a recommendation engine, where if I have multiple FHD or UHD versions or both… a way to have it look at tracks, subs, and identify those files so I might remux all the tracks, subs, best versions into a new file and delete the dups.
—-
I’ve had points in time where I swear I had a movie that I later found was missing. Now my memory isn’t great.. but I’ve always thought about making an app like this (so did you) One of the features I’d love is if it kept track of the database and versions of movies I have. Then a periodic scan and compare that would flag any files/ titles that existed but are now missing.

With those scans, run a checksum on the files and the ability to schedule checksum scans and report mismatched checksums to identify corruption.

This one would be a future Wishlist item… I just checked to see if blu-ray.com has an API and they don’t. Maybe some other site has one. AI seems to think you can export their database, but they have release versions. I’m always trying to keep track of when a movie gets a UHD release, or a remaster. If that data was incorporated, then you could get alerted when a UHD or new release exists and tag titles in the app.

I also just learned about ARR from this thread, which is something I might play with… but I also prefer an app like this because ARR isn’t exactly something I’m ready to sync a lot of time in and manually working on my library is working right now.

Welcome to scope creep lol :winking_face_with_tongue: