A web-based RSVP (Rapid Serial Visual Presentation) speed reader that displays text one word at a time, allowing you to read at 100-900+ words per minute without eye movement.
Live site: quickreader.app
───────|───────
ama|zing
───────|───────
The ORP (red letter) stays fixed while words flow past, eliminating eye movement and dramatically increasing reading speed.
# Install dependencies
npm install
# Start development server
npm run dev
# Build for production
npm run build
Open http://localhost:5173 and load a file to start reading. Try the built-in samples or load your own ebooks and documents.
| Key | Action |
|---|---|
Space |
Play/Pause |
← / → |
Previous/Next word |
Ctrl+← / Ctrl+→ |
Previous/Next paragraph |
Page Up / Page Down |
Previous/Next page |
[ / ] |
Decrease/Increase speed by 50 WPM |
Esc |
Close modals |
RSVP displays words one at a time at a fixed focal point. The Optimal Recognition Point (ORP) - the letter your eye naturally focuses on - is highlighted and centered, eliminating the need for eye movement across the page.
ORP positioning by word length:
Smart timing adjustments:
src/
├── lib/
│ ├── components/ # Svelte components
│ │ ├── Redicle.svelte # Word display with ORP
│ │ ├── Controls.svelte # Playback controls
│ │ ├── FileLoader.svelte # File input
│ │ ├── Preview.svelte # Context preview panel
│ │ └── Settings.svelte # Theme/font settings
│ ├── stores/ # Svelte stores
│ │ ├── reader.ts # Playback state
│ │ ├── document.ts # Loaded document
│ │ └── settings.ts # User preferences
│ └── utils/ # Utilities
│ ├── adapters/ # Format adapters (EPUB, PDF, DOCX, etc.)
│ ├── orp.ts # ORP calculation
│ └── *-parser.ts # Format-specific parsers
├── routes/
│ ├── +page.svelte # Main reader page
│ ├── about/ # About RSVP technology
│ ├── help/ # Keyboard shortcuts & guide
│ └── privacy/ # Privacy policy
└── static/samples/ # Built-in sample files
Contributions are welcome! Please feel free to submit a Pull Request.
MIT License - see LICENSE for details.