Common Issues & Solutions¶
This page covers the most frequently encountered issues with qBitrr and their solutions.
Contents¶
- Connection Issues
- Torrent Processing Issues
- Search Issues
- Import Issues
- Performance Issues
- Disk Space Issues
- Configuration Issues
- WebUI Issues
- Logging Issues
- Getting More Help
- Error Reference
- Related Documentation
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 qBitrr after config change
Arr Instance Connection Failures¶
Symptom: "Connection refused" when connecting to Radarr/Sonarr/Lidarr/Readarr¶
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 qBitrr are in the same Docker network, use service name:
Torrent Processing Issues¶
Torrents Not Being Monitored¶
Symptom: qBitrr starts but doesn't process any torrents¶
Common Cause: Category Mismatch
The #1 reason qBitrr doesn't process torrents is mismatched categories.
How to Fix:
- Check Arr download client category:
- Radarr/Sonarr/Lidarr/Readarr → Settings → Download Clients
- Click your qBittorrent client
-
Note the Category field (e.g.,
radarr-movies) -
Check qBitrr config:
-
Check existing torrents in qBittorrent:
- Open qBittorrent
- Look at the Category column for your Arr torrents
-
Categories must match between qBittorrent, Arr, and qBitrr
-
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: qBitrr 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 qBitrr 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
-
"Downloading metadata" (
metaDL) is handled by the sameStalledDelaysetting -
Enable re-search for stalled:
-
Check logs for stall detection:
Search Issues¶
Automated Searches Not Running¶
Symptom: qBitrr 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 year search:
Older builds could log Search loop crashed unexpectedly ... Exception: (415, '') while loading years (episode.get for SearchByYear). pyarr does not map HTTP 415 to a typed error, so the worker treated it as fatal.
qBitrr now backs off for 5 minutes on those Arr HTTP failures instead of exiting, and skips a single series that fails episode.get so the rest of the library still searches. A connectivity outage during episode fetches is raised immediately (not retried per series). If every series fails, DB ingest also backs off instead of marking the refresh complete.
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 qBitrr. 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: qBitrr searches but Arr reports "No results"¶
This is usually an Arr/indexer issue, not qBitrr.
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
- qBitrr'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:
- qBitrr 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 qBitrr 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¶
qBitrr 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 qBitrr:
- 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 qBitrr is reading the correct file
-
Enable debug logging:
Look for config loading messages
Config File Regenerates or Resets¶
Possible Causes:
- File permissions:
- qBitrr can't write to config file
-
Solution: Fix permissions:
-
Invalid syntax:
- qBitrr detected invalid TOML and regenerated defaults
-
Solution: Restore from backup, fix syntax errors
-
Config migration:
- qBitrr 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 qBitrr
-
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 qBitrr operationsRadarr-Movies.log– Arr-specific processing-
WebUI.log– WebUI-related issues -
Check FAQ: Frequently Asked Questions
-
Report issue on GitHub: github.com/Feramance/qBitrr/issues
- Include config (redact API keys!)
- Include relevant log excerpts
- Describe expected vs. actual behavior
Error Reference¶
Exception Hierarchy¶
qBitrr uses a custom exception hierarchy for error handling:
qBitManagerError (base)
├── UnhandledError
├── ConfigException
├── ArrManagerException
│ └── RestartLoopException
├── SkipException
├── RequireConfigValue
├── NoConnectionrException
└── DelayLoopException
Python Exceptions¶
| Exception | Purpose | Common Causes |
|---|---|---|
qBitManagerError | Base exception for all qBitrr errors | Catch-all for qBitrr exceptions |
UnhandledError | Unhandled edge case encountered | Unexpected API response, unknown torrent state |
ConfigException | Configuration parsing/validation error | Invalid TOML syntax, missing required fields |
RequireConfigValue | Specific config value missing | Missing API key, missing host |
ArrManagerException | Arr-related error | API connection failure, invalid response, instance offline |
RestartLoopException | Signal event loop to restart | Config changed, manual restart requested |
DelayLoopException | Delay next event loop iteration | Network failure, temporary API unavailability |
NoConnectionrException | Connection failure with retry logic | Cannot connect to qBittorrent or Arr instance |
SkipException | Skip current torrent, continue next | Torrent doesn't match criteria, already processed |
Exit Codes¶
| Code | Meaning | Description |
|---|---|---|
| 0 | Success | qBitrr 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¶
qBitrr 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 |