finds.dev← search

// the find

HaveAGitGat/Tdarr

★ 4,160 · Makefile · NOASSERTION · updated Jun 2026

Tdarr - Distributed transcode automation using FFmpeg/HandBrake + Audio/Video library analytics + video health checking (Windows, macOS, Linux & Docker)

Tdarr is a self-hosted, distributed media transcoding automation system. You point it at your media library, define a plugin stack of conditional rules, and it dispatches FFmpeg/HandBrake jobs across as many nodes as you have spare hardware. The target user is someone running a Plex/Jellyfin/Emby setup who wants to bulk-normalize their library to h265 or a specific container without babysitting it.

The distributed worker model is genuinely useful — spin up nodes on spare machines, they register with the server, and load is split automatically across CPU and GPU workers. The plugin stack approach is well-designed: each plugin is conditional so it only acts when needed, avoiding unnecessary re-encodes. Scheduling is granular (per-library, 7-day/24-hour grid) which matters when you want transcoding to run at 3am and not kill your NAS during movie night. The stall detector and worker health checking show real operational maturity from someone who has actually run this at scale.

The plugin system is JavaScript, which is fine, but the plugin creator UI is a simplified abstraction over it — you hit a ceiling fast and end up dropping to raw JS anyway, at which point you're debugging in a browser-based editor with minimal tooling. The repo itself is mostly a Dockerfile and CI config; the actual application source appears to be a closed binary distributed via GHCR, which means you cannot audit or patch it and are dependent on the maintainer for security fixes. The web UI runs a local Express server bound to a port with no built-in auth, so you're expected to put it behind a reverse proxy — this is documented but not enforced, and many home users won't bother. At large library sizes the SQLite-backed (or internal DB) scanning can be slow and the initial library scan is a blocking pain point.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →