TT

ttu Ebook Reader

Browser-based ebook reader with progress tracking

E-books & Media Library ★ 1k stars Easy setup MIT

ttu Ebook Reader is a self-hostable, browser-based reader for EPUB and HTML books with a focus on language-learning readers. It tracks reading progress and statistics entirely in the browser.

Key features

  • Browser-based EPUB reader
  • Reading progress and stats
  • Offline capable
  • Language-learning friendly

Pros & cons

Strengths

  • No backend needed
  • Privacy friendly

Trade-offs

  • Reader only
  • No central library

ttu Ebook Reader replaces

Last reviewed Sep 13, 2026 · 840 words

Self-hosting ttu Ebook Reader gives you a reading app, not a bookshelf. Everything you load into it, every book, bookmark and reading statistic, is stored in your browser's IndexedDB, and the server does nothing but hand out a folder of static files. That is why it runs in 128 MB, needs no database, and works offline once opened. It is also why a second device sees an empty library unless you set up a sync source. If you understand that split, this is the best browser reader for language learners I have used; if you wanted a Kindle replacement with a central library, it is the wrong tool.

The server side is a static folder

The project is a Svelte app compiled to HTML, JavaScript and CSS. Self-hosting means serving that build output from any web server: the repository's Dockerfile does exactly that with nginx, and the resulting container idles at a few tens of megabytes. There is no login, no user table and no API to secure. Put it behind your usual reverse proxy with HTTPS, because the app registers a service worker for offline use and browsers only allow that in a secure context, and you are done.

The public instance at reader.ttsu.app is the same code. The honest reason to host your own is that you want the reader to keep working if the public site changes or disappears, and you want it reachable on a LAN with no outside dependency. Both are legitimate; neither gives you anything the public site does not.

Your books live in the browser, and that cuts both ways

Loading a book means picking an EPUB, HTMLZ or plain text file from your device. The reader parses it and stores the result in IndexedDB, so the file never travels to the server. Progress, bookmarks and stats stay there too. The upside is real privacy, since nobody, including you as the operator, can see what anyone is reading. The downside is that clearing site data wipes the library, and phones are aggressive about evicting storage for sites you have not opened in a while.

The project addresses this with optional storage sources: you can point it at a browser filesystem folder or a cloud drive so books and progress round-trip between devices. Set one up on day one if you read on more than one device. It is not server-side sync, and the app's own maintainers describe it as reader-first, so do not expect a Calibre-style catalogue to appear.

Why language learners run it

The 1,033-star repository comes out of the Japanese-learning community and it shows in the features that matter to them: vertical text, furigana handling, a character counter that tracks how many characters you have read per session, reading speed over time, and a stats page that treats reading as practice you can measure. Most general readers never surface these numbers. If you are grinding through native-language novels and want to see the count climb, that stats page is the whole reason to pick this over the reader built into a library server.

For everyone else the feature list is shorter: comfortable typography, offline capability, and no account. It reads EPUB well and does nothing with PDF, comics or audiobooks.

Pair it with a real library

Because there is no server-side collection, the sane setup is ttu as the reading surface on top of something that actually stores your books. Calibre-Web is the usual choice: it owns the catalogue and metadata, you download the EPUB from it and open it in ttu. Kavita and Komga are the bigger projects in the ebooks category, and both include their own web reader with server-side progress sync across devices, which is exactly the feature ttu lacks. If your requirement is "open the same book on the phone and the laptop and be on the same page", start with one of those and treat ttu as optional.

What it is not

It is not a Kindle replacement in the sense people usually mean. No store, no send-to-device, no e-ink client, no OPDS browsing. It is not multi-user in any meaningful way, because two people on one browser profile share one library. And it is not a project with a large ecosystem: at just over a thousand stars it is well maintained but small, and the alternative readers in this space are moving faster on general features.

What I'd do

Run Kavita or Calibre-Web as the library. If you or someone in the house is learning Japanese or another language where character counts and reading speed matter, add ttu Ebook Reader as a static container behind the same reverse proxy, configure a storage source before loading the first book, and read there. Anyone else should skip it and use the library server's built-in reader, which syncs progress and costs nothing extra.

Compare ttu Ebook Reader

15 head-to-head comparisons.

Similar e-books & media library apps