-
Notifications
You must be signed in to change notification settings - Fork 70
Migrating from Readarr
Readarr was archived in June 2025 and its metadata backend (api.bookinfo.club) is permanently offline. This page walks you through importing your Readarr database into Bindery.
The import is designed to be safe and non-destructive — it never modifies your Readarr database, never touches your existing files, and is idempotent for authors (running it twice won't create duplicates).
| Section | What carries over | Notes |
|---|---|---|
| Authors | Name, monitored state | Re-resolved via OpenLibrary — Goodreads IDs are not used (bookinfo.club is gone) |
| Indexers | Name, URL, API key, categories, enabled state | Newznab and Torznab only; other Readarr indexer types are skipped |
| Download clients | Name, host, port, API key/password, SSL, enabled state | SABnzbd and qBittorrent only |
| Blocklist | Release title, reason | Handles both Blocklist and Blacklist table names across Readarr versions |
- Book history and grab history — Readarr's history is tied to its internal IDs, which don't map to OpenLibrary
- Quality profiles — Bindery's format-preference model is different; recreate them in Settings → Profiles → Quality
- Delay profiles — Same; recreate in Settings → Profiles → Delay
- Custom formats — Bindery's custom format syntax differs from Readarr's; recreate in Settings → Custom Formats
- Notification webhooks — Recreate in Settings → Notifications
- Tags — No equivalent concept in the current Bindery release
- Naming templates — Check and set yours in Settings → General → Naming before running a library scan
- Existing file references — The library scan (step 5 below) re-links files to books after import
- Back up Bindery if you have any existing data: Settings → General → Backup → Create backup.
-
Locate your Readarr database. It's called
readarr.dband lives in Readarr's/configdirectory (or whereverREADARR_DB_PATHpointed). Copy it somewhere accessible — you're uploading it to Bindery, not running from it in place. -
Snapshot Readarr's
/configas a general precaution. The migration is read-only but you'll feel better having it.
- Go to Settings → Import.
- Under Readarr database, click Choose file and select your
readarr.db. - Click Import.
The import runs synchronously and returns a per-section summary when complete:
Authors: 47 added, 2 skipped (already exist), 1 failed
Indexers: 3 added
Download clients: 1 added
Blocklist: 12 added
Added = new row created. Skipped = already in Bindery (matched by OpenLibrary ID — idempotent). Failed = see below.
# Docker
docker exec bindery /bindery migrate readarr /path/to/readarr.db
# Binary
./bindery migrate readarr /path/to/readarr.dbThe CLI prints the same JSON summary to stdout and exits with code 0 on success, non-zero if the database couldn't be opened.
Any author in the failed list couldn't be matched on OpenLibrary. Common causes:
- The name was spelled differently or had a typo in Readarr (e.g. "Tolkein" → search manually and add via the UI)
- The author has no OpenLibrary presence (rare for major authors)
- OpenLibrary rate-limited the request during a large import (re-run the migration — the already-imported authors will be skipped, only the unresolved ones are retried)
Go to Settings → Indexers and click Test on each one. Then do the same in Settings → Download Clients. Bindery maps Readarr's connection settings structurally, but API keys rotate and endpoints change — confirm they're still working.
qBittorrent note: Readarr stores the WebUI username and password as separate fields. Bindery maps the password into its credential field. If the test fails, open the client in Settings, re-enter the username and password, and save.
Readarr's naming tokens ({Author Name}, {Book Title}, etc.) don't carry over. Set your preferred template in Settings → General → Naming before any files are imported. The default is {Author}/{Title}/{Title}.{ext}.
Your existing book files are already on disk — the scan links them to the books Bindery just imported.
Go to Settings → General → Library → Scan Library. Bindery walks your library directory, matches files to wanted books by title and author, and marks matched books as Imported.
After the scan, books that still show as Wanted either have no file on disk or couldn't be matched (filename too ambiguous). Check the Wanted page and grab them manually, or use the interactive search.
Quality profiles, delay profiles, and custom formats don't migrate. Recreate any non-default ones you relied on in Readarr:
- Settings → Profiles → Quality — format preference order and cutoff (which format is "good enough to stop looking")
- Settings → Profiles → Delay — hold-off timers before auto-grabbing
- Settings → Custom Formats — regex-based scoring for RETAIL, freeleech, etc.
"no OpenLibrary match" for an author you know exists. OpenLibrary's author search is name-sensitive. Try searching for the author in the Bindery UI (Authors → Add Author) with alternative spellings — initials vs. full name, hyphenated surnames, pen names. Once you find the right match, add them there; the migration summary is just for reference.
Indexer imported but test fails with 401. Your API key may have rotated since Readarr stored it, or the indexer URL changed. Update it in Settings → Indexers.
"missing URL or API key" for an indexer.
Readarr supports some indexer types (e.g. Gazelle, custom RSS) whose settings JSON doesn't include a standard baseUrl + apiKey pair. These can't be ported automatically — add them manually in Settings → Indexers.
Download client imported but Bindery is sending grabs to the wrong client. Bindery routes Newznab results to SABnzbd and Torznab results to qBittorrent. If you had a SABnzbd client configured for torrents in Readarr, re-check the client type in Settings → Download Clients and correct it.
Library scan matched files to the wrong books. This happens when filenames are very short or two books by the same author have similar titles. Open the wrongly-matched book's detail page, set its status back to Wanted, and re-run the scan or grab the correct file manually. The scan uses title + author word matching with an anchor check — see Troubleshooting for the full diagnostic flow.
Getting started
Setup guides
How-to guides — proxy auth (v1.0)
How-to guides — OIDC (v1.0)
- Google Sign-In
- GitHub OAuth via Dex
- Authelia as OIDC provider
- Authentik
- Keycloak
- Rotate OIDC client secrets
- Recover from broken OIDC
How-to guides — multi-user (v1.0)
Reference
Contributing