Library Browsing
Librariarr provides a rich browsing experience for movies, series, and music with extensive filtering, multiple view modes, and detailed metadata panels.
Global Search
Section titled “Global Search”The Search library field in the sidebar (or ⌘K / Ctrl+K from anywhere) opens a quick title search across your entire library. Results are grouped into Movies, Series, Artists, and Albums; selecting one jumps straight to its detail page. For filter-based queries and bulk actions, the palette links to the Query workspace.

Library Views
Section titled “Library Views”Movies
Section titled “Movies”Browse all movies with poster artwork, metadata, and quality information.
Series
Section titled “Series”Series are grouped by show identity, not just by title. Drill down into:
- Seasons — View seasons within a series with episode counts
- Episodes — Individual episodes with per-episode metadata and quality info
Each of these pages also carries a watch history section listing the individual plays for whatever you are looking at.
Two different shows that happen to share a title — The Office (UK) and The Office (US), or the 1978 and 2004 Battlestar Galactica — appear as separate rows, each with its own seasons, episodes, and watch history. Shows are matched by their series-level TVDB id (TMDB as a fallback, and the show title only when neither id is present), so the same show that exists on more than one server still shows up as a single merged row.
Music is organized by artist. Browse artists, albums, and individual tracks with audio format, quality, and duration details.
View Modes
Section titled “View Modes”Toggle between two view modes:
| Mode | Description |
|---|---|
| Table | Detailed rows with columns for title, year, resolution, codec, audio, file size, play count, and more. Columns are resizable via drag-to-resize. |
| Grid | Poster cards in a responsive grid. Three size options: Small, Medium, Large . |
Both views use smooth scrolling, so libraries of any size load and render without pagination. On desktop, the toolbar — search, sort, view controls, and filters — stays pinned to the top of the page while you scroll; on mobile it scrolls with the page to leave more room for content.

