Automation

Cleanuparr on a Seedbox: Automatic Cleanup for a Stuck Arr Queue

Sonarr and Radarr are good at asking for a file and bad at noticing they never got one. Cleanuparr watches the queue, strikes downloads that stall, crawl or refuse to import, deletes them and searches again. Here is how it runs on an appbox, and which of its safety guards work on which torrent client.

What Cleanuparr Actually Fixes

Sonarr and Radarr are good at asking for a file. They are bad at noticing they never got one.

A release gets grabbed, lands in your client, and sits there. Zero peers. Or it crawls at 40 KB/s and says nine days to go. Or it completes and the import fails because the title is not what Sonarr expected. In all three the queue entry stays put, the episode stays missing, and nothing searches again until you notice and click something.

Cleanuparr notices for you. It watches your arr queues, gives a bad download a strike each time it looks bad, and once the strikes run out it removes the download, blocks that release so it will not be grabbed again, deletes it from the client, and tells the arr to search for a replacement. That last part is what matters. Plenty of tools delete a stuck torrent. Cleanuparr replaces it.

It is free and open source under GPL-3.0, and it is active: the latest release, v2.10.8, went out on 24 September 2026, and the repo had commits the day before I wrote this.

The Three Jobs, and How Often They Run

Cleanuparr is three recurring jobs rather than one. Each has its own schedule, and each can be turned off on its own.

Job Default schedule What it does
Malware Blocker Every 5 minutes Checks the files inside each queued download against a blocklist or whitelist. If every file is blocked, the download is removed, blocked and re-searched
Queue Cleaner Every 5 minutes Strikes downloads that are stalled, stuck on metadata, slow or failing to import, and removes them when the strikes run out
Download Cleaner Every hour Removes or stops finished torrents once they hit your ratio and seed-time rules, and moves aside files no torrent claims

The defaults behave sensibly. Any of the three will also take a Quartz cron expression if five minutes is too eager for you.

The Strike System, in Plain Terms

A strike is not a deletion. It is a note that this download looked bad once.

The Queue Cleaner walks your queue and asks four questions per item: is the download speed zero, is it stuck downloading metadata, is it importing badly, is it crawling. Any yes earns a strike. Ask again five minutes later and a download that has genuinely died keeps collecting them, while one that hit a rough patch does not. Only at the maximum strike count does anything get deleted.

The failed-import setting has a quirk worth knowing: zero turns failed-import cleaning off, and the lowest number that turns it on is three. Upstream will not let you set one, which is the right call, because arrs report an import as failed for reasons that clear themselves, "recently aired" being the usual one.

Turn on one setting before you trust any of this: the Internet Connectivity Check, in General settings. If the box briefly loses outbound access, every torrent in the queue looks stalled at once, and without that check the next run strikes the whole lot. With it on, Cleanuparr skips the run.

Installing It on a Bytesized Appbox

One click in the panel. Find Cleanuparr in the app library, install it, and it comes up on its own address at cleanuparr.USERNAME.SERVER.bysh.me, where USERNAME is your panel username in lowercase and SERVER is your server name.

Cleanuparr has its own account system with a first-run setup wizard, and our installer completes that wizard for you: it creates the admin account with your appbox username and a generated password before the address ever works, so you never land on an open setup page. The password is on the app card. Change it in Cleanuparr's own settings if you like, and it survives an upgrade.

Everything it remembers lives in one folder, ~/.config/cleanuparr: configuration, logs and a small embedded database. No separate database to run. An upgrade keeps that folder, so your strike counts, blocklists and seeding rules carry over. An uninstall removes it, so a reinstall starts from scratch. Worth knowing before you reinstall something you spent an evening configuring.

Then point it at your apps. Under Settings you add each arr with its URL and API key, and your client with its own credentials. Everything is on the same box, so those URLs are local and there is no port forwarding in this step, which is most of the reason people give up when they try to run Cleanuparr at home.

Which Torrent Client You Should Be On

This is the part nobody writes down, and it decides whether Cleanuparr is safe to let loose.

Cleanuparr supports five clients: qBittorrent, Deluge, Transmission, uTorrent and rTorrent, with qBittorrent marked upstream as the recommended one. We ship three of the five, and they are not equivalent here, because two of Cleanuparr's most useful guards are only wired up for some clients.

