Ntypo - Yet Another Typing Test
Ntypo is a minimal terminal-based typing speed test built with Python and ncurses.
It lets you challenge yourself to type a custom number of randomly selected words from a list, no distractions, no GUI fluff. Just you, your keyboard, and the clock.
Features
- Choose how many words you want to type (e.g. 30, 50, 100…)
- Loads words from an external file (
words.txt) - Measures WPM (Words Per Minute)
- Tracks accuracy, correct and incorrect keystrokes
- ESC to quit anytime (with confirmation)
- Saves session logs to CSV (
ntypo.csv) - Adaptive layout with top/bottom bars
- Fully keyboard-driven and terminal-native
Installation
Install via pip:
pip install ntypo
Then run the app:
ntypo
To install from source:
git clone https://github.com/bearenbey/ntypo.git
cd ntypo
pip install .
Dependencies:
- Python 3.8 or higher
- A terminal that supports ncurses
Usage
- Launch the app in your terminal
- Enter how many words you want to practice
- Type the displayed text — your speed and stats will be tracked
- Press ESC anytime to quit (confirmation popup included)
Keybindings:
- Type normally: your input is tracked in real time
- Backspace: delete last character
- ESC: open quit confirmation
- Any key: dismiss the end-of-test message
The app adjusts to terminal size and wraps text dynamically. All results are saved to ntypo.csv.
Words File
The app uses a simple plaintext file (words.txt) where each line is a word:
apple
orange
keyboard
syntax
...
You can modify this list or swap it out for your own vocabulary.
License
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.
© 2025 Eren Öğrül — termapp@pm.me
Metadata
Release files for ntypo 2.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ntypo-2.1.0.tar.gz | 10.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ntypo-2.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 20.3 kB
Release files / ntypo-2.1.0.tar.gz
| Download URL | ntypo-2.1.0.tar.gz |
|---|---|
| Size | 10.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9e6589720ac67994ba987e4a854d74faa0b22510889ebec7ddea8b4b139ae590
|
|
BLAKE2b-256 checksum How to use checksums |
bc15deaeaea2642a499f43500a1b8fa72a9432a3e4151e8e0f606747b7440dcb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.5
|
Release files / ntypo-2.1.0-py3-none-any.whl
| Download URL | ntypo-2.1.0-py3-none-any.whl |
|---|---|
| Size | 10.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
74c1825387babf3fe53614a5237233aa5f77d4771c135a388f7dca9a01671a4b
|
|
BLAKE2b-256 checksum How to use checksums |
804f1b6389023e992ddfa48f2121547ff89e5d1e5a40bd9253eb5baebe02828e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.5
|