Shokofin: The Ultimate Jellyfin Anime Plugin - AniDB, Shoko Server & Perfect Metadata (2026)

Shokofin: The Ultimate Jellyfin Anime Plugin - AniDB, Shoko Server & Perfect Metadata (2026)

Shokofin: The Ultimate Jellyfin Anime Plugin (2026)

If you have tried to build an anime library in Jellyfin using the default TMDB or TVDB metadata providers, you know the pain. Wrong episode numbers, missing OVAs, specials placed randomly, absolute ordering nightmares, and artwork that looks like it was cropped from a Western movie poster.

Shokofin fixes all of this by connecting Jellyfin to Shoko Server, a dedicated anime metadata management system that uses AniDB file hashes for 100% accurate identification.


The Problem: Why Default Metadata Fails for Anime

Anime has unique structural challenges that Western metadata providers cannot handle properly:

  • Absolute vs Season ordering: TVDB often splits a long-running anime into arbitrary "seasons" that do not match the original broadcast
  • OVA/ONA/Specials: These are frequently missing or placed in wrong positions
  • Multiple titles: Japanese title, Romaji title, English title - providers often use the wrong one
  • Episode 0 / Recap episodes: Numbered inconsistently across providers
  • File matching: Some anime has multiple versions (v2, v3 releases) that confuse name-based matchers

The Solution: Shoko Server + Shokofin

The architecture works like this:

Your Anime Files
  -> Shoko Server (matches files via AniDB ED2K hashes)
  -> Perfect metadata, ordering, grouping
  -> Shokofin plugin bridges this into Jellyfin
  -> Jellyfin displays everything correctly

Shoko Server is the backend. It:

  • Scans your anime files
  • Computes file hashes and matches against AniDB database
  • Handles series grouping, episode ordering, and relations
  • Syncs watch status with AniDB, MyAnimeList, AniList, Trakt

Shokofin is the Jellyfin plugin. It:

  • Creates a virtual filesystem in Jellyfin based on Shoko data
  • Provides correct series grouping and episode ordering
  • Delivers AniDB artwork, descriptions, and tags
  • Syncs Jellyfin watch status back to Shoko

Prerequisites

  • Jellyfin 10.9 or newer
  • Docker (recommended for Shoko Server)
  • An AniDB account (free at anidb.net)
  • Your anime library organized in any structure (Shoko handles matching regardless of file naming)

Step 1: Deploy Shoko Server

services:
  shoko-server:
    image: shokoanime/server:latest
    container_name: shoko-server
    volumes:
      - ./shoko/config:/home/shoko/.shoko
      - /path/to/anime:/anime
    ports:
      - 8111:8111
    restart: unless-stopped

First run: access http://localhost:8111 to complete the setup wizard.


Step 2: Configure Shoko Server

  1. Add your AniDB account in Settings - AniDB
  2. Add import folder: point to your /anime volume mount
  3. Start the import: Shoko hashes every file and matches against AniDB
  4. Wait: Initial import can take hours for large libraries (it computes ED2K hashes, which is I/O intensive)

Once complete, your entire library will be perfectly identified with correct metadata, regardless of how your files are named.


Step 3: Install Shokofin in Jellyfin

Add the Shokofin repository:

Dashboard - Plugins - Repositories - Add:

Name: Shokofin
URL: https://raw.githubusercontent.com/ShokoAnime/Shokofin/main/manifest.json

Install Shokofin from the catalog and restart Jellyfin.


Step 4: Configure Shokofin

Dashboard - Plugins - Shokofin:

JellyWatchTry JellyWatch — Your Jellyfin companion, everywhere.
  • Shoko Server URL: http://shoko-server:8111 (Docker) or http://localhost:8111
  • Username/Password: Your Shoko Server credentials
  • Enable Virtual File System (VFS): Recommended - lets Shokofin control how files appear in Jellyfin
  • Series grouping: Group related series together (e.g., all Monogatari series under one entry)

