Repolode
jon4hz

jon4hz/jellysweep

Smart cleanup tool for Jellyfin that marks and removes old, unwatched movies and TV shows based on viewing stats and user requests.

Stars
260
Forks
22
Open issues
45
Last commit
2 days ago

What is it?

Jellysweep scans your Jellyfin library and, using filters you define per library, decides which movies and TV shows are no longer needed. It checks Jellyseerr for requests and Jellystat or Streamystats for viewing history, and it can protect favorites and items used by Tunarr channels. Eligible items are marked for deletion by adding tags in Sonarr or Radarr, so the process stays visible in tools you already use.

Users can ask to keep specific content through the built-in web interface, and admins approve or decline those requests. Affected users can be notified by email, ntfy, or web push. After a configurable grace period the items are deleted. Dry-run mode is enabled by default, so you can review what would be marked before any deletion happens.

Cleanup can be tuned for TV series: delete whole series, keep the first N episodes, or keep the first N seasons. Disk usage thresholds shorten the grace period when storage runs low. Jellysweep also creates Jellyfin collections listing media scheduled for removal.

Key features

  • 01Filters per library based on content age, release date, last stream time, and size
  • 02Tag-based control through Sonarr and Radarr
  • 03Disk usage thresholds that shorten the deletion grace period
  • 04Selective TV cleanup modes that keep the first N episodes or seasons
  • 05User keep requests with admin approval and notifications by email, ntfy, or web push
  • 06Jellyfin authentication or OIDC/SSO login for the web interface

Use cases

  • Freeing storage on a home Jellyfin server by removing content nobody has watched for months
  • Keeping a Jellyfin library tidy while letting users request exceptions through the web interface
  • Trimming long TV series down to their early seasons or episodes to save space

Quick start

  1. 1

    Create a compose.yml file with the Jellysweep service definition

  2. 2

    Create config.yml before starting the container

    vim ./config.yml
  3. 3

    Start the service with Docker Compose

    docker compose up -d

Things to know

  • Requires access to Sonarr, Radarr, Jellystat or Streamystats, and Jellyseerr.
  • Always test with dry-run mode first, since it deletes media files.

In collections

Topics

FAQ

What is jellysweep?
Smart cleanup tool for Jellyfin that marks and removes old, unwatched movies and TV shows based on viewing stats and user requests. Jellysweep scans your Jellyfin library and, using filters you define per library, decides which movies and TV shows are no longer needed. It checks Jellyseerr for requests and Jellystat or Streamystats for viewing history, and it can protect favorites and items used by Tunarr channels. Eligible items are marked for deletion by adding tags in Sonarr or Radarr, so the process stays visible in tools you already use.
Is jellysweep free to use? What license does it have?
jellysweep is open source under the GPL-3.0 license. Check the license terms before using it in commercial products.
Is jellysweep still maintained?
Actively maintained. The last commit to jellysweep was on Nov 6, 2026.
What can I use jellysweep for?
Freeing storage on a home Jellyfin server by removing content nobody has watched for months Keeping a Jellyfin library tidy while letting users request exceptions through the web interface Trimming long TV series down to their early seasons or episodes to save space
How do I install jellysweep?
Create a compose.yml file with the Jellysweep service definition Create config.yml before starting the container: vim ./config.yml Start the service with Docker Compose: docker compose up -d
Where can I get jellysweep?
The source code and installation instructions are on GitHub: https://github.com/jon4hz/jellysweep

Summary generated by AI from the project's README. GitHub stats refresh daily.

Related projects