All posts

Jellyfin custom intros: what works differently from Plex

by Priyansh·

How a Jellyfin custom intro works without a Plex-style pre-roll field: Local Intros vs Projectionist, the safest file format and which apps play it.

Jellyfin custom intros: what works differently from Plex

I get maybe one Jellyfin order for every fifty Plex ones, and the Jellyfin people always send more detailed requirements. Should it run before films only, or before episodes too? Apple TV app, or just the browser? Can one show get its own opening while the rest of the library shares another, and does the kids' profile see what's on the main one? Plex customers rarely ask any of that. Plex doesn't give them the choice.

Getting a Jellyfin custom intro running means picking a plugin, because Jellyfin has no built-in pre-roll field and nothing in the dashboard will do it for you. Local Intros, from the official catalogue, covers a local video before your films. Projectionist, a third-party plugin, adds folder rules and episode support. Whichever you pick, an MP4 with H.264 video and AAC audio is the safest file to feed it.

The box Plex has and Jellyfin doesn't

In Plex the whole feature lives in one text field. You go to Settings, then Server, then Extras, click Show Advanced and paste file paths into the pre-roll box. Plex's own Extras article has a rule that's easy to get backwards: commas between the paths play every file in order, semicolons make Plex pick one at random, and there can't be a space either side of the separator, which you tend to discover only after every intro plays back to back before a two-hour film.

Jellyfin doesn't have that field at all.

There's no setting in the dashboard where you paste a path and walk away. What it has is a plugin system, and the Jellyfin plugin documentation lists Local Intros among the official plugins with a one-line description: use pre-roll intro videos from local storage. Anything fancier comes from third-party repositories you add yourself. For a server with one intro that's kind of a step backwards. But the plugin route lets you do things Plex can't, like giving a single series its own opening, and Jellyfin owners tend to want exactly that sort of control.

The plugin that kept moving

Half the older guides point at the wrong plugin, so a little history helps. The first widely used option was dkanada's Intros plugin, which downloaded intros from prerolls.video rather than playing your own file. Its repository was archived in November 2025, so it's read-only now and won't get fixes. A fork by BrianCArnold that reads local files instead was moved into the official Jellyfin organisation in early 2024, and I'm fairly sure that's the code behind today's Local Intros entry (the naming has shifted around enough that I wouldn't bet the house on it). Forum users have reported it playing before movies but not TV shows, or only before the first episode of a show. There's no official note saying that's changed.

Start with a file every client can decode

No plugin can rescue a file the TV can't read. Jellyfin's codec tables call MP4 one of the few containers that will not remux, and H.264 8-bit video with AAC audio shows as supported on nearly every client listed. That's the combination I'd pick for Jellyfin, and frankly it's what I'd tell anyone exporting their own. HEVC and HDR look lovely on the one screen that handles them, then push the server into a transcode everywhere else, which is a silly amount of work for a few seconds of logo.

Then the style. The Priyansh Animations intro library is sorted by studio and franchise, so you can match the opening to what the server actually holds.

On a server that's mostly prestige TV, a custom HBO style intro sits better than a film studio fanfare. It sets up an evening of drama. A big orchestral logo, by comparison, promises a blockbuster you aren't about to watch and then hands you episode four of a slow political series.

Route one: Local Intros

Use it when one intro, or one folder of them, before your films is all you want.

  1. Sign in with an administrator account and open Dashboard, then Plugins, then Catalog.
  2. Find Local Intros in the official catalogue and click Install.
  3. Restart the server when Jellyfin prompts you.
  4. Go back to Dashboard, open Plugins, select the installed Local Intros entry and point it at the folder holding your intro. It has to be a path the server can read. A folder on your laptop is no use if Jellyfin runs on a NAS, and in Docker it's the path inside the container.
  5. Save, then play a film in Jellyfin Web.

Simple. There isn't a rules engine to learn, which is nice on a server with one shared identity and a bit annoying the moment the kids' library and the horror library shouldn't open the same way.

Route two: Projectionist

Projectionist is a third-party plugin built around preroll folders, and it's the one I'd point most Jellyfin owners at now. It's happy with movies and TV episodes and adds schedules, cooldowns, maturity gating and per-library or per-user rules, which covers basically every question in those detailed Jellyfin requirements.

  1. Open Dashboard, then Plugins, then Repositories. Add a repository and paste this manifest URL:
    https://raw.githubusercontent.com/ZL154/jellyfin-projectionist/main/manifest.json
  2. Open Catalog, look under General and install Projectionist.
  3. Restart Jellyfin.
  4. Open the Projectionist settings, enter the preroll folder path and save.
  5. Click Set up library and wait until the status reads Library OK.
  6. Choose which content types trigger a preroll (movies, episodes or both) and save again.
  7. Optional: drop a file named theme-preroll.mp4 into a series folder. That show gets its own opening while the rest of the library carries on with the global pick.

Step 7 is my favourite part of the whole plugin. One show, its own intro, no extra rules to write.

Check your server version before anything else, though, because the project lists Jellyfin 10.11.0 to 10.11.10 as supported and 10.10 as untested, and a perfectly configured plugin on the wrong server version just sits there doing nothing.

If you'd like trailers before the film as well, the Cinema Mode plugin plays local trailers (two by default) with one pre-roll slot before the trailer block and another right before the feature. Its pre-rolls have to live in a library set to the Movies content type, which is an odd requirement the first time you read it.

The app on the sofa decides more than the server

This is the part Plex users underestimate, and I suspect it's a big reason Jellyfin requirements arrive so detailed. Projectionist's own notes split support by client: movie prerolls work in Jellyfin Web, Jellyfin Media Player, Android TV, Roku and the iOS app, but episode prerolls only fire in Jellyfin Web and Jellyfin Media Player, because they depend on a JavaScript hook that only the web shell runs. So a server can be set up perfectly and the episode intro still never shows on the living-room TV. Infuse goes further than that. Its staff said in November 2025 that pre-roll trailers won't be available in Infuse at all (it does read intro and credit markers from the server, which is a different feature that just happens to share the word "intro"). People on the Jellyfin forum have also reported intros failing on Apple TV through Swiftfin while the browser was fine.

That report is from August 2024 and may be stale by now.

Jellyfin hands you the choice of plugin, folder and which clients count. I prefer that on a serious home server, though it does mean reading compatibility notes instead of assuming the TV app behaves like the browser.

Checking it without guessing

My Jellyfin preroll setup walkthrough goes through testing in far more detail, one file and one client at a time. The short version:

  1. Play a film in Jellyfin Web first. If it fails there, look at the plugin, the folder path and read permissions before you touch the client.
  2. If you turned on episodes, play one in Jellyfin Web or Jellyfin Media Player, not the TV app.
  3. Play the same film on the TV app you actually use. If the browser shows the intro and the TV doesn't, open playback info and check whether it's direct playing or transcoding.
  4. If Projectionist vanished after a restart, go back to Repositories, check the manifest URL and compare your server version against the plugin's supported list.

Can I change the Jellyfin theme while I'm at it?

Yes, with custom CSS. Server-wide styles go in Dashboard, then Branding, in the Custom CSS field, and each user can add their own under Settings, then Display. According to the Jellyfin CSS documentation it only applies to clients that use Jellyfin Web, so most native TV apps ignore it, and any fonts or images the stylesheet pulls from elsewhere are loaded by each device rather than the server.

More reading

You might enjoy these