Reclaim
Open source · self-hosted · single container

Reclaim disk space from your media library — safely.

Point it at the same movie and TV folders Plex, Jellyfin, or Emby already use. Reclaim ranks files by predicted HEVC savings and lets you manually queue overnight ffmpeg re-encodes — replacing files in place only after verification.

No database server·No Redis·No sidecars·Just Docker + your library
Estimated recoverableestimate
18.4TB
Library total
58.4 TB
Reclaimable · 18.4 TBAfter encode · 30.2 TBAlready HEVC · 9.8 TB
Codec breakdown
h264
8,214 · 41.2 TB
hevc
3,110 · 9.8 TB
mpeg2
612 · 5.1 TB
vc1
204 · 2.3 TB

Features

Built for large homelab libraries

Mixed codecs, tens of terabytes, and a need to chip away safely — not batch-convert everything at once.

Scan your library

Walks your movie and TV folders with ffprobe. Skips unchanged files on rescans and detects renames via fingerprinting.

Rank by savings

Sorts candidates by predicted HEVC savings. After enough completed jobs, estimates switch from seed values to your observed results.

Queue manually

Select files, pick an encode profile, and confirm before anything runs. No surprise batch conversions.

Encode overnight

Jobs run inside a configurable time window — default midnight to 6 AM. A running job finishes even if the window closes.

Verify before swap

Every encode is checked (duration ±1 s, stream counts, resolution) before the original is touched.

Single container

Go API + embedded web UI + ffmpeg/ffprobe. No database server, Redis, or sidecar services.

How it works

Scan → rank → queue → encode

A manual-first workflow. You stay in control at every step.

01

Scan

Reclaim walks MOVIES_PATH and TV_PATH, probes each video file, and records codec, resolution, bitrate, size, and fingerprint.

02

Rank

Files are sorted by predicted HEVC savings. Filter by codec, resolution, library type, or search by path.

03

Queue

Select candidates, pick a profile, and confirm. Jobs are created but won't run until the encode window opens.

04

Encode

ffmpeg writes a .reclaim-tmp file. On pass: atomic swap. On fail: original untouched, temp kept for inspection.

Safety model

Your originals are never deleted first

Reclaim encodes to a temporary file, verifies the output, then atomically swaps. A crash mid-swap is recovered on next boot.

Replace sequence
1.originaloriginal.reclaim-backup(rename, atomic)
2..reclaim-tmporiginal(rename, atomic)
3.delete original.reclaim-backup

On failure: job marked failed, temp kept for inspection, original untouched. On boot: orphaned temps cleaned, interrupted backups restored.

Scope

What Reclaim does — and doesn't

Does

  • Scans mounted library folders directly
  • Ranks candidates by estimated savings
  • Replaces files in-place after verification
  • Runs encodes in a configurable overnight window

Does not

  • Integrate with Sonarr, Radarr, Plex, Jellyfin, or Emby APIs
  • Auto-encode your whole library
  • Use GPU/NVENC hardware encoding (CPU libx265 only)
  • Pause for active streams (time window only)

Install

Up and running in minutes

Single container. Mount your library read-write, open port 8080, create your login on first boot.

docker-compose.yml
# docker-compose.yml — edit media paths and TZ first
services:
  reclaim:
    image: ghcr.io/reecerose/reclaim:latest
    ports:
      - "8080:8080"
    volumes:
      - /path/to/movies:/movies:rw
      - /path/to/tv:/tv:rw
      - reclaim-data:/data
    environment:
      MOVIES_PATH: /movies
      TV_PATH: /tv
      DB_PATH: /data/reclaim.db
      TZ: America/New_York

volumes:
  reclaim-data:

1. Pull and start

docker compose up --build -d

2. Open the UI

Navigate to http://<nas-ip>:8080, create your login, and let the first scan run.

3. Read the docs

Full deployment guide for Unraid, Synology, and standalone binary.

docs/DOCKER.md

Throughput

CPU x265 is slow by design

Reclaim is meant to chip away safely over weeks and months of overnight windows — not batch-convert a 20,000-file library in a weekend.

PresetTypical speed
medium~0.5–1× realtime
fast~2–3× realtime
ultrafast~8–10× realtime

Ready to reclaim some space?

Clone the repo, point it at your library, and see how much you could save — before encoding a single file.