Guard What it stops qBittorrent Deluge rTorrent
Min Seeders Deleting the last copy of something rare, by keeping a torrent while its seeder count is below your floor Yes Yes Not listed upstream
Max Inactive Days Deleting a torrent that has met your ratio but has only just gone quiet Yes Not listed upstream Not listed upstream

Both guards fail closed, which is the reassuring bit: if the client cannot report a seeder count or a last-active time, Cleanuparr keeps the download rather than deleting it. rTorrent does not get you silently wrong behaviour, it gets you fewer levers.

So: a free choice of client means qBittorrent. Already happy on Deluge and you lose only the inactivity guard. On rTorrent, leave the Download Cleaner's deletion rules off and use Cleanuparr for the queue half, which needs none of this. The full argument between the three is in the client comparison guide.

If You Seed on a Private Tracker, Read This First

Cleanuparr deletes things. On a private tracker, deleting the wrong thing costs you a hit-and-run, and enough of those cost you the account. Upstream puts a warning on every setting that can do it. Take them seriously. Three settings decide your exposure:

The Download Cleaner has a fourth lever, better than a blanket exemption: seeding rules carry a privacy type, so one rule can delete public torrents at ratio 2 while a second rule on the same category applies only to private ones and holds on far longer. Rules are evaluated in priority order and the first match wins, so put the careful rule above the blunt one. If you are building ratio deliberately, the private tracker guide is the companion piece, and autobrr and cross-seed fill the disk that Cleanuparr then manages.

The Malware Blocker and What It Really Blocks

The name oversells it slightly. The Malware Blocker reads the file list inside each queued download and matches the names against a list, either a blacklist where a match is blocked or a whitelist where anything not matching is blocked. Patterns are simple: *example, example*, *example*, an exact word, or regex: and a real regex. The project publishes maintained lists at cleanuparr.pages.dev/static/blacklist, a blacklist_permissive variant, and two whitelists. Their own lists refresh every five minutes; any other remote URL you supply refreshes every four hours.

One default matters before you trust it with a mixed torrent. Out of the box a download is removed only when all of its files are blocked, so a torrent holding one dodgy executable alongside a legitimate film has that one file marked as skipped and keeps the rest. A "delete if any file is blocked" switch exists for when you would rather lose the film than keep the executable.

What It Will Not Do

Cleanuparr cleans the download queue, not your library. Different job: Maintainerr and Deleterr are what decide which films leave your Plex library after nobody watched them.

It also will not fix bad quality profiles. If Sonarr keeps grabbing releases that fail to import because the profile lets through a format your setup cannot handle, Cleanuparr will faithfully strike, delete and re-grab the same class of release forever. That is a profile problem, and TRaSH Guides and Recyclarr is the fix.

Two more limits. Cleanuparr talks to the arrs, not to Prowlarr, so if your indexers return nothing at all then Prowlarr or a Cloudflare solver is where to look. And Readarr appears in Cleanuparr's supported list, but Readarr was retired in June 2025, so do not build anything new on it: see the Readarr guide.

Settings I Would Start With

Connect one arr and one client, then leave it in this shape for a week:

Then read the logs. Cleanuparr writes down every strike and removal with a reason, and a week of that tells you more about your own setup than any guide will.

FAQ

Is Cleanuparr free? Yes. GPL-3.0, no paid tier, no licence key. The only account involved is the local admin login the panel creates for you.

Will it delete files I want to keep? It can, which is why the guards above exist. Start with Ignore Private on and the Download Cleaner off.

Does it replace the Arr stack? No, it sits beside it. See the full Arr stack guide for the pipeline it plugs into.

Which apps does it talk to? Your download client, plus Sonarr, Radarr, Lidarr, Whisparr and a few others upstream. We ship all four of those arrs.

Does it need Docker knowledge? No. It is a Docker app underneath and the panel handles that. If you want your own containers alongside it, that is also available.

Ready to Set It Up?

Browse Appbox plans from EUR 5 a month, install Cleanuparr and your arrs from the panel, connect them under Settings, and stop finding out about dead downloads a fortnight late.

15+ years of seedbox hosting 4.9/5 Trustpilot (301 reviews) 95+ one-click apps

Ready to Get Started?

Set up your own media server in under two minutes.