Step 5: Create a Jellyfin Library Using Shokofin

  1. Dashboard - Libraries - Add Media Library
  2. Content type: Shows (or Mixed if you have anime movies too)
  3. Disable all default metadata providers (TMDB, TVDB, etc.)
  4. Enable only Shokofin as the metadata provider
  5. Point the folder to your anime directory
  6. Save and trigger a library scan

Jellyfin will now use Shokofin/Shoko for all metadata instead of guessing from filenames.


Step 6: Watch Status Sync

Shoko Server can sync watch status with:

  • AniDB (native)
  • MyAnimeList (via plugin)
  • AniList (via plugin)
  • Trakt (via plugin)

When you watch an episode in Jellyfin, Shokofin marks it in Shoko, which then syncs to your configured tracking services. Bidirectional sync is supported.


Shokofin vs Default TMDB/TVDB for Anime

FeatureShokofin + ShokoDefault TMDB/TVDB
File identificationED2K hash (100% accurate)Filename guessing
Episode orderingAniDB native (absolute, by air date)TVDB arbitrary seasons
OVA/Special placementCorrect (AniDB relations)Often wrong or missing
ArtworkAniDB posters (anime-appropriate)TMDB (often Western crops)
Series groupingShoko relations (franchise view)Manual only
Watch syncAniDB, MAL, AniList, TraktNone
File version handlingv2/v3 awarenessNot supported
Setup complexityHigh (Shoko Server + plugin)None (built-in)
Ongoing maintenanceLow (runs itself after setup)N/A

Performance and Resource Usage

  • Shoko Server: ~300-500MB RAM for a typical library (1000-5000 episodes). CPU usage is minimal after initial import.
  • Shokofin: Negligible (just a Jellyfin plugin)
  • Initial import time: 2-8 hours for large libraries (I/O bound, hashing files)
  • Daily operation: Near-zero resource usage. Shoko checks for new files periodically.

Common Issues

ProblemSolution
Files not matchedCheck Shoko Server - Unrecognized Files. These usually need manual AniDB matching
Wrong episode order in JellyfinEnsure VFS mode is enabled in Shokofin settings
Duplicate entriesDisable default metadata providers on the library
Shoko cannot connect to AniDBAniDB rate-limits API calls. Wait and retry. Do not run multiple instances.
Watch status not syncingCheck Shoko - Settings - Trakt/MAL plugin is enabled and authenticated
Slow initial scanNormal. ED2K hashing reads entire files. SSD significantly helps.

FAQ

Is Shokofin required, or can I just use Shoko Server alone? Shokofin is the bridge that brings Shoko data into Jellyfin. Without it, Shoko manages metadata but Jellyfin cannot see it.

Does Shokofin work alongside other metadata plugins? You should disable TMDB/TVDB for anime libraries. Using both will cause conflicts and duplicate entries.

Can I still use TMDB for my non-anime libraries? Absolutely. Create a separate Jellyfin library for anime with Shokofin, and keep your movies/TV shows libraries with default providers.

Does my anime need to be named in a specific format? No. Shoko uses file hashes, not filenames. Your files can be named anything and Shoko will still identify them correctly.

How does this compare to the Jellyfin AniDB plugin? The standalone AniDB plugin uses filename matching (less reliable) and lacks Shoko grouping, VFS, and multi-tracker sync. Shokofin via Shoko is significantly more capable.

Can I run Shoko Server on a different machine than Jellyfin? Yes. Shokofin connects to Shoko via HTTP API. They can be on different hosts as long as they share access to the same media files.


Final Thoughts

The Shoko + Shokofin combo is the gold standard for anime metadata in Jellyfin. The initial setup takes an evening, but once running, it handles everything automatically - including series you add months later.

If you have more than 50 anime series, the time investment pays off immediately. No more fixing episode ordering by hand.


Track your anime watch progress across Jellyfin and all your devices. Download JellyWatch on Google Play - watch history, library stats, and session monitoring for your entire collection.

Comments

No comments yet. Be the first to share your thoughts.

Leave a comment

Never displayed publicly.
0 / 2000 · Supports limited Markdown: **bold**, *italic*, `code`, [link](url), lists, > quote.