Organizing a Jellyfin Library: Naming and Metadata

Name movies and TV so Jellyfin matches them automatically, choose the right metadata providers and plugins, and repair wrong titles in an existing library.

On this page
  1. The name is the search query
  2. The naming convention Jellyfin expects
  3. The Jellyfin trick Plex doesn’t have: provider IDs in the name
  4. Turn on the right providers
  5. Task 1: Fix a movie or show that matched wrong
  6. Task 2: Refresh metadata without wiping your fixes
  7. Task 3: Tidy the display — sort names and library order
  8. What’s next

A Jellyfin server is only as good as the library behind it. Get the file naming right and Jellyfin matches almost everything on the first scan — correct posters, summaries, and episode order. Get it wrong and you’re scrolling through The.Movie.2021.2160p.WEB-DL.x265-GROUP tiles with no artwork and shows filed in the wrong order.

This post covers the naming convention Jellyfin expects, which metadata providers to turn on (and which ones are plugins, not built-ins), and how to repair an existing messy library. It’s the third post in the Jellyfin, Done Properly series, after installation and hardware transcoding.

What this stack is for
Everything in this guide automates managing and streaming media you have the rights to — your own rips, DRM-free purchases, home video, Linux ISOs, and public-domain or Creative Commons releases. Downloading copyrighted material you haven't paid for is illegal in most places, and it isn't what this guide teaches. What you point these tools at is on you.
First: make these values your own

Anything that looks specific to one machine is a placeholder to swap, not a literal to paste: the server address 10.0.0.20:8096, the library name Movies, an item’s <itemId>, and any provider API key you keep in your own secret store. If a value looks specific to one machine, it’s a placeholder to change — not a literal to copy.


The name is the search query

Jellyfin doesn’t read the contents of your files to identify them — it reads their names. The scanner takes the folder and file name, extracts a title and year (or a series, season, and episode), and hands that to its metadata providers as a lookup. A clean name is an unambiguous query; a release-group name is a bad one. This is the single idea the whole post rests on, so here it is as a picture:

THE SCANNER READS THE NAME, NOT THE FILEThe.Movie.2021.2160p.WEB-DL.x265-GRP.mkvresolution + codec + release group = noise?no reliable matchDunetitle(2021)year[tmdbid-438631]exact provider ID (optional)posterDune2021 · sci-fimatchedThe year removes ambiguity between remakes; the optionalprovider ID (a real TMDb or TheTVDB number in the name) skipsguessing entirely — Jellyfin fetches that exact entry.

The takeaway: a name Jellyfin can parse is a name Jellyfin can match.


The naming convention Jellyfin expects

Match this layout and matching becomes hands-off. It follows Jellyfin’s official conventions for naming movies and naming shows.

Movie and TV folder layout

Movies/
Dune (2021)/
  Dune (2021).mkv
The Matrix (1999)/
  The Matrix (1999).mkv

Shows/
Firefly (2002)/
  Season 01/
    Firefly S01E01.mkv
    Firefly S01E02.mkv
  Season 00/
    Firefly S00E01.mkv

The rules that matter:

  • One folder per movie, named Title (Year). The year disambiguates remakes — there are several films called “Dune” and “The Mummy”. The video file inside repeats the folder name.
  • TV uses series → Season NNSeries SxxEyy. Jellyfin’s docs are explicit here: name the season folder Season 01, and do not abbreviate it to S01 or SE01. The SxxEyy pattern in the file is what maps it to an episode.
  • Specials live in Season 00. Anything the provider lists as a special (episode number 0) belongs there, named SxxE00 style, so it doesn’t shove your real episode numbering out of order.
Let the arr stack name files for you

If you download with Radarr or Sonarr, let them rename on import — their default format already produces Title (Year) and Series SxxEyy, so files land correctly named for either Jellyfin or Plex without manual work. This is the same pipeline the Plex naming guide relies on; the file layout is server-agnostic.

The Jellyfin trick Plex doesn’t have: provider IDs in the name

Jellyfin lets you embed a metadata provider ID directly in the folder or file name, in square brackets, to force an exact match instead of a text search:

Embed a provider ID to skip guessing

Dune (2021) [tmdbid-438631]/
Dune (2021) [tmdbid-438631].mkv

tmdbid- points at The Movie Database, tvdbid- at TheTVDB, and imdbid- at IMDb (whose IDs look like [imdbid-tt1234567]). This is worth reaching for when a title is genuinely ambiguous or a provider keeps grabbing the wrong entry — the number is unambiguous where a title string isn’t. It’s optional; plain Title (Year) is enough for the vast majority of a library.


Turn on the right providers

Here is the part that trips up people coming from Plex, whose “agents” are all built in. In Jellyfin, only a few providers ship in the box; the rest are plugins you install from Dashboard → Plugins → Catalog.

