Auditarr · github.com/chrizantoz/auditarr

How Auditarr works

Every night it looks at every file in your Plex library through Sonarr, Radarr and Bazarr, finds what will not play right, fixes what is safe to fix, and tells you about the rest in plain words. Nothing is ever deleted; anything it moves can be put back with one click.

The nightly loop

What it reads Sonarr · Radarrwhich files exist, what language they should be Bazarrwhich files still want subtitles Plexwhat is indexed, what is up next, which player Tautulli optionalwho watched what, and when The media filesffprobe: streams, languages, length, header Auditarr one container · runs at 05:00 · about 25 min per 10,000 files 1 · Listevery file the arrs know, plus strays on disk 2 · Probeonly new or changed files, cached by size and date 3 · Checkabout 30 checks, each finding gets a plain sentence 4 · Fix what is safeonly the switches you turned On, all reversible 5 · Reportpage, morning push, self-test, state backup What you get The pageToday · Findings · Trash · History One morning push"3 need you · 41 fixes overnight" Commands to the arrsrescan, search, re-download, tag Subtitles via Bazarrsearches, and AI (Whisper) when none exist A new download does not wait for the night: Sonarr and Radarr call Auditarr the moment a file lands, and it is checked within a minute.
The arrs say what the library should be, the files say what it is, and a finding is the gap between the two. Auditarr never scans your whole disk from scratch: it probes only what is new or changed, so a 10,000-file library takes about 25 minutes the first night and minutes after that.

What a finding is

One file (or one missing episode), one problem, one sentence that says what is wrong and what fixes it. The coloured word says how bad:

won't playwrongwaitingFYI
Won't playNo audio or no video, a zero-byte or corrupt file, a sample instead of the episode.
WrongFrench audio on an English show, a Blu-ray tag on a 720p file, an episode that is really a different episode.
WaitingNo subtitles yet while Bazarr searches, a missing episode the indexers have not found, a duplicate copy.
FYI10-bit, AV1 or Dolby Vision that one of your players cannot play directly; an extended cut; a harmless title mismatch.

Every button is reversible

A file in your library duplicate · bad copy · lying header Move to trash · Re-download Fix header · Fix sync .media-audit-trash on the same disk · no copy · instant duplicates 3 days · re-downloads 14 days archives 30 days · countdown on the Trash tab Undo · one click, any time before the countdown ends countdown over purged for good re-download tracked a better copy arrives or the original comes back by itself A re-download that comes back with the same defect twice is treated as "that is how the show is", not as a broken file.
Nothing is deleted outright. Moves go to a trash folder on the same disk with a countdown, repairs are lossless remuxes that keep the original in the trash, and re-downloads are watched: if nothing better arrives, the original is put back automatically.

What it does on its own

Offnever acts Only reportwrites down what it would do Onacts, reversibly One switch per job duplicates · re-downloads · AI subtitles accept a language · fix headers · content checks Tonight's plan The Today panel lists exactly what the next run will do on its own, from the current findings, before it does it: "download a better copy of 3 · make AI subtitles for 10 · fix the time bar of 2"
Out of the box every switch that removes a file is Off. You turn things On one at a time, watch Only report for a few nights if you like, and the plan is always visible before the night runs it.

Where it runs

One containerDocker on Unraid or compose. Needs the arr addresses and keys (Setup page), and the media folder mounted at the same path the arrs use.
Its own databaseSQLite in the config folder: findings, actions, history, settings. Backed up nightly; a weekly drill boots the backup to prove it restores.
Tested like it mattersSynthetic media with known defects, a fake arr stack, a browser bot clicking the real buttons, chaos and slow-service drills, all in CI.
Safe by constructionA read-only mode for staging, a write ledger, an import hook with its own token, optional sign-in with a read-only account for the family.

Source, user guide and demo: github.com/chrizantoz/auditarr · live demo. GPL-3.0.