Built-in reader
EPUBs, manga (CBZ/CBR), and PDFs render directly in the browser. No external app required. Position is tracked at page granularity and syncs both ways with KOReader via TomeSync.

EPUB reader
Built on foliate-js, the same engine that powers Foliate on the desktop. Pagination, not infinite scroll — pages re-flow to your viewport.
Controls
- Themes: light, sepia, dark. Independent of the app theme — you can read in sepia inside a dark Tome.
- Font: system serif, sans, or monospace, sized 12–28px.
- Table of contents: drawer on the left. Click to jump.
- Position memory: EPUB position is a CFI (Canonical Fragment Identifier) — resilient against re-flow, so resuming on a different device with a different font size lands you on the same paragraph, not the same pixel offset.
Keyboard shortcuts
| Key | Action |
|---|---|
| → or Space | Next page |
| ← | Previous page |
| t | Toggle TOC drawer |
| s | Toggle settings panel |
| Esc | Close drawer / exit reader |
Manga / CBZ reader
Custom streaming reader — pages are fetched on demand from the server, so you can open a 2 GB
manga volume without downloading the archive. Works for CBZ; CBR support requires
unrar-free server-side (already in the Docker image).
Layout modes
- Page mode — one page (or two-page spread) at a time, click or arrow to advance.
- Webtoon mode — vertical infinite scroll. Best for Korean / Chinese vertical comics.
Per-volume options
- Reading direction: LTR (default) or RTL. RTL flips arrow keys and spread order — important for Japanese manga.
- Fit: width, height, or original.
- Single vs spread: spread mode pairs pages 2-3, 4-5, etc. The cover stays solo.
- Theme: light, dark, sepia background — useful for matte e-ink screens reading in low light.
Served as application/pdf; the browser's built-in viewer handles rendering.
Position is tracked at the page level — no CFI equivalent, since PDFs are fixed-layout. If
you want a richer PDF experience, send the file to KOReader (it does PDF reflow well) and
your position still syncs.