Alphabet Navigation
Section titled “Alphabet Navigation”A clickable alphabet bar (A–Z plus # for non-alphabetic titles) lets you jump directly to a letter. The bar highlights which letters have matching items.
Filters
Section titled “Filters”Over 30 filters are available. Filters can be combined — multiple active filters apply with AND logic.
Video Filters
Section titled “Video Filters”| Filter | Type | Example |
|---|---|---|
| Resolution | Multi-select | 4K, 1080P, 720P, 480P, SD |
| Video Codec | Multi-select (contains) | H.264, H.265, AV1 |
| Dynamic Range | Multi-select (exact) | SDR, HDR10, HDR10+, Dolby Vision, HLG |
| Video Bit Depth | Multi-select | 8-bit, 10-bit |
| Video Frame Rate | Multi-select (exact) | 23.976fps, 24fps, 30fps, 60fps |
| Aspect Ratio | Multi-select (exact) | 16:9, 4:3, 2.39:1 |
| Scan Type | Multi-select (exact) | progressive, interlaced |
| Video Profile | Multi-select (contains) | Baseline, Main, High |
Audio Filters
Section titled “Audio Filters”| Filter | Type | Example |
|---|---|---|
| Audio Codec | Multi-select (contains) | AAC, AC3, EAC3, FLAC |
| Audio Profile | Multi-select (exact) | Dolby Atmos, Dolby TrueHD, DTS-HD MA, DTS:X |
| Audio Channels | Multi-select | 2.0, 5.1, 7.1 |
| Audio Sampling Rate | Multi-select | 44100, 48000 |
File & Metadata Filters
Section titled “File & Metadata Filters”| Filter | Type | Example |
|---|---|---|
| Container | Multi-select (contains) | MP4, MKV, AVI |
| File Size | Range (GB) | 1 GB – 50 GB |
| Duration | Range (minutes) | 90 – 180 min |
| Year | Conditions with AND/OR logic | ≥ 2020 AND ≤ 2024 |
| Content Rating | Multi-select (exact) | G, PG, PG-13, R |
| Studio | Multi-select (contains) | |
| Genre | Multi-select (exact) | Must match all selected genres |
Activity Filters
Section titled “Activity Filters”| Filter | Type | Example |
|---|---|---|
| Search | Text (title/summary) | Free text search |
| Play Count | Range | 0 – 10 plays |
| Last Played | Date range | Before/after specific dates |
| Added Date | Date range | When item was added to library |
Multi-Select Behavior
Section titled “Multi-Select Behavior”When multiple values are selected within a single filter (e.g., Resolution: 4K and 1080P), they’re combined with OR logic — items matching either value are shown. When multiple different filters are active, they combine with AND logic.
Sorting
Section titled “Sorting”Sort by any of these fields in ascending or descending order:
- Title
- Year
- Rating
- File Size
- Play Count
- Last Played
- Date Added
Detail Panel
Section titled “Detail Panel”Click any item to open a slide-out detail panel showing:
- Poster and artwork
- Summary/description
- Full metadata: title, year, ratings (critic, audience, user), directors, writers, cast, studio, genres, countries
- Video details: codec, resolution, bit depth, profile, frame rate, color info, aspect ratio, scan type
- Audio details: codec, channels, profile, bit rate, sampling rate, languages (for each audio stream)
- Subtitle streams: language, format, forced/default flags
- File info: size, container, path, duration, optimized for streaming flag
- Stream list: All video, audio, and subtitle streams with detailed info
Actions from Detail Panel
Section titled “Actions from Detail Panel”Depending on configuration:
- Open in Plex/Jellyfin/Emby — Direct link to the item on your server
- View in Radarr/Sonarr — Link to the item in your *arr instance (requires integration)
Multi-Server Deduplication
Section titled “Multi-Server Deduplication”When browsing with multiple servers connected:
- Items are deduplicated by default — only the preferred copy is shown
- An indicator shows which servers have each item
- Use the server dropdown in the navigation to filter by a specific server
Watch History
Section titled “Watch History”View detailed, per-play watch history across all your media servers. Each row represents an individual play event, showing who watched what, when, and on which device.
Watch History on Detail Pages
Section titled “Watch History on Detail Pages”Every detail page shows its own watch history, so you can see who has been watching something without leaving it for the main history page:
| Page | Shows |
|---|---|
| Series | Every play of every episode in the series, newest first — with the user, the date and time, and which episode |
| Season | The same, narrowed to episodes in that season |
| Episode | Every play of that one episode — the episode it belongs to, the user, the date and time, and the device — shown as the Watch History card beside the file and playback details |
| Movie | Every play of that film — the user, the date and time, and the device — as its Watch History card |
| Track | Every play of that track, as its Listen History card |
| Detail side panel | The same per-play list for whichever item you opened from a library or lifecycle list, without leaving the list |
Every user on the server is included — not just the account Librariarr connects with. Plays are read from the server’s full, per-user history, so anyone in your household who watched an episode appears by name.
On the series and season pages every row names the episode that was played and links to it; on an episode’s own page the name is plain text since you are already there. On a movie or track page the rows omit the title entirely — every play is of the thing you are looking at — and lead with the user instead. Each row also names the device or platform where available. Every one of these lists shows five plays per page, so a heavily-watched item stays one card rather than a long scroll. The controls beneath it step a page at a time, jump to the first or last page, and take a page number typed straight into the box — the same controls the main history page uses.
When a show exists on more than one server, plays from every server are listed and each row is tagged with its server name. A play is a real event on the copy that was actually played, so nothing is hidden by deduplication. The series is matched the same way the library groups shows — by series identity (its TVDB/TMDB id, falling back to the title) — so a server that spells the title differently still contributes its plays, and two different shows that share a title never blend their history.
Movie and track pages — and the detail side panel opened from any library or lifecycle list — previously showed a per-user total read live from the server, with no dates and no playback detail; they now show the same per-play list everything else does. These sections read the same stored watch history as the main history page, so they fill in after a watch-history sync (see below). The same per-server limits apply: on Jellyfin and Emby only the most recent play of an item carries a timestamp, so repeat plays are listed as Unknown date and sorted to the bottom. A server whose watch-history source is Tracearr has no such limit, and its rows additionally show how far through the play got, which player was used, and whether it was transcoded.
Syncing Watch History
Section titled “Syncing Watch History”Watch history data is synced from your media servers in two ways:
- Automatic — During each scheduled library sync, detailed play events are fetched and stored
- On-demand — Click the Refresh button on the history page to sync immediately
- Real-time — With real-time sync on, a play finishing on Plex triggers a refresh that fetches only the plays since the last one stored and appends them, so a finished episode costs one small request rather than a re-import of the whole history. Jellyfin and Emby cannot filter their history by date, so their real-time refresh re-reads the full set like the scheduled sync does.
The Refresh button streams live progress rather than spinning, with a phase for each server it is syncing. How that phase reads depends on the server’s watch-history source: a native server shows a true percentage, because the server hands over its whole history in one response and the total is therefore known before the first row is written, while a Tracearr server shows a running count of plays imported instead — its history API is paginated by cursor and reports no total at any point, so Librariarr shows what it has actually imported rather than inventing a percentage. Leaving the page ends the sync early; a Tracearr import resumes from where it stopped on the next run.
Watch History Sources
Section titled “Watch History Sources”Every server reads its plays from one of two sources, chosen per server under Settings → Media Servers → Watch history source:
| Aspect | Native server history (default) | Tracearr |
|---|---|---|
| Where plays come from | The server’s own history API | A Tracearr instance monitoring that server |
| Per-play timestamps | Plex only — Jellyfin and Emby report the most recent play of an item and nothing before it | Every play, on all three server types |
| Sync behaviour | Full refresh on the scheduled sync and on Refresh — existing records are replaced with the server’s current data; the real-time refresh after a play on Plex appends only the new plays | Incremental — new and changed plays are appended, resuming from a watermark |
| Extra detail per play | Device and platform (Plex only) | Completion %, direct play vs. transcode, player, product, resolution, bitrate, source and stream codecs, subtitle decision |
| Partial plays | Not reported at all | Stored and shown, flagged as unwatched |
The native source needs no setup and is what a server uses until you map it. Using Tracearr instead needs a Tracearr instance and the per-server source switch; switching in either direction clears that server’s stored history once — the two sources produce incompatible rows — and the next sync repopulates it.
Data Sources by Server Type
Section titled “Data Sources by Server Type”What the native source can report differs by server type:
| Data | Plex | Jellyfin | Emby |
|---|---|---|---|
| Username | Yes | Yes | Yes |
| Watched date | Yes (per play) | First play only | First play only |
| Device name | Yes | No | No |
| Platform | Yes | No | No |
| Play count (per item) | Yes | Yes | Yes |
Play Count vs. Watch History
Section titled “Play Count vs. Watch History”The Play Count and Last Played fields shown on media items in the library views are built from two sources:
- The server’s native item metadata, read during library sync. This is scoped to the account Librariarr connects with — on Plex it is that account’s own views across every server it has access to, so a brand-new Plex server may show play counts from plays that happened elsewhere under the same account.
- The Watch History table, which covers plays by every user on the server. After each watch-history sync, these plays are rolled back into Play Count and Last Played.
The two are combined by taking the higher play count and the more recent date, so a play by anyone in your household is reflected — never overwritten by the connected account’s older view. This matters for lifecycle rules: criteria such as Last Played and Series Last Played read these fields, so a series someone else is actively watching will not look untouched.
- Watch History records — individual play events fetched from the server’s session history. Only includes plays that actually occurred on that specific server.
Partial plays do not count. A server’s native history has no notion of one, but Tracearr reports how far through each play got and marks it watched only once it crosses its completion threshold (85% by default). Plays short of that are stored and listed in the watch-history views, but they are excluded from Play Count and never advance Last Played — someone sampling four minutes of a film is not a viewing, and because both fields only ever move forward, letting one through would mark the item recently watched for good and quietly disarm every rule that reads it. An item with plays in its history but a Play Count of zero was started and never finished.
Columns
Section titled “Columns”The history table supports column visibility controls with columns grouped into categories:
| Category | Columns |
|---|---|
| Core | Title, Type, Year, Server |
| Playback | User, Watched At |
| Video | Resolution, HDR, Video Codec |
| Audio | Audio Codec |
| File | Duration, Size |
| Device | Device Name, Platform (Plex only) |
| Stream | Transcode, Completion, Player, Stream Resolution |
The Stream columns default to hidden. They are only populated for a server whose watch-history source is Tracearr, so on a native-history setup they would be an empty block of columns — turn them on from the column controls once a server is linked. Stream Resolution is what was actually delivered to the client and is a separate column from Resolution, which is the file’s own; the two disagree on any transcoded play.
Filters
Section titled “Filters”| Filter | Description |
|---|---|
| Search | Filter by media title |
| Server | Filter by media server |
| Type | Toggle Movie, Series, Music |
| Users | Multi-select by username |
| Platforms | Multi-select by platform (Plex only) |
Click any row to open the detail side panel with full metadata for that media item.