Skip to main content

A terminal-based typing speed test using python.

Project description

Pytype - Terminal Typing Speed Test

A fast, minimal terminal-based typing speed test written in Python. Test your typing speed and accuracy right from your terminal.

Features

  • Real-time typing test with live WPM and accuracy feedback
  • Color-coded visual feedback - Green for correct characters, red for mistakes
  • Customizable test duration (default 60 seconds)
  • Simple terminal UI using Python's curses library
  • Cross-platform support (Linux, macOS, Windows with WSL)
  • Multiple test prompts to prevent memorization

Installation

From Source

git clone https://github.com/basanta-bhandari/Pytype.git
cd Pytype
pip install -e .

Quick Start

Run the typing test directly:

python3 main.py

How to Use

  1. Start the application - You'll see a welcome screen with instructions
  2. Press 's' to begin a 60-second typing test
  3. Type the displayed text as quickly and accurately as you can
  4. Use Backspace to correct any mistakes
  5. Test ends when you complete the text or time runs out
  6. View your results - See your WPM, accuracy percentage, and character count
  7. Press 'r' to retry or 'q' to quit

Controls

Key Action
s Start test
q Quit application
Backspace Delete last character
Enter Finish typing (optional)
r Retry after results
ESC Exit test

Metrics

  • WPM (Words Per Minute) - Calculated as characters typed / 5 / minutes elapsed
  • Accuracy - Percentage of correctly typed characters
  • Typed - Total characters typed

Requirements

  • Python 3.7 or higher
  • curses module (included on Linux/macOS)
  • windows-curses (automatically installed on Windows)

Installation by OS

Linux / macOS

python3 -m pip install -e .
typing-test

Windows

pip install windows-curses
python3 main.py

Dependencies

  • windows-curses (Windows only) - Terminal control library for Windows

Development

To contribute or modify the code:

  1. Clone the repository
  2. Make your changes
  3. Test with python3 main.py
  4. Submit a pull request

Known Limitations

  • Curses library behavior may vary slightly across different terminal emulators
  • Windows support requires WSL or the windows-curses package
  • Custom test durations are not yet available via CLI arguments

Troubleshooting

"The curses module is required" error on Windows:

pip install windows-curses

Terminal display issues:

  • Try resizing your terminal window
  • Ensure your terminal supports color output
  • Use a modern terminal emulator (iTerm2, Windows Terminal, GNOME Terminal, etc.)

No text appearing:

  • Check that your terminal width is at least 60 characters
  • Verify curses is properly installed

Feedback

Found a bug? Have a feature request? Open an issue on GitHub.

Future Enhancements

  • Custom test duration via CLI arguments
  • Difficulty levels (easy, medium, hard)
  • Score history tracking
  • Theme customization
  • Using Pypi for convinience

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pytype_b1-0.1.0.tar.gz (5.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pytype_b1-0.1.0-py3-none-any.whl (5.3 kB view details)

Uploaded Python 3

File details

Details for the file pytype_b1-0.1.0.tar.gz.

File metadata

  • Download URL: pytype_b1-0.1.0.tar.gz
  • Upload date:
  • Size: 5.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.9

File hashes

Hashes for pytype_b1-0.1.0.tar.gz
Algorithm Hash digest
SHA256 6dd7b37be51afa3554df9356ba21177c7fbc922522d64c899dff9e333e771667
MD5 c3384b79a5a911ca0962e012d628e0f6
BLAKE2b-256 dffaf50f68f7e182def1899f6d8778a4353e4aed5945f558b46999461596d035

See more details on using hashes here.

File details

Details for the file pytype_b1-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: pytype_b1-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 5.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.9

File hashes

Hashes for pytype_b1-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a093fd8d3c260cbf7f187965450e627282857c23ada84d14e3c6cbfe1691873a
MD5 c29aa68d061e8b70d4dc1325b1b813e7
BLAKE2b-256 afcc080e609ca5ed8315fa4852ccadbfd0698be0bb035ea8e9c20444032cacdb

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page