Q. I really like Kavita, but can it mirror or just use my folder structure?

  • A. No, Kavita uses filenames and internal metadata for parsing and is not designed to use folder structure. Please don't ask for this feature, it will never be implemented. If this is important to you, Ubooquity may be a better choice, as it offers this feature.

Q. I started Kavita but get Access Denied?

  • A. Kavita needs to be executable and the directory it is installed in must be writable by Kavita. On Linux, chmod +x ./Kavita is usually sufficient. On Windows, ensure you did not install it in Program Files or Program Files (x86).

Q. Kavita doesn't seem to run or generate covers on my computer?

  • A. Kavita uses NetVips for cover generation and thus requires SSE4.2 instruction set. Generally, Core i3/i5/i7/i9 support them, whereas Pentium and Celeron CPUs do not. CPUs from 2011 onwards should support SSE4.2. You can read more about it here. If you fall in this category and still want to use Kavita, you can delete the libvips.dll or libvips.so and install it (libvips-tools for Linux) via your system manager (version must < v8.10.6) or compile it yourself, see this issue here.

Q. Can I use Kavita with a Google Drive mount?

  • A. Yes, you can use Plexdrive or rclone. Although it is not officially supported. Rclone requires a specific configuration to cache files locally and work better with Kavita. Here is a user-provided configuration that works well:
    rclone mount [your mount name]: [local path to be mounted] \
    --no-checksum \
    --use-server-modtime \
    --no-gzip-encoding \
    --no-seek \
    --allow-other \
    --allow-non-empty \
    --cache-read-retries 15 \
    --cache-db-purge \
    --buffer-size 512M \
    --dir-cache-time 500h \
    --timeout 500h \
    --vfs-cache-max-age 500h \
    --vfs-read-ahead 1G \
    --vfs-read-chunk-size 32M \
    --vfs-cache-max-size 25G \
    --cache-dir=[your folder path here] \
    --vfs-cache-poll-interval 10s \
    --poll-interval 10s \
    --attr-timeout 20s \
    --vfs-cache-mode full

Q. Does Kavita collect any data on me?

  • A. By default, Kavita will collect stats on your installation. This will run after 24 hours to give you time to opt-out (v0.7). You can opt out at any time by turning off "Send Data" from the Admin Dashboard. All data is anonymized and contains no information about your filenames or IP. The Kavita team actively uses this data to help design the UX and plan enhancements. If you chose to remain opted-in, thank you. It really helps in the design and planning effort. You can view the code at any time here. Here is a record from our stats database:
    "Os":"Linux 5.4.0-80-generic #90~18.04.1-Ubuntu SMP Tue Jul 13 19:40:02 UTC 2021",
    "HasBookmarks" true,
    "NumberOfLibraries": 4,
    "NumberOfReadingLIsts": 2,
    "NumberOfCollections": 0,
    "TotalFiles": 10351
    "ActiveTheme": "Dark",
    "ReadingMode": "Webtoon"

Q. Is there a way to use Kavita without Authentication?

  • A. No, this type of functionality is not supported and there are no plans. Kavita offers Refresh Tokens which should keep you authenticated without having to manually log in.

Q. Is there a way to see what isn't being added to Kavita during a scan?

  • A. There are multiple ways to identify. If there are metadata/format issues, you can find them under Media tab in Admin Dashboard. If they are from improper setup, you can instead search the logs for this:
    There are multiple series that map to normalized key SERIESNAME. You can manually delete the entity via UI and rescan to fix it. This will be skipped

Q. Follow up, some of my epubs aren't being added, how come?

  • A. If an epub isn't being added, it is likely due to a malformed file/metadata. Search for [BookService] There was an exception when opening epub book: in your logs to validate. You can use Calibre to reexport, which usually fixes the malformed metadata. Likewise, you can use the Media tab in the Admin dashboard to quickly find all series that failed to import due to improper metadata and can re-export or polish them with Calibre or Sigil.

