Privacy

Your books never leave your device, and we cannot read them. There is no account, no upload and no sync — a book you open here is opened by your browser, on your computer, and stays there.

Your books

When you drop an EPUB or a PDF onto the reader, the file is stored by your browser on your own disk — in the Origin Private File System, with the shelf entry and your place in the book in IndexedDB. None of it is sent anywhere. There is no server to send it to.

This is not a promise about our conduct. It is a description of the architecture: we run a static website and one small mailing-list endpoint, and neither of them has ever received a book.

You can take everything out at any time — Export my library on the shelf writes a zip containing every book file and a manifest of your reading positions, saved by your browser like any other download. Removing a book from the shelf deletes its bytes, not just its row.

The voice

The neural voice runs on your device, and reading a book aloud sends none of its text anywhere. The first time you press Play, though, your browser has to fetch the voice model, and that is a real request to somebody else:

One honest exception, and it is the only place your book's words can leave your device.

If your device cannot run the neural voice fast enough, the reader falls back to your browser's own built-in voice, and tells you it has. Some browser voices run entirely on your device; others are network voices that send the sentence being read to the browser maker's servers to be spoken — Google's voices in Chrome and Microsoft's in Edge work this way. We ask your browser for its default voice and it does not tell us which kind it is, so we cannot promise you either way.

If that matters to you, use the neural voice, or pick a voice your system lists as offline in your operating system's speech settings.

What we count

Events, never identities. If analytics are switched on for a build, the reader posts an event name, this site's hostname, the address of the page you were on, and one coarse property — which voice tier your device landed on. That is the entire payload. No cookies, no identifiers, no fingerprint, no profile, and nothing that could be joined back to a person or across visits.

The page address is the reader's own, /app/, and carries nothing about a book: no title, no filename, no position. Nothing in this list ever does.

That last one is the exception worth stating plainly. If you type something into the feedback box, we get what you typed. It is cut to 280 characters and stripped of any file path, and it is deliberately not put through the scrubber the crash reports use — that one deletes ordinary prose, which is exactly what you would be trying to tell us. So the box sends your words on purpose. Do not paste anything into it you would not want us to have; it is the only place on the site where you can type freely.

Crash reports

When the reader breaks, it can send us the error so we can fix it. Reports are switched off unless a build is configured to send them, and the public build sends nothing at all.

When they are on, a report carries three things, and by construction it cannot carry a fourth: the error's type, its message, and up to twenty stack frames. Before anything is sent, the message is put through a scrubber that

The error object itself is never sent. Only those three fields are copied out of it, so anything else the code attached — including a book — is left behind rather than filtered out.

The waitlist

If you give us your email address to hear when the paid tier ships, we store your address and the date you gave it to us. That is the whole record. We do not store your IP address alongside it, we do not log what you were reading, and we will not send you anything except the one email this is for.

To stop that, or to have your address deleted, email CONTACT_EMAIL and it will be removed.

Hosting, and what a web server sees

The site is served by Cloudflare Pages, and the waitlist endpoint by a Cloudflare Worker. Like every web host, Cloudflare processes the requests your browser makes — IP address, user agent, which page — to serve them and to stop abuse. We do not add analytics to that, and it is not joined to anything else.

What is kept in your browser

Three small entries in localStorage, none of which is a cookie and none of which is ever sent anywhere:

Clearing your browser's site data for this site removes them, along with your shelf and your books. Export first if you want to keep them.

Children

This is a reading tool with no account and no social features, and it is not directed at children under 13. We do not knowingly collect anything from anybody, which includes them.

Changes, and getting in touch

If this page changes in a way that matters, the date at the top changes with it. The version you are reading is kept in the project's public git history, so you can see exactly what changed and when.

Questions, or anything you think this page gets wrong: CONTACT_EMAIL.