A plugin for Jellyfin that improves search by utilizing Meilisearch as a search engine. Search logic is offloaded to a Meilisearch instance, and the response from Jellyfin is modified
Improved:
[!NOTE] As long as your client uses
/Itemsendpoint for search, it should be supported seamlessly I guess
Inspired by JellySearch.
Setup a Meilisearch instance (maybe a hosted one in the cloud will also work, but I don't recommend)
docker-compose.yml:
services:
meilisearch:
container_name: meilisearch
image: getmeili/meilisearch:v1.34 # older versions may have compatibility issues
restart: unless-stopped
environment:
MEILI_ENV: production
MEILI_NO_ANALYTICS: "true"
MEILI_MASTER_KEY: super-secret-key
volumes:
# meilisearch's data
- ./data:/meili_data
ports:
- 7700:7700
Install the Meilisearch plugin
https://raw.githubusercontent.com/arnesacnussem/jellyfin-plugin-meilisearch/refs/heads/master/manifest.json
Configure the Meilisearch plugin
http://meilisearch:7700)super-secret-key)Save{
"meilisearch": "Server: available",
"meilisearchOk": true,
"averageSearchTime": "0ms",
"indexStatus": {
"Items": "20569",
"LastIndexed": "1/28/2026 4:10:01 PM"
}
}
[!NOTE] You can also set the environment variables in Jellyfin, to configure the plugin without editing the Jellyfin UI:
MEILI_URLandMEILI_MASTER_KEY
[!NOTE] If you want share one Meilisearch instance across multiple Jellyfin instance, you can fill the
Meilisearch Index Name, if leaving empty, it will use the server name.
Test Meilisearch plugin search
Index will update on following events:
On Jellyfin 12.0 (the version this build targets), the core feature is implemented as a Jellyfin search
provider (IExternalSearchProvider / ISearchProvider), which Jellyfin discovers via
GetExports<ISearchProvider>(). It registers with a higher priority than the built-in SQL search provider,
so search queries are served by Meilisearch first.
Because this hooks into Jellyfin internals, it only supports specific Jellyfin versions, and the mechanism
has changed over time: on Jellyfin 10.11 it used an IItemRepository decorator instead of a search provider.
I've seen JellySearch, which is a wonderful project, but I don't really like setting up a reverse proxy or any of that hassle.
So I am writing this, but it still requires a Meilisearch instance.
At this moment, only search queries are handled by this plugin, but it still improves a lot on my 200k items library.
C#
66.7%
HTML
33.3%
A plugin for Jellyfin that improves search by utilizing Meilisearch as a search engine. Search logic is offloaded to a Meilisearch instance, and the response from Jellyfin is modified
Improved:
[!NOTE] As long as your client uses
/Itemsendpoint for search, it should be supported seamlessly I guess
Inspired by JellySearch.
Setup a Meilisearch instance (maybe a hosted one in the cloud will also work, but I don't recommend)
docker-compose.yml:
services:
meilisearch:
container_name: meilisearch
image: getmeili/meilisearch:v1.34 # older versions may have compatibility issues
restart: unless-stopped
environment:
MEILI_ENV: production
MEILI_NO_ANALYTICS: "true"
MEILI_MASTER_KEY: super-secret-key
volumes:
# meilisearch's data
- ./data:/meili_data
ports:
- 7700:7700
Install the Meilisearch plugin
https://raw.githubusercontent.com/arnesacnussem/jellyfin-plugin-meilisearch/refs/heads/master/manifest.json
Configure the Meilisearch plugin
http://meilisearch:7700)super-secret-key)Save{
"meilisearch": "Server: available",
"meilisearchOk": true,
"averageSearchTime": "0ms",
"indexStatus": {
"Items": "20569",
"LastIndexed": "1/28/2026 4:10:01 PM"
}
}
[!NOTE] You can also set the environment variables in Jellyfin, to configure the plugin without editing the Jellyfin UI:
MEILI_URLandMEILI_MASTER_KEY
[!NOTE] If you want share one Meilisearch instance across multiple Jellyfin instance, you can fill the
Meilisearch Index Name, if leaving empty, it will use the server name.
Test Meilisearch plugin search
Index will update on following events:
On Jellyfin 12.0 (the version this build targets), the core feature is implemented as a Jellyfin search
provider (IExternalSearchProvider / ISearchProvider), which Jellyfin discovers via
GetExports<ISearchProvider>(). It registers with a higher priority than the built-in SQL search provider,
so search queries are served by Meilisearch first.
Because this hooks into Jellyfin internals, it only supports specific Jellyfin versions, and the mechanism
has changed over time: on Jellyfin 10.11 it used an IItemRepository decorator instead of a search provider.
I've seen JellySearch, which is a wonderful project, but I don't really like setting up a reverse proxy or any of that hassle.
So I am writing this, but it still requires a Meilisearch instance.
At this moment, only search queries are handled by this plugin, but it still improves a lot on my 200k items library.
C#
66.7%
HTML
33.3%