Torrent Configuration¶
qBitrr provides granular control over how torrents are processed, filtered, and managed for each Arr instance. This page covers all torrent-specific settings available in the [<Arr>-<Name>.Torrent] section.
Overview¶
Torrent settings control:
- File filtering - Which files to download/ignore based on extensions, names, folders
- Processing timing - When to start processing torrents
- Completion thresholds - Percentage and ETA requirements
- Stalled torrent handling - Detection and removal of stuck downloads
- Seeding rules - Per-instance seeding configurations
- Tracker-specific overrides - Custom settings per tracker
Configuration section:
File Filtering¶
CaseSensitiveMatches¶
Type: Boolean Default: false
Enable case-sensitive regex matching for file/folder exclusions.
Examples:
| Value | Pattern | Matches |
|---|---|---|
false | \bsample\b | Sample, SAMPLE, sample |
true | \bsample\b | sample only |
FolderExclusionRegex¶
Type: List of regex patterns Default: Common extras/sample folders
Exclude entire folders matching these regex patterns from processing.
Default patterns:
FolderExclusionRegex = [
"\\bextras?\\b", # Extras, Extra
"\\bfeaturettes?\\b", # Featurettes
"\\bsamples?\\b", # Samples, Sample
"\\bscreens?\\b", # Screens, Screenshots
"\\bnc(ed|op)?(\\d+)?\\b" # NCOP, NCED (anime)
]
Anime-specific additions:
FolderExclusionRegex = [
"\\bextras?\\b",
"\\bsamples?\\b",
"\\bspecials?\\b", # Specials (anime)
"\\bova\\b", # OVA folders
"\\bnc(ed|op)?(\\d+)?\\b"
]
Custom examples:
# Exclude bonus content
FolderExclusionRegex = [
"\\bbehind.the.scenes\\b",
"\\bdeleted.scenes\\b",
"\\binterviews?\\b"
]
Regex Escaping
Backslashes must be doubled in TOML strings: \\b not \b
FileNameExclusionRegex¶
Type: List of regex patterns Default: Common junk file patterns
Exclude individual files matching these regex patterns.
Default patterns:
FileNameExclusionRegex = [
"\\bncop\\d+?\\b", # Anime NCOP files
"\\bnced\\d+?\\b", # Anime NCED files
"\\bsample\\b", # Sample videos
"brarbg.com\\b", # RARBG ads
"\\btrailer\\b", # Trailers
"music video", # Music videos
"comandotorrents.com" # Torrent site ads
]
Custom examples:
# Block specific release groups
FileNameExclusionRegex = [
"\\bYIFY\\b",
"\\bRAR?BG\\b",
"\\b1337x\\b"
]
# Block unwanted audio tracks
FileNameExclusionRegex = [
"\\.commentary\\.",
"\\.ac3\\.audio\\."
]
FileExtensionAllowlist¶
Type: List of file extensions Default: Common video/subtitle extensions
Only allow files with these extensions. Empty list = allow all. qBitrr applies the allowlist while downloading and validates the download again before asking Arr to import it.
Default:
FileExtensionAllowlist = [
".mp4", ".mkv", # Video files
".sub", ".ass", ".srt", # Subtitles
".!qB", ".parts" # Incomplete download markers
]
Custom examples:
# Only MKV and MP4 (no subtitles)
FileExtensionAllowlist = [".mkv", ".mp4"]
# Include audio for music
FileExtensionAllowlist = [".flac", ".mp3", ".m4a", ".alac"]
# Allow all files (empty list)
FileExtensionAllowlist = []
Performance
Using an allowlist reduces bandwidth by marking unwanted files as "Do not download". If such a file is already present, qBitrr will not submit the download to Arr.
AutoDelete¶
Type: Boolean Default: false
Automatically delete files that don't match the allowlist or match exclusion patterns.
When enabled:
- Already-downloaded disallowed files (
.exe,.txt,.nfo) are deleted before import - Files matching
FileNameExclusionRegexare deleted - Files not in
FileExtensionAllowlistare deleted
Recommendation: false to review files manually before deletion
When AutoDelete is disabled and a disallowed file is already on disk, qBitrr blocks the Arr import and logs the offending path. The import is retried after the file is removed or AutoDelete is enabled.
Processing Timing¶
IgnoreTorrentsYoungerThan¶
Type: Integer (seconds) Default: 180 (3 minutes)
Wait this many seconds after torrent is added before processing.
Why delay processing?
- Metadata downloads: Torrents need time to fetch file lists
- Fast starts: Avoid processing before files begin downloading
- Duplicate prevention: Give Arr time to process the download
Examples:
# Fast processing (risky)
IgnoreTorrentsYoungerThan = 60 # 1 minute
# Standard (recommended)
IgnoreTorrentsYoungerThan = 180 # 3 minutes
# Conservative (slow tracker/large torrents)
IgnoreTorrentsYoungerThan = 600 # 10 minutes
Too Low Values
Values below 60 seconds can cause duplicate imports or missing files.
MaximumETA¶
Type: Integer (seconds) or -1 (disabled) Default: -1 (disabled)
Maximum allowed estimated time to completion. Torrents exceeding this are removed.
How it works:
- qBitrr calculates remaining time based on download speed
- If ETA > MaximumETA, torrent is marked for removal
- Removal happens AFTER download completes (
amount_left == 0) - Prevents seeding slow torrents, but allows them to finish downloading
Removal Timing
MaximumETA is enforced AFTER completion, not during download.
- During download: qBitrr calculates ETA
- If ETA > MaximumETA: Torrent marked for removal
- Removal happens: After
amount_left == 0(download complete)
Why: Deleting incomplete downloads wastes bandwidth. qBitrr waits for completion, then removes if it took too long.
Example:
Examples:
# Remove torrents taking over 2 hours
MaximumETA = 7200
# Remove torrents taking over 30 minutes
MaximumETA = 1800
# Disabled (no ETA limit)
MaximumETA = -1
Tracker Override
A positive tracker MaximumETA overrides this global setting. Tracker -1 or omitting the key does not clear a positive Arr MaximumETA. Unlimited only when no positive ETA is set for the torrent.
MaximumDeletablePercentage¶
Type: Float (0.0-1.0) Default: 0.99 (99%)
Don't delete torrents that have downloaded more than this percentage.
Why use this?
Prevents accidentally deleting nearly-complete torrents due to temporary stalls or tracker issues.
Examples:
# Very conservative (only delete if < 50% complete)
MaximumDeletablePercentage = 0.50
# Aggressive (delete even at 99%)
MaximumDeletablePercentage = 0.99
# Never auto-delete based on completion
MaximumDeletablePercentage = 0.01 # Only delete if < 1% complete
Stalled Torrent Handling¶
DoNotRemoveSlow¶
Type: Boolean Default: true
Don't remove slow torrents automatically.
When enabled:
- Slow torrents are not automatically deleted
- Manual intervention required for stuck downloads
When disabled:
- Slow/stalled torrents are removed based on
StalledDelay
Recommendation: true to avoid removing torrents on slow but working trackers. When false, torrents that exceed MaximumETA are removed after they complete downloading (see MaximumETA).
StalledDelay¶
Type: Integer (minutes) or -1 (disabled) Default: 15 minutes
Maximum time a torrent can remain stalled before removal.
Stalled conditions:
- No download/upload progress
- No seeds available
- Tracker offline
- Stuck fetching metadata (
metaDL/forcedMetaDL)
For metadata downloads, qBitrr measures stall time from when the torrent was added (added_on), not last_activity. Tracker and DHT metadata retries can keep updating last_activity even when metadata never completes.
Values:
-1= Disabled (never remove stalled torrents)0= Infinite (mark as stalled but never remove)> 0= Minutes until removal
Examples:
# Quick removal (5 minutes)
StalledDelay = 5
# Patient (1 hour)
StalledDelay = 60
# Never remove
StalledDelay = -1
ReSearchStalled¶
Type: Boolean Default: false
Trigger a new search before removing a stalled torrent.
When enabled:
- Torrent detected as stalled
- qBitrr triggers Arr to search for alternatives
- Original stalled torrent is removed
When disabled:
- Torrent detected as stalled
- Torrent is removed
- Arr's natural retry logic handles re-search
Recommendation: false to avoid aggressive re-searching; let Arr handle retries
Seeding Configuration¶
Seeding settings are configured in the [<Arr>.Torrent.SeedingMode] subsection. See Seeding Configuration for complete details.
Quick reference:
[Radarr-Movies.Torrent.SeedingMode]
DownloadRateLimitPerTorrent = -1 # KB/s download limit (-1 = unlimited)
UploadRateLimitPerTorrent = -1 # KB/s upload limit (-1 = unlimited)
MaxUploadRatio = 2.0 # Remove after 2:1 ratio
MaxSeedingTime = 43200 # Remove after 12 hours (seconds)
RemoveTorrent = -1 # Removal policy (-1=do not remove, 1–4=when to remove; see seeding.md)
RemoveDeadTrackers = false # Remove torrents with dead trackers
RemoveTrackerWithMessage = [] # Remove if tracker message matches
See also: Seeding Configuration Guide
Tracker-Specific Configuration¶
Override global torrent settings on a per-tracker basis.
Tracker Configuration Structure¶
[Radarr-Movies.Torrent.Trackers]
[[Radarr-Movies.Torrent.Trackers.PassThePopcorn]]
UseTracker = true
MaximumETA = 1800 # 30 minutes (overrides global)
DownloadRateLimit = -1
UploadRateLimit = -1
MaxUploadRatio = 3.0 # Seed to 3:1
MaxSeedingTime = 86400 # 24 hours
RemoveTorrent = -1 # Removal policy (see seeding.md)
TrackerURLInclude = ["passthepopcorn.me"]
Tracker Settings¶
UseTracker¶
Type: Boolean Default: true
Enable tracking for this tracker configuration.
TrackerURLInclude¶
Type: List of strings Required: Yes
URL patterns to match for this tracker.
Matching:
- Partial match against tracker announce URL
- Case-insensitive
MaximumETA (per-tracker)¶
Type: Integer (seconds) or -1 Default: Inherits global setting
Override global MaximumETA for this tracker.
Download/Upload Rate Limits (per-tracker)¶
Type: Integer (KB/s) or -1 (unlimited) Default: Inherits global setting
Seeding Limits (per-tracker)¶
Type: Float (ratio) or Integer (seconds) Default: Inherits global setting
Complete Configuration Examples¶
Example 1: Movies (Radarr)¶
[Radarr-Movies.Torrent]
CaseSensitiveMatches = false
# Exclude extras and samples
FolderExclusionRegex = [
"\\bextras?\\b",
"\\bfeaturettes?\\b",
"\\bsamples?\\b",
"\\bbehind.the.scenes\\b"
]
# Exclude junk files
FileNameExclusionRegex = [
"\\bsample\\b",
"\\btrailer\\b",
"brarbg.com\\b"
]
# Only video/subtitle files
FileExtensionAllowlist = [".mkv", ".mp4", ".srt", ".ass"]
AutoDelete = false
IgnoreTorrentsYoungerThan = 180 # 3 minutes
MaximumETA = 7200 # 2 hours
MaximumDeletablePercentage = 0.95 # 95%
DoNotRemoveSlow = true
StalledDelay = 30 # 30 minutes
ReSearchStalled = false
[Radarr-Movies.Torrent.SeedingMode]
MaxUploadRatio = 2.0
MaxSeedingTime = 43200 # 12 hours
Example 2: TV (Sonarr)¶
[Sonarr-TV.Torrent]
CaseSensitiveMatches = false
FolderExclusionRegex = [
"\\bextras?\\b",
"\\bsamples?\\b"
]
FileNameExclusionRegex = [
"\\bsample\\b",
"\\btrailer\\b"
]
FileExtensionAllowlist = [".mkv", ".mp4", ".srt"]
AutoDelete = false
IgnoreTorrentsYoungerThan = 120 # 2 minutes (faster for new episodes)
MaximumETA = 3600 # 1 hour
MaximumDeletablePercentage = 0.99
DoNotRemoveSlow = false # Remove slow downloads for TV
StalledDelay = 15 # 15 minutes
ReSearchStalled = true # Re-search quickly for new episodes
[Sonarr-TV.Torrent.SeedingMode]
MaxUploadRatio = 1.5
MaxSeedingTime = 21600 # 6 hours
Example 3: Anime (Sonarr)¶
[Sonarr-Anime.Torrent]
CaseSensitiveMatches = false
# Anime-specific exclusions
FolderExclusionRegex = [
"\\bextras?\\b",
"\\bsamples?\\b",
"\\bspecials?\\b",
"\\bova\\b",
"\\bnc(ed|op)?(\\d+)?\\b"
]
FileNameExclusionRegex = [
"\\bncop\\d+?\\b",
"\\bnced\\d+?\\b",
"\\bsample\\b"
]
FileExtensionAllowlist = [".mkv", ".mp4", ".ass", ".srt"]
AutoDelete = false
IgnoreTorrentsYoungerThan = 300 # 5 minutes (larger files)
MaximumETA = -1 # Disabled (anime can be slow)
MaximumDeletablePercentage = 0.99
DoNotRemoveSlow = true # Keep slow anime torrents
StalledDelay = 60 # 1 hour
ReSearchStalled = false
[Sonarr-Anime.Torrent.SeedingMode]
MaxUploadRatio = 2.0
MaxSeedingTime = 86400 # 24 hours
Example 4: Music (Lidarr)¶
[Lidarr-Music.Torrent]
CaseSensitiveMatches = false
FolderExclusionRegex = [
"\\bscans?\\b",
"\\bartwork\\b"
]
FileNameExclusionRegex = [
"\\bcover\\b",
"\\.log$",
"\\.cue$"
]
# Allow audio + cue/log for verification
FileExtensionAllowlist = [
".flac", ".mp3", ".m4a",
".cue", ".log"
]
AutoDelete = false
IgnoreTorrentsYoungerThan = 180
MaximumETA = -1 # No limit for music
MaximumDeletablePercentage = 0.95
DoNotRemoveSlow = true
StalledDelay = -1 # Never remove (music trackers can be slow)
ReSearchStalled = false
[Lidarr-Music.Torrent.SeedingMode]
MaxUploadRatio = 3.0 # Higher ratio for music
MaxSeedingTime = 172800 # 48 hours
Example 5: Private Tracker with Custom Rules¶
[Radarr-Movies.Torrent]
IgnoreTorrentsYoungerThan = 180
MaximumETA = -1 # Disabled globally
MaximumDeletablePercentage = 0.99
DoNotRemoveSlow = true
StalledDelay = -1
[Radarr-Movies.Torrent.SeedingMode]
MaxUploadRatio = -1 # No global ratio limit
MaxSeedingTime = -1 # No global time limit
# Tracker-specific overrides
[[Radarr-Movies.Torrent.Trackers.PassThePopcorn]]
UseTracker = true
TrackerURLInclude = ["passthepopcorn.me"]
MaximumETA = 1800 # 30 minutes (fast tracker)
MaxUploadRatio = 3.0
MaxSeedingTime = 86400 # 24 hours
DownloadRateLimit = -1
UploadRateLimit = -1
[[Radarr-Movies.Torrent.Trackers.BroadcasTheNet]]
UseTracker = true
TrackerURLInclude = ["broadcasthe.net", "landof.tv"]
MaximumETA = 3600 # 1 hour
MaxUploadRatio = 2.0
MaxSeedingTime = 172800 # 48 hours (more patient)
Troubleshooting¶
Files Not Downloading¶
Symptom: Torrent added but no files download
Check:
-
FileExtensionAllowlist:
-
FolderExclusionRegex:
Solution: Widen allowlist or reduce exclusions
Torrents Deleted Too Quickly¶
Symptom: Torrents removed before completing
Check:
-
MaximumETA:
-
StalledDelay:
Solution: Increase timeouts or disable with -1
Stalled Torrents Not Removed¶
Symptom: Stuck torrents never delete
Check:
-
StalledDelay disabled:
-
DoNotRemoveSlow enabled:
Solution: Enable stalled detection:
Regex Not Matching¶
Symptom: Exclusion patterns don't work
Check escaping:
# Incorrect
FolderExclusionRegex = ["\bsample\b"] # Single backslash
# Correct
FolderExclusionRegex = ["\\bsample\\b"] # Double backslash
Test regex:
Use online regex testers with test strings:
- Test string:
Sample.mkv - Pattern:
\\bsample\\b(case-insensitive) - Should match: ✅
Best Practices¶
1. Start Conservative¶
# Safe defaults
AutoDelete = false # Manual review first
MaximumETA = -1 # No automatic removal
StalledDelay = -1 # Manual intervention
Test for 1-2 weeks, then enable automated removal.
2. Use Allowlists for Bandwidth Savings¶
Saves bandwidth by not downloading NFO, artwork, etc.
3. Adjust IgnoreTorrentsYoungerThan by Content Type¶
# TV (fast processing for new episodes)
IgnoreTorrentsYoungerThan = 120 # 2 minutes
# Movies (larger files, more patient)
IgnoreTorrentsYoungerThan = 300 # 5 minutes
# Music/Anime (very patient)
IgnoreTorrentsYoungerThan = 600 # 10 minutes
4. Use Tracker-Specific Overrides¶
# Slow public tracker
[[Radarr-Movies.Torrent.Trackers.YTS]]
UseTracker = true
TrackerURLInclude = ["yts.mx"]
MaximumETA = -1 # Disable ETA limit
MaxSeedingTime = 3600 # Seed for 1 hour only
# Fast private tracker
[[Radarr-Movies.Torrent.Trackers.PrivateHD]]
UseTracker = true
TrackerURLInclude = ["privatehd.to"]
MaximumETA = 1800 # 30 minutes
MaxSeedingTime = 86400 # Seed for 24 hours
5. Monitor Exclusions Impact¶
Check logs for excluded files:
[DEBUG] Excluded folder: /data/torrents/movie-2023/Extras/
[DEBUG] Excluded file: sample.mkv (matches: \\bsample\\b)
Adjust patterns if too many valid files are excluded.
Related Documentation¶
- Seeding Configuration - Complete seeding and ratio management
- qBittorrent Configuration - qBittorrent connection setup
- Health Monitoring - Torrent health checks
Summary¶
- File filtering - Control which files are downloaded with allowlists and exclusions
- Processing timing - Delay processing with
IgnoreTorrentsYoungerThan - Completion thresholds - Set
MaximumETAandMaximumDeletablePercentage - Stalled handling - Configure
StalledDelayandDoNotRemoveSlow - Tracker overrides - Custom settings per tracker for optimal performance
- Start conservative and enable automation after testing