C00100011 development

Grimreader,a calm e-reader.

The Grimreader app icon: a stack of books with an open book in front

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.

Grimreader on a tablet in landscape: two pages of Frankenstein in the night theme

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.
Grimreader on a phone: one page of text, a progress bar and Contents, Display and Listen buttons
MOBI, AZW3, FB2 and CBZ open too.

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.

Two pages of Frankenstein with one sentence highlighted and a player with previous, pause, next, speed and sleep timer

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.

Grimreader's Display sheet over a page of Frankenstein: text size, seven page colours, fonts and line spacing

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.

Grimreader's home screen: a continue reading card for Alice's Adventures in Wonderland, today's goal ring and a streak flame

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.
Grimreader's library as a grid of covers next to the details of Pride and Prejudice

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.

Grimreader's home screen on a phone in the light theme: continue reading, today's goal and favourites, with a bottom navigation bar
Phone
Grimreader on a tablet in portrait: the library list on the left and the details of Pride and Prejudice on the right
Tablet, list and detail

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.

Read the full privacy policy

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.

All projects