SpeedReader β Read faster with RSVP technology
FlashRead is a speed reading application that uses RSVP (Rapid Serial Visual Presentation) technology with ORP (Optimal Recognition Point) alignment. It displays words one at a time with the middle character highlighted on a fixed vertical center line, eliminating eye movement and enabling reading speeds of 300-1200+ WPM.
π‘ RSVP technology allows you to read faster by presenting words sequentially in a fixed position, removing the time your eyes spend searching for the next word.
| Feature | Description |
|---|---|
| β‘ RSVP Speed Reading | Words flash one at a time at your chosen speed |
| π― ORP Alignment | Optimal recognition point highlighted on center line |
| π 300-1200+ WPM | Adjustable reading speed with smart timing |
| βΈοΈ Smart Pausing | Automatic pauses for commas, periods, and sentence endings |
| π URL Import | Load articles directly from any webpage |
| β¨οΈ Keyboard Controls | Space, arrows, and R for full control |
| π Customizable | Adjustable font size (28-92px) |
| Key | Action |
|---|---|
Space |
Play / Pause |
β |
Next word |
β |
Previous word |
R |
Restart from beginning |
- React 19 β UI Framework
- TypeScript β Type safety
- Vite β Fast build tool
- Tailwind CSS 4 β Styling
- Framer Motion β Animations
- Lucide React β Icons
- Node.js 18+
- npm or yarn
# Clone the repository
git clone https://github.com/ronakmunjapara/FlashRead.git
# Navigate to the project
cd FlashRead
# Install dependencies
npm installnpm run devnpm run buildnpm run previewFlashRead/
βββ public/
β βββ favicon.svg
βββ src/
β βββ components/
β β βββ ControlsPanel.tsx # Input controls, WPM slider, URL loader
β β βββ Reader.tsx # Word display with ORP highlighting
β βββ lib/
β β βββ text.ts # Text processing, tokenization, ORP logic
β β βββ fetchArticle.ts # URL content fetching via proxy
β βββ App.tsx # Main application component
β βββ main.tsx # Entry point
β βββ index.css # Global styles
βββ index.html # HTML template with SEO metadata
βββ package.json # Dependencies
βββ vite.config.ts # Vite configuration
βββ tsconfig.json # TypeScript configuration
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β FlashRead Flow β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β βββββββββββ βββββββββββββββ βββββββββββββββββββ β
β β Text βββββΆβ Tokenization βββββΆβ ORP Calculationβ β
β β Input β β β β β β
β βββββββββββ βββββββββββββββ ββββββββββ¬βββββββββ β
β β β
β ββββββββββββββββββββββββββββββββββββββββββββ΄βββββββββββ β
β β βΌ β
β β ββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β Word Display (RSVP) β β
β β β β β
β β β [left] [ORP] [right] β β
β β β βββββββΊ β β
β β β fixed center line β β
β β ββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββ¬ββββ
β β
β ββββββββββββββββ β
β β Timing βββββββββββββββββ
β (WPM based) β
ββββββββββββββββ
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
The Optimal Recognition Point (ORP) is calculated based on word length:
| Word Length | ORP Position |
|---|---|
| 1-5 chars | Position 1 |
| 6-9 chars | Position 2 |
| 10-13 chars | Position 3 |
| 14+ chars | Position 4 |
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Inspired by Spritz RSVP technology
- ORP algorithm based on research in visual recognition points
- Built with the amazing Vite ecosystem
Made with β€οΈ by @ronakmunjapara