An Obsidian plugin for improving typing speed and accuracy with real-time statistics, visual keyboard, timed tests, focused drills, and progress tracking.
Note: Screenshots coming soon. The plugin features a clean modal interface with real-time statistics, a color-coded visual keyboard, and progress charts.
Quote Mode
- Type through curated quotes of varying lengths
- Choose difficulty: Short, Medium, Long, or All Lengths
- Track your best WPM and accuracy per quote
- See improvement over time with quote history
Timed Test Mode
- Standard typing test format (like Monkeytype/TypeRacer)
- Duration options: 15 seconds, 30 seconds, 1 minute, 2 minutes, 5 minutes
- Continuous text generation - never run out of words
- Personal best tracking per duration
- Compare your WPM to standardized benchmarks
- On-screen QWERTY keyboard showing which keys to press
- Two display styles:
- Finger Zones: Color-coded by which finger should press each key
- Theme Colors: Matches your Obsidian theme
- Toggle visibility on/off
- Keys highlight as you type
- WPM: Words per minute (standard: 5 characters = 1 word)
- Accuracy: Percentage of correct keystrokes
- Time/Remaining: Elapsed time (quote mode) or countdown (timed mode)
- Characters: Progress through the text
- Errors: Total mistakes made
- Satisfying mechanical "thunk" on correct keystrokes
- Error sound for mistakes
- Completion chime when finishing
- Fanfare for new personal records
- Adjustable volume (0-100%)
Targeted practice for specific key groups:
| Drill | Focus |
|---|---|
| Home Row | ASDF JKL; keys |
| Top Row | QWERTY UIOP keys |
| Bottom Row | ZXCVB NM keys |
| Numbers | 0-9 and number symbols |
| Punctuation | Common punctuation marks |
| Capitals | Shift key practice |
Practice with your own content:
- Clipboard: Paste text from anywhere
- Current Note: Import text from the active Obsidian note (markdown stripped)
- Saved Texts: Save favorite practice texts for later
- Tracks error rate for each key you type
- Identifies your weakest keys (>15% error rate)
- View problem keys in the Statistics modal
- Focused drills suggested based on your weak areas
- Quote History: Per-quote performance over time
- Timed History: Results for each duration
- Statistics Modal:
- WPM trend chart (rolling average)
- Accuracy trend chart
- Recent sessions table
- Summary statistics
- Open Obsidian Settings
- Go to Community Plugins and disable Restricted Mode
- Click Browse and search for "Typing Practice"
- Click Install, then Enable
- Download
main.js,styles.css, andmanifest.jsonfrom the latest release - Create folder:
<vault>/.obsidian/plugins/typing-game/ - Copy the three files into that folder
- Open Obsidian Settings > Community Plugins
- Enable "Typing Practice"
- Open: Click the keyboard icon in the ribbon, or use Command Palette: "Open typing practice"
- New Quote/Test: Press
TaborEnterafter completing - Retry Same Text: Press
Rafter completing - Close: Press
Escapeor click outside the modal
| Key | Action |
|---|---|
Tab |
Skip to new quote/test |
Enter |
Start new quote/test (on results screen) |
R |
Retry the same text |
Backspace |
Delete last character (disabled in Strict Mode) |
Escape |
Close modal |
Access via Obsidian Settings > Typing Practice
| Setting | Description |
|---|---|
| Show keyboard | Toggle visual keyboard visibility |
| Keyboard style | Finger zones (color-coded) or Theme (matches Obsidian) |
| Default difficulty | Short, Medium, Long, or All Lengths |
| Quote font size | Adjust text size (0.8x - 2.0x) |
| Hide stats while typing | Blur stats to reduce pressure |
| Show confetti | Celebration animation on new records |
| Show keyboard animations | Next-key glow, press feedback effects |
| Show progress bar | Character progress display |
| Show instruction hints | Keyboard shortcut hints on results screen |
| Show time warning | Flash timer when running low (timed mode) |
| Setting | Description |
|---|---|
| Enable sound effects | Toggle all sounds on/off |
| Sound volume | Adjust volume (0-100%) |
| Setting | Description |
|---|---|
| Strict mode | Disables backspace - forces accuracy |
| Auto-advance | Automatically start next quote after completion |
| Auto-advance delay | Wait time before auto-advancing (1-10 seconds) |
| Setting | Description |
|---|---|
| Default game mode | Quote or Timed |
| Default test duration | 15s, 30s, 1min, 2min, or 5min |
| Action | Description |
|---|---|
| Clear quote history | Remove all quote performance data |
| Clear timed test history | Remove all timed test results |
| Clear key statistics | Reset problem key analysis |
| Clear custom texts | Remove all saved custom texts |
This plugin is desktop only. It requires:
- Web Audio API for sound effects
- Physical keyboard input for typing practice
- Larger screen for the visual keyboard display
These features are not available or practical on Obsidian Mobile.
- First keystroke delay: On some systems, the first keystroke after opening may have a slight delay as the AudioContext initializes
- Narrow windows: The visual keyboard is hidden at window widths below 400px to maintain usability
- No build required: Pure JavaScript, works directly in Obsidian
- Desktop only: Uses Web Audio API for sound effects
- Data storage: All data saved via Obsidian's plugin storage
- Theme compatible: Uses Obsidian CSS variables for consistent theming
MIT License - see LICENSE file for details.
Built for Obsidian using the Obsidian Plugin API.
Issues and pull requests are welcome at the GitHub repository.