Skip to main content

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

  1. Launch the app in your terminal
  2. Enter how many words you want to practice
  3. Type the displayed text — your speed and stats will be tracked
  4. 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)

Source distribution for ntypo 2.1.0
File Size Uploaded
ntypo-2.1.0.tar.gz 10.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ntypo 2.1.0
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

2.1.0 This release

2 release files

2.0.0

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page