npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

keysmasher

v0.2.3

Published

A terminal-based typing speed test inspired by MonkeyType

Downloads

1,641

Readme

keysmasher

A terminal-based typing speed test inspired by MonkeyType. Test your typing speed and accuracy right from your command line!

Features

  • 🎯 Real-time WPM (Words Per Minute) calculation
  • 📊 Live accuracy tracking
  • 🎨 Beautiful terminal UI with color-coded feedback
  • 💻 Syntax highlighting for code practice (GitHub Dark theme)
  • ⚡ Instant error highlighting (errors shown in red)
  • 🔄 Quick restart with Enter key
  • 📈 Detailed results screen with stats

Installation

bunx keysmasher

Or install globally:

bun install -g keysmasher

Usage

Default Mode (Random Words)

Simply run:

keysmasher

Code Practice Mode

Practice typing code with syntax highlighting:

# Practice with random JavaScript code
keysmasher --lang js

# Practice with random Python code
keysmasher --lang py

# Practice with random TypeScript code
keysmasher --lang ts

# Practice with random Markdown
keysmasher --lang md

Supported languages: javascript (js), typescript (ts), python (py), markdown (md), json, html, css, bash (sh), yaml (yml), rust (rs), go, java, c, cpp

Custom Text Mode

Practice with your own text:

# Plain text (no highlighting)
keysmasher "your custom text here"

# With syntax highlighting (must specify language)
keysmasher "your code here" --lang typescript
keysmasher "const x = 1" --lang js

Advanced Usage

Practice with content from files:

# Practice with content from a file
keysmasher "$(cat mytext.txt)"

# Practice with a random markdown file
keysmasher "$(find . -name "*.md" | head -1 | xargs cat)"

# Practice with your code
keysmasher "$(cat src/index.ts)"

# Practice with documentation
keysmasher "$(cat README.md)"

# Practice with specific lines from a file
keysmasher "$(head -n 10 article.txt)"

The text will be automatically split into groups of 25 words. Press Enter after completing each group to continue to the next one.

Controls

  • Start typing to begin the test
  • Typed text appears at full color intensity (with syntax highlighting if enabled)
  • Untyped text appears dimmed (60% opacity)
  • Errors are highlighted in red
  • Press Backspace to delete a character
  • Press Alt+Backspace (Option+Backspace on Mac) to delete an entire word
  • Press ESC or Ctrl+C to quit
  • Press Enter after completion to start a new test
  • Press Ctrl+R to restart test

Development

# Install dependencies
bun install

# Run locally
bun run cli

How It Works

The test displays 25 words at a time (either random words, code snippets, or your custom text). As you type:

Without syntax highlighting:

  • Untyped characters appear in dim gray (#666666)
  • Correctly typed characters appear in light gray (#e0e0e0)
  • Incorrect characters are shown in red (#ff6b6b)

With syntax highlighting:

  • Untyped characters appear dimmed (60% opacity and saturation of syntax color)
  • Correctly typed characters appear at full color from GitHub Dark theme
  • Incorrect characters are shown in red (#ff6b6b)
  • Language must be specified with --lang flag

General:

  • Your cursor position is highlighted with yellow background (#ffd43b)
  • All content is centered for optimal focus
  • Stats appear below in a single line: keysmasher • 45 wpm • 98% acc • 12.3s
  • When using custom text, pagination info shows your progress: 2/5 (page 2 of 5)
  • WPM is calculated using the standard formula: (characters / 5) / minutes
  • Accuracy is calculated as: (correct characters / total typed) × 100

License

MIT