Filters
Filters are how you tell autobrr what to grab. Each filter is a set of conditions (resolution, size, release group and so on) that every announce is checked against; when a release matches, the filter's actions run and the release is sent to your download client, an *arr, or whatever else you've configured. You can run as many filters as you like side by side, each with its own indexers, rules and actions.
How a filter is evaluated
Every field you set in a filter must match for a release to be approved; fields you leave empty are skipped entirely. A typical TV filter checks a handful of fields against the parsed release name:
If any single check fails, the release is rejected. Rejected releases don't show up on the Releases page; only releases that matched a filter do. To see why something was skipped, check the logs with log level DEBUG:
The Except fields work the other way around: a match there is a reason to reject. Here the release passes every quality check, but its group is on the filter's except list:
Check order
Checks run from cheap to expensive, and a failure at any step stops the rest:
The regular fields are checked first, against what the announce itself contains. The gold steps only run when your filter needs a value the announce didn't include: if you set size limits and the indexer doesn't announce size, autobrr fetches it out of band, via the indexer's API where available, or by downloading the .torrent file as a last resort. The same applies to uploader and record label checks on API-enabled indexers. External filters always run last, so your scripts and webhooks are only called for releases that already passed everything else.
The same order as a flowchart; every reject path ends the same way, only a release that clears every step reaches the actions:
Wildcard matching
Most fields can take a comma-separated list like value1, value2.
The comma-separated lists support wildcards, where * means zero or more characters and ? means exactly one character.
An example would be: *this*,that?movie. In this case we would match any title containing this (or tHiS) or in the
second case, any title that matches exactly like That Movie or tHaT MoViE or even THAT.MOVIE.
If no value is specified in a field, then that field will match any/all possible values. That means if nothing but
Filter Name and Indexers is given, then the filter it will match all/any releases for the specified indexers.
Please note that all filters are case-insensitive, so write them however you desire. Another thing to note is that it is not possible to escape wildcard fields.
If you want to match a string partially, then remember to use the * around the before/after/around what you're
looking for.
If you want to match a string exactly, then try to avoid the use of the * wildcard character.
Exception: the Match/Except releases, description and release tags fields on the Advanced tab match substrings even without wildcards and cannot match exactly in non-regex mode.
Sharing filters
Filters can be exported and imported as JSON, which makes it easy to back them up or share them with others:
- Export: Open the dropdown next to a filter in the filter list and pick Export JSON, or **Export JSON (Discord) ** to get the same JSON wrapped in a Discord code block. The result is copied to your clipboard.
- Import: Click the arrow next to Create Filter and choose Import Filter. It accepts autobrr filter JSON as
well as autodl-irssi
.trackerconfigs, and imported filters are renamed automatically if the name is already taken.