Tested tool guide
Tested browser tools
Checked August 16, 2026
What EPUB eBook Viewer does, with a checked example
Drop an .epub file onto the page and the reader unpacks it entirely in the browser, then renders the book as paginated, reflowable text you can adjust with font, theme, and bookmark controls. An EPUB is a ZIP archive of HTML and CSS pages, and the reader follows the package document's spine - the declared reading order - to move chapter by chapter. Nothing is uploaded; the file never leaves your machine. The common surprise: EPUBs purchased from bookstores are usually DRM-encrypted and will not open, and fixed-layout books (comics, spreads, wide tables) refuse to reflow cleanly into a single reading column.
Worked example
A concrete input and expected output from the current implementation.
Input
A minimal EPUB with two files in the archive:
META-INF/container.xml: <container version="1.0" xmlns="urn:oasis:names:tc:opendocument:xmlns:container"><rootfiles><rootfile full-path="OEBPS/content.opf" media-type="application/oebps-package+xml"/></rootfiles></container>
OEBPS/content.opf: a package document whose manifest lists chapter1.xhtml and whose spine contains one itemref, idref="c1", pointing at it
->
Expected output
The reader opens at page 1 showing chapter1.xhtml: its title and body text rendered with the current font size and theme. The page, bookmark, and chapter controls now act on that single chapter, and no other content is shown because the spine declares nothing else.
The reader starts from container.xml, follows the rootfile path to the package document, then renders the spine's first itemref. That resolution chain decides everything displayed, which is why a corrupt or missing container.xml produces an immediate error with no partial page.