One JavaScript-style regex per line. Search results whose title matches any pattern are dropped before being returned. Case-insensitive by default — use (?-i:Foo) for case-sensitive. Lines starting with # are comments. Use this to skip releases your setup can't handle, whatever the reason.
These fire extra queries to this profile's indexers and spend their hit and rate limits, which you set per indexer in the Indexers tab.
Title search. Up to 5 extra queries per search across this profile's 5 indexers.
Title + episode, then a whole-show query that also catches untagged specials. Up to 10 extra queries per search across this profile's 5 indexers.
When off, a request just processes the single chosen release (legacy behavior). When on, the watchdog tries alternative releases on failure and dedupes in-flight queue items. Live reports appear in the Watchdog tab in the sidebar.
Hard ceiling for a request. Big UHD releases need ~15–30s for the queue to extract file metadata. If exceeded, the client gets a retry-able error; the queue item keeps processing in the background and a re-request resolves it. Default 30.
If the primary candidate hasn't passed verification by this many seconds, backup candidates start in parallel. Lower = more eager fallback, slightly higher provider load. Default 3.
How many candidates run at the same time in one round. Higher means faster failover when a candidate fails, but more simultaneous indexer requests — too many in parallel can look like spamming and risk a ban. Default 3.
The most candidates one request will try in total before giving up. With the defaults (3 per batch, 10 total) it tries up to 10 candidates, a few at a time, then stops. Also stops sooner if the total budget runs out. Default 10.
`none` (the default) skips the pre-check for the fastest start; every candidate is enqueued right away. `stat` is a cheap NNTP check that weeds out dead releases before the queue commits, avoiding a re-fetch of their NZB from the indexer on every request.
How long a recently-failed release is skipped on subsequent requests, so we don't hammer the same dead release (and its indexer) over and over. Default 5.
When a candidate stops progressing, it is set aside and the next one is attempted. On by default.
A candidate that has started but reported no progress for this many seconds is set aside. A candidate that keeps reporting progress is never set aside. Default 2.
Upper limit on how long a single candidate is given before moving on, regardless of progress — a backstop for a candidate that is queued but not yet started. Default 5.
`smart` is the recommended default once enabled. `collect-all` adds a new copy for every distinct size you pick (no near-exact match) — usually fine since files are mounted, not stored locally; only the metadata grows.
`smart` mode only. Existing copy is reused if its size is within ±N% of what you selected. Outside that → fetch the new variant and keep both. Default 25 (generous to absorb indexer-vs-actual size drift).
Cap on how many size copies of the same item to keep at once. When the cap is hit, the eviction strategy below decides which to drop. Set to 0 for unlimited. Default 3.
When multiple copies exist for the same group, which one to serve. `closest-to-selection` uses what you just picked as the intent signal.
When you pick a size we don't have AND no working source can be fetched, serve the closest existing copy instead of returning an error. Strictly safer than today's behavior. On by default.
Decides which copy is removed when `max copies per group` is hit. LRU is the safe default. `never` means you remove copies manually from the History view.
Eviction skips any copy used within the last N seconds. Safety net so we never remove an item that's still being accessed. Default 60.
light performs a cheap existence check against your provider, so missing articles are skipped without re-asking the indexer. standard additionally caches the article descriptor locally so the next request skips the indexer round-trip entirely. full additionally resolves trailing-archive metadata for any top result that maps to a previously completed item — useful when re-opening something.
Walks the top-ranked results one at a time and stops on the first one that passes the check. So a missing top result automatically falls through to the next one — same idea as the watchdog at click time, but in the background. Default 20.
How long a preflighted result stays warm before it's discarded. Long enough to scroll through and pick something, short enough not to hold stale state. Default 120.
Preflight is best-effort: if an indexer's rate limit would force it to wait longer than this before a request can fire, preflight on that result is skipped. Keeps real requests from being queued behind speculative work. Default 5.
When on, the background engine syncs your lists, resolves the biggest healthy release for each item, and keeps it verified over time. When off, nothing runs.
Which Search Profile the resolver uses — this decides which indexers get queried. Default uses the first one.
Match the watchdog uses the same rank order as the watchdog, so the release Watchtower readies is exactly the one the watchdog would select. Largestalways prefers the biggest healthy release (it may differ from what the watchdog would have chosen).
Latest season warms only the newest season (default). First seasonwarms only season one — handy for watchlists you may start later. All airedbackfills every released season. Recent keeps just the last few episodes across the whole series. Off stops series from expanding into episodes. Each list can override this on the Watchtower page.
Warm one season bundle per completed season, a single release that covers the whole season and plays per episode, instead of every episode. Still-airing seasons always use single episodes. Default on.
When a finished season has no healthy bundle, warm its individual episodes instead so the season is still covered. The bundle is parked and stops being searched, so this will not keep hitting your indexers. Use "check now" on a parked pack to try for it again. Off by default.
Hard ceiling on how many items a single series may warm: individual episodes and season bundles combined, across every season. No series can expand past this on any scope, so a very long title stays bounded instead of fanning out. A season bundle counts as one item. 0 = unlimited. Default 50.
Which end of the series to keep when it hits the cap. Newest stays current with the latest episodes and season packs. Oldest starts from season one, useful when you plan to watch a series from the beginning.
Ignore releases smaller than this. Default 0.5 GB.
Ignore releases larger than this. Empty / 0 = no ceiling.
Only consider releases with at least this many grabs (recorded downloads) on the indexer. Higher = more proven releases but fewer candidates. 0 = no minimum. Default 0.
How many items the engine keeps actively ready. Beyond this, items are listed but parked until they bubble up. This is what bounds load no matter how big your lists get. Default 100.
Resolve as fast as your indexers allow instead of pacing with the daily budget below. Every search and grab still obeys each indexer's requests-per-minute and daily caps from Indexer settings, and the engine pauses automatically when an indexer is tapped out. Best for clearing a large backlog. Default off.
Soft cap on new resolves per day (0 = unlimited; your per-indexer caps always apply). Drips the backlog instead of hammering indexers. Default 60.
One live winner + backups kept per item, for instant failover. Default 2.
Max NZB fetches (the scarce indexer bucket) per item per pass. Keeps resolves grab-thrifty. Default 3.
How many segments are sampled to confirm a release is alive on Usenet, on both the first resolve and every re-check. Higher = more thorough but slower. Default 3.
Max time a single segment check may run before it's treated as a timeout and its Usenet connection is released. Guards against unresponsive providers stalling the engine. Default 10.
How often a ready item is re-verified on Usenet to confirm it's still downloadable. Items that stay healthy gradually stretch toward the max below. Default 21600 (6 hours).
The longest a repeatedly-healthy item waits between re-checks. Default 604800 (7 days).
How long an unavailable ("dead") item waits before it's searched again. Lower retries more often but spends more of your daily resolve budget. Default 21600 (6 hours).
How often remote lists are re-fetched to catch additions/removals. Default 3600.
Writes Watchtower's per-item activity to the Logs page at the Information level: each resolve, why an item is left unavailable, dead releases it skips or finds, backup promotions, and a short heartbeat every cycle so you can confirm it's still running. Useful when an item gets stuck or stops updating. Only emits while Watchtower is enabled. Leave off for normal use — it's chatty.
When on, anything whose fingerprint is filtered by your sources is removed from what your search profiles return. If everything matches, results are shown anyway as a last resort.
A fingerprint from a “corroborate” source only filters when at least this many independent sources agree. Your own list and “full”-trust sources always filter on their own.
A verdict from a remote or imported list only filters when its provider matches one of yours. Your own list always filters.
Each source has a trust level. full filters on its own; corroborate filters only when enough sources agree (the number above); observe keeps the list but never filters.
Drag & drop a warden file here to import.
A personal backup of your fingerprint list to a repo you own. Keep the repo private for a pure backup, or public to share. The file holds only fingerprint hashes, no credentials. Restore reuses the same repo and token, so private repos work too.
*.strm file contents (Emby/Jellyfin) and profile streaming/sharing URLs (Plex). If left blank, nzbdav infers it from request headers, which often fails behind reverse proxies. Make sure your media servers can reach this URL.No Radarr instances configured. Click on the "Add" button to get started.
No Sonarr instances configured. Click on the "Add" button to get started.
Configure what to do for items stuck in Radarr / Sonarr queues. Different actions can be configured for different status messages. Only `usenet` queue items will be acted upon.
The task has not started.