Tech Digest

Media

Prowlarr

Define each indexer once, push it to every *arr app, change a domain in one place

MediaGPL-3.0Stablearm64 builds
Last reviewed Profile maintained against the project's own documentation
Operational load
2 / 5
Light
Idle memory
150 MB
typical use ~300 MB
Moving parts
2
containers in a normal deployment
Backup shape
SQLite backup
needs a dump or a stop

Prowlarr is an indexer manager for the *arr stack: you add torrent trackers and Usenet indexers once, and it syncs them into Sonarr, Radarr, Lidarr and the rest over their APIs. It replaces Jackett and NZBHydra2 and the per-app indexer configuration they left you maintaining.

Our verdict on Prowlarr#

The saving is arithmetic. Without Prowlarr, every indexer is configured separately in Sonarr, in Radarr and in every other arr app, each with its own URL, API key, categories and rate limits. Thirty indexers across three apps is ninety entries you maintain by hand, and a tracker rotating its domain is ninety edits. Prowlarr makes that one definition and one edit, propagated over each app's API. You also get a cross-indexer manual search in a single page and per-indexer statistics (grabs, failure rate, response time) that no arr app aggregates. The cost is real: Prowlarr syncs indexers into the apps as Torznab and Newznab entries pointing back at Prowlarr's own URL, so it sits in the search path. If Prowlarr is down or its URL base changes, every app's indexers fail at once. Current release is 2.5.2 (July 2026).

Who Prowlarr is for#

Choose it if

  • You run three or more *arr apps and are tired of pasting the same tracker configuration into each one.
  • You use private trackers that change domains or categories, where one edit beats editing every app.
  • You want a single page to search every indexer manually before deciding whether a title is worth automating.
  • You are migrating off Jackett and want the version that the Sonarr and Radarr team actually supports.

Look elsewhere if

  • You run exactly one *arr app with two indexers, where Prowlarr is a container that buys you almost nothing.
  • You cannot tolerate a shared failure point in search, since every synced app queries through Prowlarr.
  • You only use Usenet with a single indexer that never changes, which is a two-minute manual configuration.

What running it actually looks like#

One container on 9696 with a /config volume, and in practice a second for FlareSolverr, which Prowlarr calls to pass Cloudflare challenges on trackers that need it. Prowlarr needs no media mounts and no download client: it is not in the download path. Setup is two-sided. Add indexers, tagging the Cloudflare-protected ones so the FlareSolverr proxy applies only to those, then add each *arr app under Settings, Apps with that app's URL and API key plus the Prowlarr server URL those apps should call back on. That last field is the common failure: behind a reverse proxy with a URL base such as /prowlarr, the callback URL must include the base or every synced indexer breaks in the app with an error that does not name the cause. Sync respects tags, so untagged indexers go everywhere.

Resource profile#

Memory
150 MB idle, around 300 MB in ordinary use. A small .NET process; memory tracks the number of configured indexers and concurrent searches rather than library size, because Prowlarr stores no media metadata at all.
CPU and acceleration
Near zero at rest. Load comes from fan-out searches, where one query from Sonarr hits every synced indexer at once, plus health checks and any Cloudflare challenge solving handed to FlareSolverr.
Storage growth
Tens of MB. The database holds indexer definitions, app links, search history and statistics, and nothing else; there is no media, no artwork and no cache of consequence.
Operational load
2 of 5, Light. One small container with a SQLite file, plus usually a FlareSolverr sidecar. The ongoing attention is not upgrades, it is indexers: trackers rotate domains, change categories, add Cloudflare or rate limit you, and Prowlarr surfaces those as health warnings you have to act on.

Figures describe a small single-household install and are the working assumptions behind our stack planner. Your numbers will differ with library size, user count and hardware. See methodology.

Data and backup surface#

