On this page
- The name is the search query
- The naming convention Jellyfin expects
- The Jellyfin trick Plex doesn’t have: provider IDs in the name
- Turn on the right providers
- Task 1: Fix a movie or show that matched wrong
- Task 2: Refresh metadata without wiping your fixes
- Task 3: Tidy the display — sort names and library order
- 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.
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 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.
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 NN→Series SxxEyy. Jellyfin’s docs are explicit here: name the season folderSeason 01, and do not abbreviate it toS01orSE01. TheSxxEyypattern 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, namedSxxE00style, so it doesn’t shove your real episode numbering out of order.
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:
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.
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.
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.
Click the item → the ⋯ (more) menu → Identify. You get a search box pre-filled with the current guess.
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.
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.
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.
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.
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:
- Install Jellyfin on a NAS or Proxmox LXC — where the library lives
- Free Hardware Transcoding in Jellyfin — smooth 4K playback for the library you just organized
- Organizing a Plex Library: Naming, Agents, and Metadata — the Plex equivalent, same file layout
- Plex vs Jellyfin: Which Media Server Should You Run? — if you’re still choosing between them
- What Is the Arr Stack? Sonarr, Radarr, and Prowlarr Explained — the pipeline that names files correctly on import
- Media Runtime-Mismatch Audit — the script that catches renamed-wrong files
- Tailscale Subnet Router — reach Jellyfin remotely and shield your download client’s IP
Comments
Comments are powered by GitHub Discussions — sign in with a GitHub account to join the conversation.