Bionic Docs
NewPages as printed, fitted to your window

Read PDF and EPUB with bionic fixation.

Open a document and every page looks the way it was printed, with its figures, colours and layout. Only now the leading letters of each word carry the weight. It all happens inside the extension, so nothing is uploaded.

  • No upload
  • No account
  • No remote code
  • 2formats, PDF and EPUB
  • 5reading modes
  • 160tests across 8 files
  • 0network requests for content

Live demo

Try the reader, right here

This is the same compiled fixation code the extension ships, running in this page. Switch documents, turn pages, change the mode, or paste your own text.

fixtures/sample.pdf

sample.pdf

Page 1 of 2

Before and after

The same page, switched on

Drag the divider, or focus it and use the arrow keys. Left of the line is what the extension shows; right of it is the page as written.

What it does

A reader that leaves your document alone

Most bionic tools strip a PDF down to plain text. Bionic Docs keeps the page and puts the emphasis on top of it.

Pages as they were printed

PDF.js draws each page to a canvas: images, diagrams, colours and all. The text is laid back over it in the same position and width, then emphasized, so columns, captions and equations keep their shape.

Fit page, fit width, 50 to 300%

Pages open fitted to the window. Zoom keeps your place on the page, and + − 0 work from the keyboard.

EPUB, reflowed

Books are unzipped in memory, their chapters sanitized and reflowed, and their own table of contents becomes the Contents panel.

Five reading modes

The same fixation algorithm as its sibling, Bionic Page, with a live intensity control. Changes apply as you move the slider.

Picks up where you left off

Reopen a document and the reader offers your last page or chapter. It remembers the last 25 documents, on this device only.

Made for the keyboard

Turn pages, jump to either end, zoom and open the contents without reaching for the mouse. Menus are drawn by the extension and work with arrows, Enter and type-ahead.

Reading modes

Each mode anchors a different part of the word

Every sample below is rendered live by the code the extension runs, so what you see here is what you get in a document.

Half

Default

Comprehension builds steadily through careful attention.

The first half of each word, as in Bionic Reading.

Classic

Comprehension builds steadily through careful attention.

A leading share of each word; intensity sets how much.

Vowel anchor

Comprehension builds steadily through careful attention.

Up to the first vowel group; suited to many languages.

Low distraction

Comprehension builds steadily through careful attention.

The prefix stays, the rest of the word fades back.

Custom rule

Comprehension builds steadily through careful attention.

Per-length letter counts, plus a fraction for long words.

How it works

Sniff, parse, emphasize

Three steps, all inside the extension page. The document is never parsed anywhere else.

  1. 01

    Sniff

    The first bytes decide the path: %PDF- goes to PDF.js, a PK zip with an EPUB container goes to the book reader. File names are not trusted.

  2. 02

    Parse on device

    A bundled PDF.js renders each page and reports where its text sits. An EPUB is unzipped with fflate; its OPF gives the spine, its nav or NCX the contents.

  3. 03

    Emphasize

    The fixation step wraps each word's opening in <b>. It only touches text nodes, so a mode change repaints in place and the original bytes are never modified.

Module mapsrc/
popup / backgroundopens reader.html?src=… for the current tab or a picked file
reader/reader.tssniffs the bytes, owns the toolbar, zoom, contents and resume
pdf/pdf.ts · layout.ts · zoom.tscanvas page, positioned text layer, fit and zoom maths
epub/epub.tsunzip, OPF, spine, contents, sanitized chapters
core/*the pure fixation algorithm, shared with Bionic Page and unit-tested
shared/select.tsthe designed menus over native selects, keyboard-accessible

Privacy

There is no server.

Bionic Docs has nowhere to send your document. There is no backend, no analytics and no account, and a test fails the build if a network call appears anywhere in the source except the one that loads the file you opened.

  • PDF.js, its worker, cmaps and fonts are bundled
  • No eval, no remote scripts, a strict extension CSP
  • EPUB chapters are sanitized before they are shown
Network1 request
MethodURLStatus
GETfile:///Users/you/papers/report.pdf200
The document you opened. That is the only request.

Honest limits

What it does not do

The limits are part of the contract, not footnotes.

Scanned PDFs

A scan has no text layer, so the page is shown as the image it is, without emphasis. OCR is out of scope for now.

Embedded fonts

Emphasized text is drawn in the browser's own fonts, stretched to the original width, so letter shapes can differ from the document's.

Special glyphs

Text PDF.js paints inside transparency groups or as Type 3 glyphs keeps its original look and does not get the emphasis.

Book styling

EPUB rendering is intentionally minimal: no pagination and no publisher CSS beyond the sanitized chapter markup.

Install

Build it from source

Store listings are pending. One source tree builds both targets; load the one for your browser.

  1. 1Run the four commands on the right. You need Bun.
  2. 2Chrome or Edge: open chrome://extensions, turn on Developer mode, choose Load unpacked and pick dist/chrome.
  3. 3Firefox 140+: open about:debugging, This Firefox, Load Temporary Add-on, and pick dist/firefox/manifest.json.
zsh
$ git clone https://github.com/srivtx/bionic-docs
$ cd bionic-docs
$ bun install
$ bun run build
built dist/chrome
built dist/firefox

FAQ

Questions, answered plainly

Does my document get uploaded anywhere?

No. The file is read and parsed inside the extension page. There is no server to send it to, and the source is checked by a test that fails on any other network call.

Will the PDF still look like the PDF?

Yes. Each page is drawn as it was printed, figures and colours included, and the emphasized text sits in the same place on top. Only the letter shapes of the emphasized text can differ, because the browser's fonts stand in for the embedded ones.

Can I open PDFs from my computer?

Yes. Use Open a file… in the popup, or drag a file onto the reader. To open file:// PDFs that are already in a tab, allow file access for the extension in your browser's extension settings.

Does it work offline?

Yes. Everything it needs, PDF.js and its fonts included, is in the package. Nothing is fetched at run time.

Why does Firefox need version 140?

The manifest declares that the extension collects no data, and Firefox only understands that declaration from version 140.

Is this Bionic Reading?

No. It is an independent, MIT-licensed project that uses its own fixation algorithm, shared with its sibling Bionic Page. It is not affiliated with Bionic Reading GmbH.

Your documents, easier to follow.

Free, open source and on-device. Build it in a minute.