Install
Requires Jellyfin 10.11+ or 12.0+. One binary covers both host lines.
https://raw.githubusercontent.com/crackruckles/MediaDash/main/manifest.json
What it finds & fixes
Every fix type runs independently: Off · Detect only · Ask me first · Automatic.
Duplicate copies
Same movie, episode, song, audiobook or book twice — matched by TMDb/IMDb/TVDb, MusicBrainz, ISBN, or name + year.
Fix: deletes the worse copy — you choose what "worse" means.Files that won't play
Broken video (test-played at start, middle and end) plus book / comic integrity probes for EPUB / PDF / MOBI / AZW3 / CBZ / CBR / CB7.
Fix: removes them, after re-checking they're really broken.Oversized encodes
Anything above your resolution or bitrate ceiling. Detect-only audio ceiling flags high-bitrate MP3 / AAC.
Fix: re-encodes to your chosen codec + container (GPU-accelerated).Unwanted subtitles
Embedded tracks and external files in languages you don't keep.
Fix: lossless remux — no quality loss.Unwanted audio
Extra audio tracks outside your language list.
Fix: lossless remux — never touches a file's only audio track.Missing subtitles
Videos with no subtitle in any language you keep.
Fix: downloads via Jellyfin's configured providers (OpenSubtitles, etc.).Misplaced files
A movie under TV, an audiobook under Books, a comic under Music — per-type routing across Movies / TV / Anime / Music / Audiobooks / Books / Comics / Pictures.
Fix: moves it into the right library folder.Corrupt artwork
Zero-byte, truncated or unreadable poster / backdrop files inside Jellyfin's metadata cache.
Fix: deletes the broken image so Jellyfin re-fetches it. Never touches artwork you placed alongside your media.Malware & executables
.exe, .msi, .bat, .ps1, .sh, .lnk and other non-media files that don't belong in a media library — almost always malware bundled with pirated releases.
Stale content
Media nobody has played in your configured window (default 365 days) — across video, audio, audiobook and book libraries.
Detect-only — surfaces the list so you decide.A tour, tab by tab
Four tabs, one dashboard. Here's what each one is for.
Overview — the at-a-glance page
Live CPU / RAM / GPU stats, per-drive free space (with library drives flagged), and a savings breakdown by issue type. Click any bar to jump straight to those issues.


Issues — approve or dismiss
Everything the scanner found, grouped by type, with a clear one-line action for each. Approve to queue a fix, dismiss to hide, or bulk-select for larger batches. Dry-run mode is on by default so you can preview every fix before it touches a file.
History — what was done, and undo
Every fix MediaDash has run, filterable by outcome (succeeded, failed, dry run). Bytes saved per library so you can see where the wins came from. Removed files land in a 30-day recycle bin with one-click Restore.


Settings — one knob per fix type
Each fix type gets its own row with the same four choices: Off, Detect only, Ask me first, or Automatic. Removed files can go to the recycle bin (default) or be deleted permanently. Language lists, resolution ceiling, target codec and hardware encoder settings all live here.
Built to be trusted with your media
Fix runs only log what they would do until you say otherwise.
Removed files are recoverable for 30 days with one-click Restore.
Re-encodes stage the new copy to a sidecar before disposing the original, so a failed rename never leaves you with both files gone.
Never touches files outside your libraries, never removes a file's only audio track, always checks free disk before encoding.
The fix task wakes every 15 minutes and skips whenever anyone is watching or was active in the last 15 minutes.
Errors tab captures anything a scanner or fixer would otherwise swallow — permission denied, transient I/O, missing ffmpeg.
Community impact
Aggregated across opt-in installs — updated live from the community board.
LiveWhere the wins came from
On by default; untick in Settings → Safety to opt out. No paths, no filenames, no usernames — see what's collected.