READER: A Library That Opens the Books, and Tells Nobody
DRIVE keeps documents and nothing on this site reads one. This does: a PDF drawn page after page, an EPUB unzipped and rendered chapter by chapter, with your place, your bookmarks and your highlights kept on this device. A reading list is a record of what somebody thinks about, which is why so many people would like a copy of yours. Nobody gets one here.
Open a book
A PDF or an EPUB, read here in this tab. Nothing is uploaded, and the file itself is never copied into this browser's storage.
Drop a PDF or an EPUB here, or
The shelf
Everything you have opened, with where you stopped. The record lives on this device; the book is opened again from wherever you keep it.
Bookmarks and highlights
Select any text in the book to highlight it in one of four colours. Every mark takes a note, and the lot comes out as markdown grouped by chapter.
What this is, and what it is not
An EPUB is a website in a zip, and is treated as one. A chapter is XHTML and a book's stylesheet is CSS, so either can carry a script, an inline event handler, a web font, a background image or a tracking pixel on somebody else's server. A book that fetches as you turn the page knows what you read and when. Every chapter is stripped of script, of frames and plug-ins, and of every attribute beginning with "on"; every stylesheet loses its @import, its @font-face and every url() this zip cannot satisfy from its own contents, and what is left is scoped to the reading surface so it cannot touch the rest of the page. The line under the book says what was taken out of the chapter in front of you.
The shelf remembers the book, not the book's bytes. Copying a library of files into browser storage would fill it, would make a second copy of things people often hold for a reason, and would outlive a wipe of the folder they came from. So the shelf keeps the title, the author, a small cover, where you stopped, your bookmarks and your highlights, and asks for the file again when you want to read on.
A highlight is a pair of offsets, not a pair of coordinates. Each one is recorded as a position in the text of a chapter or of a page, so it lands in the same place after you have changed the text size, the line height and the measure, and it costs a few bytes rather than a screenshot. On a PDF that means an invisible layer of text is laid over the drawing in the positions the file reports, which is also what makes a PDF selectable at all.
It will not open a book with DRM on it. A book bought from a shop that locks it is encrypted to that shop, and this cannot open it, will not try, and has no way of removing the lock. A PDF with a password on it has to have the password removed in a viewer first. What it does open is an ordinary EPUB and an ordinary PDF, including everything from a library, a publisher who does not lock their files, and the public domain.
A PDF is a fixed page and stays one. Text size, line height and measure change an EPUB, because an EPUB is text that flows. A PDF is a drawing of a page and re-flowing it would mean rebuilding it, which no honest tool does invisibly. It is drawn at its own proportions and scrolls.
Questions people ask
Does the book get uploaded?
No. The file is opened by this tab with the browser's own file reader; a PDF is drawn by pdf.js and an EPUB is unzipped by fflate, both pinned on this site. There is no server side to this page and a Content Security Policy forbids it talking to any other origin. It works with the network off.
Where are my highlights kept?
In this browser, under one key in localStorage, alongside the shelf. They never leave the device. Export them as markdown to get them out, and use BACKUP to carry the whole of this site's data to another machine.
Why does it ask for the file again?
Because it never had a copy. The shelf is a record of books, not a store of them: it knows the name, the size, the cover and where you stopped, and the file stays wherever you keep it. That is also why the shelf survives being moved to a machine that has the books in a different folder.
What happens to a book's own fonts?
They are dropped, along with the @font-face rule that asked for them. An embedded font is a fetch, and in an EPUB it is frequently a fetch from a server that then knows a book was opened. The book's other typography, its headings, its italics and its indents, is kept.
Can I read a book with pictures in it?
Yes. Images inside the zip are shown, resolved from the zip itself. An image the book points at on another server is not fetched and is not shown, because fetching it would announce that the book had been opened.
What does the markdown export look like?
A heading for the book, then one section per chapter or page, each highlight as a block quote with its colour and its position under it and your note beneath that. It is written to be pasted straight into NOTES or into anything else that reads markdown.
Does it work on a phone?
Yes. Select text with a long press to get the four colours, and the arrow keys, space, Page Up and Page Down turn pages on a keyboard. Without a mouse at all, control or command with A inside the reader selects the chapter or the page you are on, and Tab from there reaches the four colours.