SpeedReadCPP is a terminal-based RSVP (Rapid Serial Visual Presentation) speed-reading tool written in C++17, based on the original Perl implementation by Petr Baudis (pasky).
This project faithfully recreates the originalโs functionality while improving portability, performance, and maintainability using modern C++ features.
The original speedread was a minimalist Perl script that displayed words one at a time in rapid sequence โ a technique called RSVP โ to help users read faster by minimizing eye movement.
This port keeps the same visual layout, key bindings, and pacing heuristics as the Perl version, but re-implements everything in C++ for easier compilation and distribution on modern systems.
- Fully terminal-based (ANSI escape sequences, no external UI libs)
- Maintains ORP (Optimal Recognition Point) alignment and color highlighting
- Adjustable WPM speed (
[slower /]faster) - Pause and resume with context preview (
SPACE) - Accurate word timing heuristics identical to the Perl implementation
- Real-time statistics and resume hint on exit
A simple Makefile is included that places object files and the binary in a build/ directory.
# Build
make
# Run interactively
cat some_text.txt | ./build/bin/speedread -w 300
# Clean build artifacts
make clean| Option | Long Form | Description |
|---|---|---|
-w N |
--wpm N |
Set words-per-minute speed (default 250) |
-r N |
--resume N |
Resume from word index N |
-m |
--multiword |
Merge short adjacent words for smoother pacing |
| Key | Action |
|---|---|
[ |
Slow down (โ10%) |
] |
Speed up (+10%) |
SPACE |
Pause / Resume (shows context lines) |
Ctrl-C |
Exit and show stats |
At the end, youโll see timing and performance stats like:
12.45s, 290 words, 1380 letters, 1398.00 true wpm
To resume from this point run with argument -r 290
- Original Perl implementation: pasky/speedread
- C++ port: this project โ rewritten for portability and performance.
Same as the original project โ MIT License.
ยฉ Petr Baudis and contributors C++ Port ยฉ 2025 Your Name
