_ _
| | _____ _ _| |__ _ __
| |/ / _ \ | | | '_ \| '__|
| < __/ |_| | |_) | |
|_|\_\___|\__, |_.__/|_|
|___/
keybr.com's adaptive algorithm, ported to the command line. keybr-tui times every key you press, finds the ones slowing you down, and builds drills aimed straight at them. A faithful port of the keybr.com engine that runs fully offline, with optional import of your keybr.com history.
curl -sSf https://y0sif.github.io/keybr-tui/install.sh | sh
cargo install keybr-tui
Also available as a pre-built binary / crate / source build for Linux, macOS, and Windows.
Phonetic Markov chains generate pronounceable pseudo-words from your active letters. A faithful port of the keybr.com algorithm, not a wordlist or random characters.
Every keystroke's reaction time feeds an exponential moving average. keybr-tui scores each key against your target speed to know exactly where you're slow.
Start with a handful of letters. New ones unlock from a frequency-ordered list only once your active set reaches confidence, so you're never overwhelmed.
Download your data export from keybr.com and --import it. Your unlocked letters, per-key speeds, and focus key carry over exactly.
No network requests, ever. Stats and config live in plain files under your XDG directories. Your typing data stays on your machine.
Built with ratatui and terminal-native ANSI colors. The interface gets out of your way during practice. Just text, WPM, and accuracy.
You start with a small set of letters. The scheduler tracks per-key reaction time with exponential smoothing and computes a confidence score against your target speed.
When all active letters reach sufficient confidence, a new letter is unlocked from a frequency-ordered list.
The weakest key in your active set becomes the focus key and appears more often in generated text until it catches up.
A Markov chain trained on English phonetic patterns produces pronounceable pseudo-words using only your active letters, biased toward the focus key.
At the end of each lesson, every key's mean latency updates its moving average, the same per-result smoothing keybr.com applies.
| Tool | Type | Adaptive? | Offline | Local stats |
|---|---|---|---|---|
| keybr-tui | TUI | Yes (Markov + confidence) | Yes | Yes (plain files) |
| keybr.com | Web | Yes (origin algorithm) | No (browser + account) | Account |
| tt | TUI | No (wordlist) | Yes | Limited |
| toipe / typer | TUI | No (wordlist) | Yes | Limited |
| monkeytype | Web | Partial | No | Account |
keybr-tui sits at the intersection of adaptive and terminal-native: the keybr.com learning algorithm, offline, with your data in plain local files. Full breakdown in docs/comparison.md.
A terminal-native typing trainer written in Rust with ratatui. It uses the adaptive phonetic Markov-chain algorithm from keybr.com to schedule practice around the keys you're weakest on.
It's a faithful port of the keybr.com adaptive algorithm to a terminal UI. Same learning, but fully offline, with stats in plain local files and no account, browser, or network requirement.
Yes. On keybr.com, open your profile and click Download data to get a typing-data.json, then run keybr-tui --import typing-data.json. Your unlocked letters, per-key speeds, and focus key come out exactly as the website computed them.
Yes. keybr-tui never makes a network request. Text is generated locally and all metrics are written to local files.
Any modern emulator with a 256-color or true-color ANSI palette and a monospace font: Alacritty, Kitty, WezTerm, foot, iTerm2, Windows Terminal, GNOME Terminal, and more, on Linux, macOS, and Windows.
Yes, MIT-licensed. Install with cargo install keybr-tui, the one-line script, or a pre-built binary. More in the full FAQ.