Grimreader,a calm e-reader.
For the books you already own. Read EPUBs, listen with natural voices that run offline, keep a streak, and sync with your own library server if you run one.
On Google Play it is currently available to beta testers only. Installable files are on GitHub.

Reading
A fast EPUB reader built on foliate-js. Turn pages or scroll, one page or two depending on the screen, with tap zones, volume keys and a quiet header and footer that show the chapter and how long is left.
- Highlights and notes
- Five colours, four styles, a note on any passage. Synced to your library server when you connect one.
- Search and contents
- Find a phrase with highlighted snippets, jump through the table of contents, keep bookmarks.
- Reading pace per book
- How long you took, over how many days, and your words per minute, set against the average adult reader (238 wpm) or a speed of your own.
- Speed reading
- Word by word or in short phrases at 100 to 1000 words a minute, with a fixed focus point. The time counts towards your goal.

Read aloud
Listen with Android's speech engine, or download an optional natural voice that runs entirely on the phone.
The natural voice is Supertonic 3 running on ONNX Runtime: Dutch and English, ten voices, about 400 MB, downloaded once and only offered on phones that can run it. The sentence being read is highlighted and pages turn by themselves. Speed goes from 0.8× to 2×, there is a sleep timer, the language can be set per book, and the lock screen, notification and Bluetooth buttons all work.

Your page
Seven page colours, eight fonts, and every spacing you would want to change.
Paper, Sepia, White, Mint, Dusk, Night and AMOLED. Literata, Lora, Merriweather, Atkinson Hyperlegible, OpenDyslexic, the publisher's own font and two system faces. Text size, line and paragraph spacing, margins, justification and hyphenation, plus a soft colour guide along each line, and an automatic dark page in the evening.
The Display control at the top of this site is borrowed from that sheet. Try it on the home page.

Habits
A daily goal in minutes or pages, and a streak to keep alive.
Streaks come with a few freezes a week. There are achievements, reading levels from Curious Reader to Library Legend, a yearly reading challenge and a home-screen widget with today's progress. Statistics cover reading time, pages, words per minute, a reading calendar and your most read books. The timer pauses when you stop interacting, so only real reading time counts.

Your library
Grimreader works with no account and no server. Everything is stored on the device first, so it keeps working offline.
- Your own books
- Import EPUB, MOBI, FB2 or CBZ files, or open them straight from another app. Two public-domain demo books are included.
- Library server
- Optionally sign in to your own Grimmory server with a password or single sign-on. Books, progress, highlights, bookmarks and reading sessions stay in sync.
- Kobo and KOReader
- Read on another e-reader too and the furthest position wins. If the other device is ahead, the reader offers to jump there.
- Catalogs and search
- Browse any OPDS catalog, search through a Shelfmark-compatible server, or use Hardcover for trending books with your own key.
- Discover
- New books in your genres and languages, free classics from Project Gutenberg, and a deck of weekly picks to swipe through.

Every screen
Phones get a bottom bar and one page. Foldables split the list and the details on the hinge and show two pages like a book, with a tabletop posture when half folded. Tablets use list-detail, and two pages in landscape.
English and Dutch, light and dark, Material You colours, and the per-app language setting on Android 13 and newer.


Private by design
- No Grimreader backend, no analytics, no advertising and no tracking.
- Server addresses, logins and API keys are stored encrypted on the device and only sent to services you configure.
- Optional features contact third parties only when you switch them on, and the app says which.
- Self-signed servers use certificate pinning on confirmation: you see the SHA-256 fingerprint and approve exactly that certificate.
- No storage, location, contacts or microphone permission. Backups leave out tokens and downloaded books.
Under the hood
- Interface
- Kotlin, Jetpack Compose and Material 3, with Material 3 Adaptive for list-detail and navigation.
- Layers
- UI, ViewModel, repository, then Room, DataStore or the network. Screens never talk to a server directly.
- Offline first
- Changes are written locally first and sent from an outbox with WorkManager when a connection is back.
- Reader
- foliate-js in a WebView that only loads the app's own files, with a Kotlin to JavaScript bridge for positions, highlights and search.
- Read aloud
- Text becomes sentence segments, spoken by Android TTS or the ONNX engine and mirrored back as a highlight, in a media foreground service.
- Releases
- GitHub Actions runs the tests, picks the next version from Conventional Commits and attaches a signed APK and AAB.
Status
- Availability
- Google Play, for beta testers for now. APK and AAB on GitHub
- Platform
- Android 12 and newer: phones, foldables and tablets
- Languages
- English and Dutch
- Licence
- PolyForm Noncommercial 1.0.0, free forever
- Latest build
- Passing on development, 25 Oct 2026. View the run
Grimreader is an independent project. It is not affiliated with, endorsed by or sponsored by Grimmory, Shelfmark, Hardcover, Open Library, Project Gutenberg, Kobo or KOReader. Screenshots show the demo mode with public-domain books from Standard Ebooks and Project Gutenberg.