menu Menu

BookBlaster - A Rapid Serial Visual Presentation (RSVP) App

I was inspired by an NPR post to put together an RSVP speed-reading app. (LONG LIVE NPR.)

The app rapidly displays book text at up to 1000 words per minute, and reads PDF, Epub, Mobi, and TXT files in word chunks of 1 to 7.  It’s called BookBlaster.

In Rapid Serial Visual Presentation (RSVP) applications, large texts (books, articles, etc.) are displayed with a single red letter located somewhere within the chunk. These red letters are chosen by an algorithm, based on experimental data, which determines the Optimal Recognition Point (ORP) of a given word or collection of words. (In some literature, this is also called the “Optimal Viewing Position.”)

The goal of highlighting this point is to minimize the time your brain spends processing a word, by centering it exactly where your eyes can identify it most efficiently. This point, at least in languages written left-to-right, shows a bias toward the front of the word and is not displayed exactly at the center.

Find it here: BookBlaster


How the ORP is Determined

The selection isn’t random; it follows a specific linguistic and mathematical formula based on the length of the word. Since our peripheral vision is weaker than our central vision (the fovea), the application “anchors” the word so that the most informative part hits the center of your gaze.

Typically, the red letter is chosen based on these general rules:

For Short Words (1–3 letters): The first letter is usually highlighted.

For Medium Words (4–5 letters): The second letter is highlighted.

For Long Words (6–9 letters): The third letter is highlighted.

For Very Long Words (10+ letters): The fourth or fifth letter is highlighted.

The Physics of Focus

When you read normally, your eyes move in jumps called saccades. During these jumps, you are effectively blind; the brain only processes information during the “fixation” (the pause).

RSVP eliminates the need for saccades by:

  1. Fixed Positioning: Keeping the ORP in the exact same physical spot on the screen.

  2. Reducing Muscle Strain: Your eye muscles don’t have to move back and forth across a page, which reduces fatigue and prevents “subvocalization” (the habit of saying words in your head).

Why Red?

The color red is used because it provides the highest contrast against standard black-and-white text and acts as a “visual anchor.” It gives your eye a specific target to rest on, ensuring that the most complex part of the word (the middle-front) is processed instantly.

____________________________________________

Notes: The app is fairly simple.

  • Select the Words Per Minute (WPM) using the slider at the bottom of the page. Chunk size—the number of words displayed per tick—is also selected via slider at the bottom of the page.
  • For EPUB files, chapter headings will be displayed in the left panel and can be selected, allowing you to navigate your book chapter by chapter.
  • The large slider at the bottom is the progress bar.
  • There is a Light Mode/Dark Mode toggle—the little moon or sun icon located in the upper-right corner.
  • Finaly there’s the Open File button. You can search for files on your device by clicking that, or simply drag your file into the main window. If using the browser version, note that uploaded files are not stored anywhere. Everything happens in-memory in the browser tab. When you pick a file, the FileLoader in script.js reads it using browser File APIs (file.text(), file.arrayBuffer()), then extracts the words and chapters, and passes them to the RSVPEngine instance. The engine holds them in plain JS arrays (this.words, this.chapters). So there’s no server upload, no IndexedDB, and no localStorage. Just JavaScript variables.This means the data is gone when you refresh the page or close the tab. Your file will need to be re-opened to read it again.
  • The downloadable version will save your place. I’ll make that available as soon as possible.


Previous Next

Leave a Reply

Your email address will not be published. Required fields are marked *

Cancel Post Comment

keyboard_arrow_up