Common Issues & Solutions¶
This page covers the most frequently encountered issues with Torrentarr and their solutions.
Connection Issues¶
qBittorrent Connection Failures¶
Symptom: "Connection refused" or "Connection timeout"¶
Possible Causes:
- qBittorrent is not running
- Wrong
HostorPortin config - Firewall blocking connection
- qBittorrent Web UI is disabled
Solutions:
-
Verify qBittorrent is running:
-
Check Web UI is enabled:
- Open qBittorrent
- Go to Tools → Options → Web UI
- Ensure "Web User Interface (Remote control)" is checked
-
Note the IP address and port
-
Test connection manually:
Expected: HTTP 200 response with version number -
Check firewall rules:
-
Docker: Use correct host:
- Same network: Use container name (e.g.,
qbittorrent) - Different network: Use host IP or
host.docker.internal(macOS/Windows)
Symptom: "Invalid username or password"¶
Possible Causes:
- Wrong credentials in config
- Authentication bypass enabled but credentials still provided
- Recent password change not reflected in config
Solutions:
- Verify credentials:
- Open qBittorrent Web UI manually
- Try logging in with the same credentials from
config.toml -
If login fails, update credentials in qBittorrent settings
-
Check authentication bypass:
- In qBittorrent: Tools → Options → Web UI → Authentication
-
If "Bypass authentication for clients on localhost" is enabled:
-
Test login manually:
Expected:curl -i --header "Referer: http://localhost:8080" \ --data "username=admin&password=yourpass" \ http://localhost:8080/api/v2/auth/loginOk.response
Symptom: Connection errors or API failures¶
Possible Causes:
- Incorrect host or port configuration
- Authentication credentials are wrong
- qBittorrent WebUI is not enabled
- Network connectivity issues
Solutions:
- Verify qBittorrent is running and accessible:
- Open qBittorrent WebUI in a browser:
http://localhost:8080 -
Check Tools → Options → Web UI is enabled
-
Check configuration:
-
Test connectivity manually:
-
Restart Torrentarr after config change
Arr Instance Connection Failures¶
Symptom: "Connection refused" when connecting to Radarr/Sonarr/Lidarr¶
Solutions:
-
Test Arr API manually:
-
Verify URI format:
-
Check API key:
- Copy API key from Arr instance: Settings → General → Security
- Paste into
config.toml(no extra spaces!) -
API keys are case-sensitive
-
Docker networking:
- If Arr and Torrentarr are in the same Docker network, use service name:
Torrent Processing Issues¶
Torrents Not Being Monitored¶
Symptom: Torrentarr starts but doesn't process any torrents¶
Common Cause: Category Mismatch
The #1 reason Torrentarr doesn't process torrents is mismatched categories.
How to Fix:
- Check Arr download client category:
- Radarr/Sonarr/Lidarr → Settings → Download Clients
- Click your qBittorrent client
-
Note the Category field (e.g.,
radarr-movies) -
Check Torrentarr config:
-
Check existing torrents in qBittorrent:
- Open qBittorrent
- Look at the Category column for your Arr torrents
-
Categories must match between qBittorrent, Arr, and Torrentarr
-
Enable debug logging to verify:
Look for:Processing category: radarr-moviesin logs
Other Causes:
- Missing tags: Arr instances need to tag torrents. Check
Settings.Taglessif you don't use tags. - Instance disabled: Verify
Managed = truein the Arr section - qBit disabled: Check
[qBit] Disabled = false
Torrents Instantly Marked as Failed¶
Symptom: Torrents are added but immediately fail¶
Possible Causes:
- Too young: Torrentarr ignores torrents younger than
IgnoreTorrentsYoungerThan(default: 180 seconds)
Solution: Wait 3 minutes, or lower the value:
- File extension not allowed:
Solution: Add missing extensions to allowlist:
- FFprobe validation failure:
Solution: Check FFprobe logs or disable validation temporarily
- ETA exceeds maximum:
Solution: Increase or disable MaxETA:
Stalled Torrents Not Being Handled¶
Symptom: Torrents stall but Torrentarr doesn't remove them¶
Solutions:
- Check stalled delay setting:
-1= Disabled (never remove stalled)0= Immediate removal-
>0= Wait N minutes before removal -
Verify torrent is actually stalled:
- In qBittorrent, check torrent status
-
"Stalled" means no peers and no progress
-
Enable re-search for stalled:
-
Check logs for stall detection:
Search Issues¶
Automated Searches Not Running¶
Symptom: Torrentarr runs but doesn't search for missing media¶
Root Cause: SearchMissing is the master switch for all search features.
Solutions:
- Enable SearchMissing (required):
Important: DoUpgradeSearch, QualityUnmetSearch, CustomFormatUnmetSearch, and request processing (Overseerr/Ombi) will ONLY work if SearchMissing is enabled.
- Check search loop startup in logs:
You should see:
Search loop starting for Radarr-Movies (SearchMissing=True, ...)
Search loop initialized successfully, entering main loop
- If search loop crashes or exits unexpectedly:
If you see "Search loop crashed", check the full traceback above that line.
- HTTP 415 / unmapped Arr errors during Sonarr episode fetch:
Older qBitrr builds could log Search loop crashed unexpectedly ... Exception: (415, '') while loading years (episode.get for SearchByYear). Torrentarr loads years from the local DB, but the same HTTP 415 on GET /api/v3/episode during Sonarr sync used to skip only that series (and still can). Instance-wide connectivity failures abort remaining series. If every series episode fetch fails, sync is not treated as complete and the search loop backs off.
An empty 415 body often comes from a reverse proxy or WAF on GET /api/v3/episode. Test that URL with X-Api-Key from the same network as Torrentarr. Workaround: set SearchByYear = false for that Sonarr section.
- Common mistake - SearchLoopDelay:
Note: SearchLoopDelay controls the delay between individual searches in a batch, not whether searches run.
- Verify Arr has missing media:
- Open Radarr/Sonarr → Wanted → Missing
-
If empty, there's nothing to search for
-
Check indexer connectivity:
- In Arr instance: System → Status
- Ensure indexers are enabled and reachable
Overseerr/Ombi Requests Not Processing¶
Symptom: User requests aren't being searched¶
Solutions:
-
Enable request processing:
-
Verify connection details:
-
Test API manually:
-
Check approval status:
- If
true, make sure requests are approved in Overseerr -
Set to
falseto process all requests -
Verify 4K instance flag:
Must match your Overseerr configuration
Searches Trigger But Find Nothing¶
Symptom: Torrentarr searches but Arr reports "No results"¶
This is usually an Arr/indexer issue, not Torrentarr.
Solutions:
- Test search in Arr directly:
- Go to Wanted → Missing
- Click Search for a specific item
-
Check if Arr finds results
-
Check indexer configuration:
- Settings → Indexers
- Test each indexer
-
Review indexer logs for errors
-
Check indexer rate limits:
- Some indexers have API rate limits
- Torrentarr's searches count against your limit
-
Review indexer stats/logs
-
Verify quality profile settings:
- Overly strict quality profiles may filter out all results
-
Temporarily lower standards to test
-
Check custom format scores:
- If using custom formats, high minimum scores may block releases
- Temporarily disable CF scoring to test
Import Issues¶
Files Not Importing After Download¶
Symptom: Torrent completes but Arr doesn't import files¶
Solutions:
- Check path mapping:
- qBittorrent's save path must be accessible to Arr
- Common Docker issue: mismatched volume paths
Example (Docker):
qbittorrent:
volumes:
- /mnt/data/torrents:/downloads
radarr:
volumes:
- /mnt/data/torrents:/downloads # Must match!
-
Verify CompletedDownloadFolder:
-
Check file permissions:
-
Enable instant import:
- Torrentarr triggers instant imports automatically
-
Check logs for import triggers:
-
Manual import test in Arr:
- Activity → Queue
- Click Manual Import for the download
- Check error messages
Import Succeeds But Quality Is Wrong¶
Symptom: Files import but don't match expected quality¶
This is usually an Arr quality profile issue.
Solutions:
- Review quality profile:
- Settings → Profiles
- Check which qualities are allowed
-
Verify upgrade conditions
-
Check custom formats:
- Settings → Custom Formats
- Review scoring and minimum scores
-
Ensure downloaded file meets requirements
-
Use quality upgrade search:
-
Enable temp profile switching:
This grabs something initially, then upgrades later
Performance Issues¶
High CPU Usage¶
Possible Causes:
-
Too frequent loop processing:
Solution: Increase to 5-10 seconds: -
Too many concurrent searches:
Solution: Lower to 3-5: -
Database locked:
- Multiple Torrentarr instances accessing same database
- Solution: Use separate config directories for multiple instances
High Memory Usage¶
Possible Causes:
- Large torrent libraries:
- Processing thousands of torrents uses significant RAM
-
Solution: Split libraries across multiple Arr instances
-
Extensive logging:
Solution: Use INFO or WARNING: -
WebUI live updates:
Solution: Disable if not needed:
Disk Space Issues¶
Torrentarr Doesn't Pause Torrents When Disk Is Full¶
Solutions:
-
Enable AutoPauseResume:
-
Set FreeSpace threshold:
Supported units: K (KB), M (MB), G (GB), T (TB) -
Set FreeSpaceFolder:
Must be the mount point or directory to monitor -
Verify path is correct:
Torrents Removed But Disk Space Not Freed¶
Possible Causes:
-
Files copied, not moved:
Solution: Use Move to free space: -
Seeding torrents:
- Files remain until seeding goals met
-
Solution: Adjust seeding limits:
-
MaximumDeletablePercentage protection:
Configuration Issues¶
Config Changes Not Taking Effect¶
Solutions:
- Restart Torrentarr:
- Config is loaded only at startup
-
Changes require restart to apply
-
Check config syntax:
- TOML syntax errors prevent loading
-
Test with online TOML validator
-
Check config location:
- Docker:
/config/config.toml - Native:
~/config/config.toml -
Verify Torrentarr is reading the correct file
-
Enable debug logging:
Look for config loading messages
Config File Regenerates or Resets¶
Possible Causes:
- File permissions:
- Torrentarr can't write to config file
-
Solution: Fix permissions:
-
Invalid syntax:
- Torrentarr detected invalid TOML and regenerated defaults
-
Solution: Restore from backup, fix syntax errors
-
Config migration:
- Torrentarr auto-migrates old configs
- Check logs for migration messages
- Backups created at
/config/config.toml.backup_*
WebUI Issues¶
Can't Access WebUI¶
Solutions:
-
Check WebUI settings:
-
Test connection:
-
Check firewall:
-
Docker port mapping:
WebUI Requires Token But I Don't Have One¶
Solution:
-
Token is optional:
-
If Token is set but lost:
- Edit
/config/config.toml - Set
Token = "" -
Restart Torrentarr
-
Access logs without WebUI:
Logging Issues¶
Logs Not Being Created¶
Solutions:
-
Enable logging:
-
Check log directory:
- Docker:
/config/logs/ - Native:
~/logs/ -
Verify directory exists and is writable
-
Check permissions:
Logs Too Verbose or Too Quiet¶
Adjust logging level:
Recommendations:
- Production:
INFOorWARNING - Troubleshooting:
DEBUG - Development:
TRACE(very verbose!)
Getting More Help¶
If your issue isn't covered here:
-
Enable debug logging:
-
Collect relevant logs:
Main.log– Core Torrentarr operationsRadarr-Movies.log– Arr-specific processing-
WebUI.log– WebUI-related issues -
Check FAQ: Frequently Asked Questions
-
Report issue on GitHub: github.com/Feramance/Torrentarr/issues
- Include config (redact API keys!)
- Include relevant log excerpts
- Describe expected vs. actual behavior
Error Reference¶
Exception Hierarchy¶
Torrentarr uses a custom exception hierarchy for error handling (C# types in Torrentarr.Core / Infrastructure). Base and derived types represent configuration, connection, and Arr-related failures.
Exit Codes¶
| Code | Meaning | Description |
|---|---|---|
| 0 | Success | Torrentarr exited normally |
| 1 | General Error | Unspecified error |
| 2 | Config Error | Configuration file error |
| 3 | Connection Error | Cannot connect to required service |
| 4 | Permission Error | Insufficient file/directory permissions |
| 5 | Database Error | Database initialization or access error |
| 130 | SIGINT | User interrupted (Ctrl+C) |
| 143 | SIGTERM | Terminated by system or user |
HTTP Status Codes¶
Torrentarr WebUI API returns standard HTTP status codes:
| Code | Meaning | Description |
|---|---|---|
| 200 | OK | Request succeeded |
| 400 | Bad Request | Invalid request parameters |
| 401 | Unauthorized | Missing or invalid API token |
| 404 | Not Found | Endpoint or resource not found |
| 500 | Internal Server Error | Server error |