← Media Renamer Pro

How to name TV and movie files so Plex and Jellyfin actually match them

Most matching failures are not scraper bugs. They are naming problems, and there are only about six of them.

Buck Kettering · September 2026

Every media server matches on the filename first and asks questions later. Plex, Jellyfin and Emby all parse the name, guess a title, guess a season and episode, then go looking for something online that fits the guess. If the guess is wrong the lookup is wrong, and no amount of refreshing fixes it.

Here is what actually breaks, in the order it usually bites.

1. Give every show a folder and every season a folder

Flat folders full of episodes are where most libraries go wrong. The structure every server wants:

TV Shows/
  The Last of Us/
    Season 01/
      The Last of Us - S02E04.mkv
    Season 02/

Use Season 01 with the leading zero, not Season 1. Some scanners cope with both, some sort Season 10 before Season 2, and you gain nothing by finding out which yours does.

Do not put show folders directly at the root of a drive. If you do, your library path has to be the whole volume, which means every scan also walks $RECYCLE.BIN, System Volume Information and anything else that ever lands there. Keep one parent folder per library.

2. Use SxxExx, and put the year on the show folder

The season and episode numbers must be explicit and machine readable:

The Last of Us - S02E04 - Day One.mkv

Episode titles are optional and ignored by the matcher. The S02E04 is what matters.

Where a show name is ambiguous, disambiguate on the folder, not the file:

The Office (2005)/
Shogun (2024)/

Two shows share a name more often than you would think, and the year is how the scraper tells them apart. If it is still guessing wrong, most servers let you pin the folder to a specific database ID:

Shogun (2024) [tvdbid-390481]/

3. Anime: absolute ordering is the whole problem

This is the most common unsolvable-looking case, and it is worth understanding because it explains a whole class of failures.

Long-running anime is numbered two different ways. Aired order splits the show into seasons the way it was broadcast. Absolute order numbers every episode in one continuous run from episode 1 to episode 1200-something.

Most anime rips are numbered absolutely:

Pokemon - 145.mkv

That means nothing to a season-based matcher. Absolute episode 145 is not season 1 episode 45, and it is not season 4 episode 5 either. There is no arithmetic that recovers it without a mapping table.

It gets worse when you mix providers. TVDB carries Pokemon as one series with aired-order seasons. MyAnimeList and AniDB do not model it that way at all: they split it into separate series per arc, so Indigo League, Orange Islands and Johto are their own entries rather than seasons 1, 2 and 3 of one show. Point a MAL or AniDB agent at one folder with 26 season subfolders and there is nothing sensible it can hand back.

The tell: episode artwork looks right but the titles are wrong. That means your images and your episode data are coming from two providers that disagree about the show's structure.

Pick one ordering and commit to it. If you want aired-order seasons, rename the files to explicit SxxExx that matches your provider's aired order and turn the other agents off for that series. If your files are genuinely absolute-numbered, flatten the show and use absolute ordering instead. What you cannot do is half of both.

4. Movies: strip the scene tags

A release name is not a filename:

Dune.Part.Two.2024.2160p.UHD.BluRay.x265-GROUP.mkv
Dune Part Two (2024).mkv

Title and year is all a matcher needs. Everything else is noise that gives it a chance to guess wrong. Resolution and codec are read from the file itself, so putting them in the name buys you nothing.

Give each movie its own folder if you keep extras or subtitles alongside it.

5. Subtitles need the language code

Sidecar subtitles are not picked up just because the base name matches. They usually need the language:

Dune Part Two (2024).en.srt

And check that your library has local media assets enabled. If that is off, the server never looks for sidecar files at all, which is why "the names match exactly and it still does not work" is such a common complaint.

6. When the scraper is simply wrong, write an NFO

Some things have no online match. Home video, an old wrestling match, a family recording, a talk someone gave. Fighting the scraper on those is a losing game.

Two clean answers:

One thing worth knowing: media servers do not read metadata out of the video container the way a music player reads ID3 out of an MP3. You can set a title inside an MKV with MKVToolNix and Jellyfin will ignore it completely. Library metadata comes from the filename, the online providers, and NFO sidecars. That is the whole list.

If you do write NFOs, keep them next to the video rather than anywhere central, so they travel with the file when you reorganize.

A word on renaming safely

Whatever you use to do the renaming, two things will eventually bite you.

Collision chains

Renaming A to B while something is already called B, or two files resolving to the same destination, are the cases that eat files. Checked one at a time each one looks fine right up until something is overwritten. A safe renamer computes the preview against the final state, not file by file, and ideally moves everything to temporary names first and then to final names, so chained and swapped destinations stop being order-dependent.

Network shares behave differently

SMB shares and most NAS boxes are case-insensitive but case-preserving. Report.pdf to report.pdf either silently does nothing or throws an error depending on the box. Same-name detection that is perfectly correct on APFS quietly stops being correct over the network. If your library lives on a NAS, test your renaming tool there before you trust it with a thousand files.

I write media tooling. Media Renamer Pro is my Mac, iPad and iPhone app that does the renaming described here, with a full preview before anything moves and an undo for the whole batch.

None of the above requires it. The naming rules are the naming rules whatever you use.