Back up /config: prowlarr.db holds indexer definitions with their credentials and cookies, app links with each arr API key, indexer proxies, sync profiles, tags and search history, while config.xml holds Prowlarr's own API key. That is the entire value, and it contains private tracker credentials, so encrypt the backup. Use the scheduled backups Prowlarr writes into /config/Backups/scheduled/ rather than copying a live SQLite file. logs/ is disposable. Nothing here is regenerable from elsewhere: your indexer list does not live in Sonarr or Radarr, only Prowlarr's copy of it does. On restore, the API key in config.xml must match what the arr apps have stored, or every synced indexer 401s until you re-run the app sync.

Derived backup shape

SQLite backup. sqlite3 <db> ".backup out.db" while running, or stop the container and copy. A live cp of a WAL-mode SQLite file can restore corrupt.

Traps and surprises#

Prowlarr is in the search path, not just the setup path

Synced indexers in Sonarr and Radarr are Torznab entries whose base URL points back at Prowlarr, so searches proxy through it at query time. It is not a one-time copy. If the container is down, the URL base changes, or the API key rotates, every indexer in every app fails at once. Give it the same uptime attention as the apps that depend on it.

URL base breaks sync silently behind a proxy

If Prowlarr runs at host/prowlarr, the Prowlarr Server URL you enter in each app entry must include /prowlarr. Omit it and the sync appears to succeed while the indexers it wrote into Sonarr point at a URL that 404s. The resulting error in Sonarr does not mention the base path, so people debug the tracker instead of the proxy config.

Untagged indexers sync everywhere

Prowlarr syncs an indexer to an app when their tags match or when neither has tags. A brand new indexer with no tag therefore lands in every app, including ones it makes no sense for, adding noise and wasted queries against trackers with hit-and-run rules. Tag both indexers and apps from the start, and set sync level deliberately: Add and Remove or Full Sync also removes indexers you deleted.

Readarr is retired but still in the app list

Readarr was archived on 27 June 2025 after its metadata source became unusable, yet it remains a selectable application type. Configuring a sync to it is wasted effort, and a broken Readarr instance still generates recurring Prowlarr health warnings and failed sync attempts. Remove the app entry rather than leaving it failing in the background.

FlareSolverr is per-indexer, not global

The FlareSolverr indexer proxy is applied by tag under Settings, Indexers, so you tag the Cloudflare-protected trackers and attach the proxy to that tag. Applying it to everything routes clean indexers through a headless browser, which is slower and burns memory. FlareSolverr itself is also a frequent source of breakage as Cloudflare changes, so expect to update that container more often than Prowlarr.

Specifications#

Category
Media servers and libraries
Licence
GPL-3.0 (Copyleft)
Written in
C# / .NET
First release
2021
Maturity
Stable
Datastore
SQLite (PostgreSQL optional)
Default ports
9696
Ships as
docker, deb package, native binary, windows installer
arm64 builds
Yes
Identity
Local accounts only. Local forms or basic login only, with no LDAP or OIDC; the API key is the real credential, and it is the one the *arr apps use, so treat it like a shared secret.
Replaces
Jackett, NZBHydra2, per-app indexer config
Project site
prowlarr.com
Source
github.com/Prowlarr/Prowlarr
Documentation
wiki.servarr.com/prowlarr

Alternatives to Prowlarr#

Everything else in media servers and libraries, closest in operational weight first.

ToolOps loadIdle RAMLicence
Audiobookshelf2, Light200 MBGPL-3.0
Calibre-Web2, Light120 MBGPL-3.0
Emby2, Light350 MBProprietary
Jellyfin2, Light280 MBGPL-2.0-only
Jellyseerr2, Light220 MBMIT
Kavita2, Light250 MBGPL-3.0

Sources#

Facts on this page were checked against the project's own material. Where a number is our own estimate rather than a published figure, the text says so.

  1. Prowlarr repository
  2. Prowlarr quick start guide
  3. Prowlarr settings reference
  4. Prowlarr FAQ
  5. Readarr retirement notice

Published . Last reviewed . Found something out of date? Tell us and we will fix it and log the change.