Q. Sometimes I add ComicInfo to the first archive, but Kavita doesn't show it at a series level. Is this a bug?

  • A. There are 2 things to keep in mind. If the underlying file Created/LastModified isn't being changed since our last scan, we skip it to save on time and resources. In addition, if the file is not an archive starting with C, like cbz, cbr, etc, then it will not be checked for ComicInfo metadata.

Q. I have a Pi (Buster) that doesn't run Kavita in Docker. Is there a workaround?

Q. v0.5.1 Introduced Email functionality, how does it work?

  • A. The email functionality only works for servers that are publicly accessible from the web. For example, if you access your server on localhost or an internal IP, the email code will never execute. However, you still need to have an email confirmed. Since emails won't send, all email flows will write the link to your logs. This is the best way for you to confirm your email when doing the one-time migration or setting up accounts for your users. You do not need to have a valid email unless you plan to use the forgot password function. You can set up your users' accounts for them by doing the invite flow and using their invite link. We do not collect any email account information. It is deleted immediately after being dispatched by an automatic rule. You can run your own email service as well (and must to utilize Send to Device functionality).

Q. I'm seeing duplicate chapters/issues. What's going on?

  • A. This may happen if you've been a longtime user. Over the version iterations, the DB has changed pretty significantly. There are two options. In either case, Backup your Database first:

      1. You can choose to start fresh, delete your current database and reconfigure the instance. This is not recommended or ideal.
      1. You can use execute the following SQL commands on your DB using some tool like DB Browser.
    1. Verify Duplicates
      SELECT b.* FROM MangaFile b JOIN( 
      SELECT *, MIN(Id) as low_ID, Count(*) FROM MangaFile
      GROUP BY FilePath
      HAVING COUNT(*) > 1 ) c
      ON b.FilePath = c.FilePath
      WHERE b.Id != c.low_ID
      ORDER BY b.FilePath

      Delete Chapter Information first

      DELETE FROM Chapter 
      WHERE Id IN (
      SELECT b.ChapterId FROM MangaFile b JOIN( 
      SELECT *, MIN(Id) as low_ID, Count(*) FROM MangaFile
      GROUP BY FilePath
      HAVING COUNT(*) > 1 ) c
      ON b.FilePath = c.FilePath
      WHERE b.Id != c.low_ID
      ORDER BY b.FilePath

      Delete MangaFile Information

      DELETE FROM MangaFile
      WHERE Id IN (
      SELECT b.Id FROM MangaFile b JOIN( 
      SELECT *, MIN(Id) as low_ID, Count(*) FROM MangaFile
      GROUP BY FilePath
      HAVING COUNT(*) > 1 ) c
      ON b.FilePath = c.FilePath
      WHERE b.Id != c.low_ID
      ORDER BY b.FilePath

Q. How exactly does Estimated Reading Time work?

  • A. Kavita calculates the reading time using two different methods. The calculated reading time may not always reflect the actual reading time, but should be sufficient in providing a general sense of how long it will take to read or finish off a series. Note: Kavita actually uses characters instead of words to account for languages that don't have spaces, with the assumption of 5 characters per word.
    • For items where we can count words (epub), we use a spread of 10,260 to 30,000 words per hour to calculate min, max, and average.
    • For files that don't have countable words, we use a spread of 2.75 to 3.33 minutes per page. This works in most cases but might fail for files webtoons, which have a long strip format.

Q. Is there an app? I don't want to use the website.

  • Kavita does not yet offer mobile apps, however you can "Add to Home screen" our website, which will create an icon on your mobile device and launch the site in fullscreen mode. If that doesn't work for you, you can use a supported external reader, found here.

Q. I'm seeing database is locked errors in my logs

  • This can happen on some configurations. An easy solution is to turn on WAL mode, which Kavita supports out of the box. To do this, open your sqlite file and run PRAGMA journal_mode=WAL; while Kavita is not running. An easy tool to do this is DB Browser for SQLite