We all start our self-hosted media journeys with the purest intentions, ripping a few Blu-rays, naming the files perfectly, and organizing them into a folder structure we swear to follow for posterity. I started my Plex server on my first NAS this way too, but just a few months later, that pristine directory devolved into a wasteland of dumped files, incorrectly named folders, random subtitle files spilling over, and other mysterious sub-folders.

I could dedicate an afternoon to fixing this myself, but with a collection spanning several terabytes, I don't look forward to the errand. Eventually, human error creeps in. You upgrade a movie to 4K and forget to delete the 1080p copy. You migrate storage drives and accidentally duplicate an entire directory. Before you know it, you are hemorrhaging storage space on redundant files. Thankfully, a Redditor coded a simple automation to rein in the chaos on even massive Plex libraries.

Reclaimerr enters the fray

It's not Maintainerr, or even an Arr stack app

There is no shortage of cleanup scripts floating around GitHub, and for a long time, the self-hosted community leaned heavily on tools like Maintainerr. While that is powerful, it operates on the assumption that you're already entrenched in the "*arr" ecosystem, comprising utilities like Sonarr, Radarr, etc., though Maintainerr can run independently. Moreover, Reclaimerr's creator explains that Maintainerr didn't support Jellyfin and Emby when development began, and Jellyfin v3's support is still quite basic.

Despite the similar nomenclature, Reclaimerr takes a more practical approach. It's a standalone utility that hooks into your Plex or Jellyfin API, disregarding how you add media files to the hard drives. The tool doesn't require a complex web of third-party download managers either, because it just scans your media server for duplicates and trash, and uses a logic engine to determine the superior file. This engine evaluates your duplicates based on a hierarchy of quality metrics—resolution, bitrate, and HDR status — and intelligently decides which version to purge and reclaim storage. The process entirely bypasses manual navigation of folder structures, with the media server API doing all the heavy lifting.

Setting up Reclaimerr on a live media server is very simple using Docker or another containerization system. Here's an example for the Docker Compose command, where you need to ensure the correct UID and GID are passed to the Reclaimerr container so it can automatically delete duplicates without running into the Permission Denied error containerized home server users know all too well. Thereafter, the config.yaml file pointing to the right media volumes, your Plex API key, and the specific retention rules ensure smooth operation.

services:

reclaimerr:

image: ghcr.io/jessielw/reclaimerr:latest

container_name: reclaimerr

restart: unless-stopped

env_file: ".env"

volumes:

- ./data:/app/data

ports:

- "8000:8000"

Reclaimerr

Your library governed by your rules

Plenty of filtration options

There is one golden rule when deploying this tool, though. Reclaimerr has a dry-run mode enabled by default in its configuration, and we suggest leaving it that way. The script runs a full scan and logs its findings without taking any action on the detected duplicates. You should never give an automated script unbridled delete access to your carefully curated media library until you have audited its logic and confirmed it behaves exactly as expected.

I'll admit to a level of hubris before my first dry run, since I figured my library was mostly clean. I ran the first scan and checked the logs. Almost instantly, Reclaimerr flagged a duplicate movie buried deep within a secondary directory. I had grabbed a 1080p web-rip months after backing up a physical copy, completely forgetting the original. It was the sole-detected duplicate, hidden behind a different filename. I've also set up independent rules for deleting content I don't rewatch often, say less than twice a year, and a size filter for deleting small samples that are downloaded accidentally.

It's worth noting that automations like Reclaimerr might still struggle with edge cases, such as two files for the same movie where one's a well-encoded high-bitrate 1080p REMUX while the other's a heavily compressed 4K rip with higher resolution but a poorer viewing experience overall. In such cases, it's just important to set up rules in absolute detail, and we hope the options on Reclaimerr will only get better soon.

Reddit loves this, and you might too

Installing a containerized manager for your media manager may seem redundant, but Reclaimerr can be useful if you've automated content downloads and updates on your media server. Although this is a relatively recent project that's still in beta, users on Reddit are fawning over the "set it and forget it" nature of the tool. Once configured right, Reclaimerr can operate silently in the background, keeping storage bloat at bay without requiring weekly manual intervention.

If you haven't started with Docker yet (you're missing out big time), Reclaimerr is also available as a standalone app for Windows, Linux, and macOS. This tool can be a blessing to your sanity when managing 50TB of data, but it is reduced to a nice-to-have for a highly curated library of fifty films, where you might prefer manual control instead.

OS
Windows, macOS, Linux
Individual pricing
Free, $6.99/month, $250/lifetime