Kavita

Fast self-hosted digital library for all reading

E-books & Media Library ★ 11.7k stars Easy setup GPL-3.0

Kavita is a fast, self-hosted digital library that handles e-books, comics, manga, and magazines with a polished reader. It targets readers with mixed digital collections. It is deployed via Docker.

Key features

  • Handles books, comics and manga
  • Fast polished web reader
  • Collections and reading lists
  • OPDS support

Pros & cons

Strengths

  • Great mixed-media support
  • Fast and modern
  • Active development

Trade-offs

  • No metadata editing
  • Library organization is folder-based

Kavita replaces

Last reviewed Aug 26, 2026 · 859 words

Kavita's one real rule is that the folder tree is the database. It reads series names from folder and file names, groups volumes and chapters from patterns like v01 and c003, and never writes metadata back to your files, so a messy import gives you a messy library and no editor to fix it in. Get the layout right before the first scan and Kavita is the fastest mixed-format reader you can self-host: 11,558 GitHub stars, GPL-3.0, a C# server that idles under 512 MB, and a web reader that handles EPUB, PDF, CBZ and CBR without a plugin.

The folder layout decides everything

Kavita wants one library per media type (Manga, Comic, Book, Images) and one folder per series inside it. A layout that scans cleanly:

/manga/Vinland Saga/Vinland Saga v01.cbz
/manga/Vinland Saga/Vinland Saga v02.cbz
/books/Ursula K. Le Guin/The Dispossessed.epub
/comics/Saga/Saga (2012) #001.cbz

The parser pulls the series name from the filename and falls back to the folder, so keep both consistent. Loose files in a library root become one-file series, which is the most common "why is my library a mess" complaint. Kavita reads EPUB metadata for books but for comics relies on filenames or a ComicInfo.xml inside the archive; the catalogue lists "no metadata editing" as a con, and in practice that means you fix names on disk with a renamer before scanning, not afterwards in the UI. Calibre's export naming scheme lands EPUBs in the Author/Title layout Kavita expects, which is the tidy way to move a book library across.

Docker setup is 12 lines

services:
  kavita:
    image: jvmilazz0/kavita:latest
    volumes:
      - ./manga:/manga
      - ./books:/books
      - ./config:/kavita/config
    ports:
      - "5000:5000"
    restart: unless-stopped

First visit to port 5000 creates the admin account. Add libraries in the admin area, point each at its mounted folder, and let the first scan run; a 2,000-volume manga library takes a few minutes on a mini PC because Kavita opens every archive to count pages and pull cover art. Everything it knows, including reading progress, lives in a SQLite database under /kavita/config, and the built-in backup task in the admin panel zips that directory on a schedule. Copy that zip off the box; the library files themselves are your originals and should already be in your 3-2-1 backup plan.

The reader is the reason to pick it

The web reader is what separates Kavita from a folder of files served by a file browser. Manga mode with right-to-left paging, double-page spreads, a webtoon scroll mode for vertical strips, and an EPUB reader with adjustable fonts and themes all live in one interface, and it remembers position per user per book. Multi-user is real: each account gets its own progress, age-rating restrictions and library access, so a family library with an adult comics section and a kids' section is one instance, not two.

For phones, Kavita speaks OPDS. Turn it on per user in settings, copy the OPDS URL, and readers like Panels on iOS, Moon+ Reader on Android or any Tachiyomi fork will browse and download from it, with progress syncing back through the OPDS-PS extension in readers that support it. That covers the "read on the sofa, continue on the train" case without an official mobile app.

Where Komga or Calibre-Web fit better

Komga is the closer rival for comics and manga specifically. It has in-app metadata editing, which Kavita lacks, and a stricter series model; if you want to correct a mis-tagged issue by typing in a form, Komga wins. Calibre-Web is the pick for a books-only library that already lives in Calibre, because it reads Calibre's metadata.db directly and offers sending to Kindle. Kavita's advantage is that it does all three formats well in one fast UI, which matters if your collection is genuinely mixed. It does not do audiobooks at all; that job belongs to Audiobookshelf.

Kavita+ and the update cadence

The project sells a paid Kavita+ tier that adds external metadata pulls and scrobbling to services like AniList; the core server stays fully functional without it, and I have never felt pushed into subscribing. Releases arrive every month or two and the changelogs occasionally include a required re-scan, so read the notes before pulling latest on a large library, or pin a version tag and update deliberately.

What I'd do

Sort the collection on disk first: one folder per series, consistent filenames, ComicInfo.xml where a tagger can generate it. Then Kavita in Docker on 512 MB, libraries split by type, OPDS on for the phone reader, config directory backed up nightly. If the collection is 90% comics and you care about editing metadata in the browser, run Komga instead; for everything else mixed, Kavita is the one I keep coming back to, and it is the default I'd give a first-timer browsing the ebooks category.

Compare Kavita

23 head-to-head comparisons.

Similar e-books & media library apps