All Server Guides Troubleshooting

Audiobookshelf won't import books from LibbyRip

Why Audiobookshelf scans fail or skip LibbyRip-ripped audiobooks, and how to fix the metadata.json so the books show up.

A row of audiobook spines on a wooden shelf, one slot empty showing the back wall, dark headphones lying in front of the missing book, a single orange spine standing out among muted greys and tans

You used LibbyRip to grab a Libby audiobook, copied the folder into your Audiobookshelf library, ran a scan, and the book never showed up. The audio files are in the right place, the folder structure looks fine, but the book isn’t in the library. Sometimes the scan fails partway through and other books that should have imported don’t either.

Look in the scan log (Settings, Logs, or metadata/logs/scans/) and you’ll see one of these:

[abmetadataGenerator] Invalid chapter start time undefined for "<book title>" metadata file
ValidationError [SequelizeValidationError]: string violation: description cannot be an array or an object

LibbyRip writes a metadata.json into a metadata/ subdirectory inside each audiobook folder. ABS picks it up during its recursive scan, but the format is Libby’s native data shape, not Audiobookshelf’s. Two completely different schemas that happen to share a filename. ABS picks up the file during scan, hands it to its metadata parser, and the parser rejects it because:

  • description is an object ({ "full": "...", "short": "..." }) instead of a single string
  • chapter entries don’t have the numeric start and end fields ABS expects

When the parser fails on the chapter check it returns null and the book gets skipped. When the description object slips through to the database layer, Sequelize throws the validation error and the whole scan aborts. The maintainers initially considered this not a bug since LibbyRip is writing a different format that just happens to be named metadata.json (they later reversed that; see the update below). On v2.35.0 and older, fixing it is on you.

The quick fix: delete or rename metadata.json

The simplest path is to remove metadata.json from each LibbyRip folder before scanning. ABS will fall back to reading metadata from the audio file tags and external providers (Audible, Open Library, etc.) and the book will import.

For a single book:

rm "/path/to/library/Author/Book Title/metadata.json"

To clear them across the whole library:

find /path/to/library -name "metadata.json" -delete

If you want to keep LibbyRip’s data around for reference but not have ABS choke on it, just rename the file. ABS only parses files named metadata.json (or metadata.abs), so anything else is ignored:

find /path/to/library -name "metadata.json" -execdir mv {} libby-metadata.json \;

nigiriemoji confirmed deleting the file works. Run a manual scan from Settings, Libraries, your library, Scan, and the missing books should appear.

If you want to keep the description: convert it

If you’d rather keep the description LibbyRip pulled, the minimum change is collapsing description from an object to a string. nate-griff posted a working example:

Before:

"description": {
  "full": "<full text...>",
  "short": "<short text...>"
}

After:

"description": "<full text...>"

That alone gets the book to import with title, author, and description. Chapter names still won’t come through, since LibbyRip’s chapter array doesn’t match ABS’s schema. ABS expects this:

"chapters": [
  { "start": 0, "end": 1234.5, "title": "Chapter 1" },
  { "start": 1234.5, "end": 2567.8, "title": "Chapter 2" }
]

start and end in seconds as numbers, title as a string. If LibbyRip’s chapters are in a different shape, either delete the chapters key from metadata.json (ABS will read chapters from the audio file instead) or write a small script to map the fields.

The fields ABS will read from metadata.json are: title, subtitle, authors (array of strings), narrators (array), series (array of strings like "Series Name #1"), genres (array), tags (array), publishedYear, publishedDate, publisher, description (string), isbn, asin, language, explicit (bool), abridged (bool), chapters (array as above). Anything else is ignored.

After a failed scan

If a scan died with the validation error, ABS may have imported some books before the crash and skipped the rest. Fix or delete the offending metadata.json files, then trigger a fresh scan. Books that already imported won’t be touched, and the ones that were skipped will pick up.

For other library ingestion problems, see new audiobooks getting the wrong metadata.

Update: June 10, 2026, v2.35.1 stops the crashes

Audiobookshelf v2.35.1 (May 28, 2026) fixed the crash side of this. The contributor who had called it not-a-bug took another look and changed their mind once the server crash was clear: “I did not notice that above includes a server crash. This definitively is a bug.” The fix landed in commit 1bad2d90, which closed #5142, #4287, and the crash report #5268. It rewrote the metadata.json parser to check every key against the type ABS expects and drop anything that doesn’t match.

On v2.35.1 and later:

  • No more crashes or aborted scans - LibbyRip’s object-shaped description gets dropped with an Invalid metadata key "description" expected string, got object warning in the log instead of reaching the database layer and killing the process.
  • The books import - the parser keeps the keys that are valid and skips the rest, so the book shows up instead of being skipped wholesale. You’ll still see the Invalid chapter start time error in the scan log, but it’s harmless now; it just means the Libby-format chapters were ignored.

If you want the description text and chapter titles inside ABS, the convert steps above are still how you get them, on any version. And if you’re on v2.35.0 or older, nothing changed for you: delete or rename the file.

Affected versions

The schema conflict exists on every version: the metadata.json format hasn’t changed in years and LibbyRip’s output uses Libby’s native format consistently. What you see when they collide changed in v2.35.1 (May 28, 2026). On v2.35.0 and older, the scan fails or the server crashes and the books get skipped, so the workarounds above are the way out. On v2.35.1 and later, the books import and the bad keys just get logged and dropped; converting the file is only needed if you want the Libby description and chapter titles.