Provider Built in? What it’s for
The Movie Database (TMDb) Yes Movies and TV — the sensible default for both
OMDb API Yes Ratings and extra fields — English-only metadata
Local NFO Yes Reads .nfo sidecar files you already have
TheTVDB Plugin Deep episode-level TV data; needs a free API key / subscriber PIN
fanart.tv Plugin Extra artwork — logos, banners, backgrounds
AniDB / AniList / Kitsu Plugin Anime metadata and correct episode ordering

Set the provider order per library in Dashboard → Libraries → (your library) → Manage Library → Metadata downloaders. The list is priority-ordered — the top provider that returns a result wins, and lower ones fill gaps. Jellyfin’s metadata documentation lists TMDb, the OMDb API, and local NFO as the built-in set, with everything else coming from the Plugin Catalog.

TheTVDB isn't free-and-automatic anymore

Unlike Plex’s bundled TVDB agent, Jellyfin’s TheTVDB plugin talks to TheTVDB’s v4 API, which requires a subscription or API key for full access. For most Western movies and shows, built-in TMDb is complete enough that you never need TheTVDB at all — add it only if you hit older or non-English series where TMDb’s episode data is thin.

Keep anime in its own library

Anime often uses absolute episode numbering (episode 1–50 straight through) that the standard season-based scanner mishandles, and different providers split the same run into seasons differently, so the same file can land on different episode numbers depending on which provider answers. Put anime in a separate library with an anime provider (AniDB/AniList/Kitsu) assigned, so a specialised ordering never leaks into your Western shows.


Task 1: Fix a movie or show that matched wrong

Even with good naming, a few items land on the wrong entry — a poster for the wrong film, or a foreign remake. Jellyfin’s Identify feature re-runs the lookup with your correction.

1Open Identify on the item1 min each

Click the item → the ⋯ (more) menu → Identify. You get a search box pre-filled with the current guess.

2Search by name or paste a provider ID1 min

Correct the title and year, or paste a known TMDb / TheTVDB ID to pin the exact entry, then pick the right result. Jellyfin refetches artwork and details for that match. Pasting the ID is the reliable move when a title keeps matching the wrong thing.

3Rename release-group folders in bulk firstvaries

If a folder is named after a release group (SPARKS, YIFY) with no clean title, Identify has nothing to anchor to. Rename it to Title (Year) first, then Identify — a rename to the convention fixes far more than fighting the provider.

Audit bulk-adopted libraries for renamed-wrong files

When you point Radarr at a messy existing library, it can match a folder named after something other than the film (a rating folder like “R”, or a collection name) to the wrong movie and rename the file to suit. After a bulk adoption, compare each file’s actual runtime against the movie’s expected runtime and flag big mismatches — a 90-minute file matched to a 200-minute epic is a renamed-wrong file. The runtime-mismatch audit playbook is a ready-to-run script for exactly this.


Task 2: Refresh metadata without wiping your fixes

Once you’ve corrected items, understand Jellyfin’s Refresh metadata dialog before you use it, because one option undoes manual work. Open it from an item or a whole library’s ⋯ → Refresh metadata:

  • Scan for new and updated files — the gentlest: only looks for files that changed on disk. Safe to run anytime.
  • Search for missing metadata — fills empty fields only; leaves everything you already have (including your fixes) intact.
  • Replace all metadata — refetches everything from the providers and overwrites current values. This is what you want after an Identify correction, but on a whole library it will also revert unlocked manual edits.
Lock the fields you've hand-corrected

When you fix a title, image, or sort name by hand, lock it (the padlock on that field in the item’s Edit Metadata screen, or lock the whole item) so a future “Replace all metadata” can’t overwrite it. Locking is the Jellyfin equivalent of Plex’s locked-field behaviour — it’s the difference between a one-time fix and one you redo after every refresh.


Task 3: Tidy the display — sort names and library order

A library full of “The …” titles clusters everything under T. Fix it with a sort name: edit the item, set Sort Name to the title minus the leading article (“The Matrix” → “Matrix” so it files under M), and lock it. Do the same for series that should sort by a different word than their display title.

For the shelf order itself, each library’s Display settings (in Manage Library) control the default sort — by name, release date, date added, or community rating — and whether Jellyfin groups movies into collections. These are per-library, so your Movies shelf can sort by release year while Shows sorts alphabetically.

Prevention beats cleanup

Manual fixes are for the one-time tidy-up. Going forward: let Radarr/Sonarr rename on import so files arrive correctly named, keep anime in its own library, and lock any field you’ve corrected. The whole download-to-server pipeline — Prowlarr, Radarr, Sonarr, and a torrent client shielded behind a VPN — is what feeds correctly-named files in so the scanner rarely guesses at all.


What’s next

A cleanly-named, correctly-matched library is the payoff of the Jellyfin series: installation, free hardware transcoding, and now tidy metadata. From here it’s just adding content — ideally through an automated pipeline that names everything correctly on the way in, so the library stays clean without you touching the Identify screen again.


Related posts:

Comments

Comments are powered by GitHub Discussions — sign in with a GitHub account to join the conversation.