For people who self-hostworking name
Shelfmend
A command-line tool. Open source, not published yet.
Fix your audiobook library without breaking it.
Every change starts as a plan you can read, and nothing is deleted outright.
shelfmend doctor ~/shelfmend-demo
Shelfmend doctor: ~/shelfmend-demo (read-only)
41 books, 60 audio files, 271.0 KiB, 301.5 h of audio known (tags: mutagen)
ERROR Damaged or truncated audio files 2
Rosa Quill/Tide Tables/03 - Chapter 3.mp3
Theo Brandt/The Brass Sparrow/The Brass Sparrow.m4b
WARNING Audio files that may be cut short 1
WARNING Encrypted Audible files (.aax) 1
WARNING Duplicate books 1
WARNING One ASIN on several volumes 1
WARNING Narrator or publisher stored as the author 2
WARNING Folder layout problems 10
WARNING Broken cover images 1
info Tidy-ups (7 checks; --all lists them) 78
for example, titles and folder names with junk in them: Lena Ashby/Bell Tower 128k
doctor is read-only: nothing was changed.
Shelfmend is a command-line tool that checks an audiobook library and repairs it carefully: damaged and truncated audio, duplicates, a narrator or publisher filed as the author, a series split under two names, and folder and cover problems. Every change starts as a readable plan, stays a dry run until you say go, and goes into an undo journal. It works with plain folders and with Audiobookshelf through its API.
Why I made this
Shelfmend started after a duplicate cleanup ate a book in my own audiobook library. That's why it's so careful now.
What it does
- One health report for the whole library. Damaged and truncated audio (checked without trusting file extensions), duplicates, misfiled authors, split series, and layout and cover problems. The result is a terminal summary and a single-file HTML page, and making it changes nothing.
- Duplicate cleanup that doesn't eat books. Different volumes never get grouped, runtime alone never counts, a damaged copy is never the one kept, and anything doubtful gets held back.
- Author and series repair, with the evidence. Series names are merged only when they differ mechanically, never across a real sub-series.
- Plays nice with Audiobookshelf. It fixes metadata through the API, with no folder moves and no lost listening progress. It never forces a library scan or deletes a file.
- Nothing happens until you say go. Every change starts as a plan to read and prune, stays a dry run until the go-ahead, and goes into an undo journal. Deletions sit in a reversible quarantine first.
What it doesn't do
- It doesn't download books or search indexers.
- It doesn't remove DRM; encrypted .aax files are left alone.
- It never edits audio tags; Plex and Jellyfin need a tag editor.
- It never deletes a damaged file on its own.
- It doesn't share or upload books, covers or descriptions.
Screenshots
(larger view)
(larger view)
Who it's for
People who keep their own audiobook library (DRM-free purchases, their own backups and CD rips), often served with Audiobookshelf. It isn't a downloader and it doesn't remove DRM.
What it keeps, and where
Shelfmend runs locally, collects nothing, and only ever talks to your own Audiobookshelf server, and only when asked.
Goes online only for: Audiobookshelf API mode (only when you ask for it); Series name lookups (off until you turn it on).
Runs on, and what it'll cost
- Runs on
- Windows, macOS and Linux (Python 3.11 or newer, command line). A Docker image is planned.
- Cost
- Free and open source under the MIT license, with optional donations. A paid local review app is planned only if the free tool gets real traction.
- License
- MIT, so the code is open source.
Audiobookshelf is an independent open source project. Shelfmend is not affiliated with or endorsed by it.