explaingit

monkeytypegame/monkeytype

📈 Trending20,022TypeScriptAudience · vibe coderComplexity · 3/5ActiveLicenseSetup · hard

TLDR

A customizable typing speed test website with real-time feedback, multiple test modes, account tracking, and themes. Practice typing and watch your words-per-minute improve over time.

Mindmap

mindmap
  root((Monkeytype))
    What it does
      Typing speed tests
      Real-time feedback
      Progress tracking
      Customizable modes
    Features
      Multiple languages
      Themes and cosmetics
      Sound effects
      Focus mode
    Test modes
      Time limits
      Word counts
      Quotes mode
      Challenges
    Tech stack
      TypeScript
      SolidJS frontend
      Express backend
      MongoDB
    Use cases
      Practice typing
      Track improvement
      Self-host instance
      Study web apps

Things people build with this

USE CASE 1

Practice typing and measure your words-per-minute to improve speed and accuracy over time.

USE CASE 2

Self-host your own typing test website with full customization of modes, themes, and test parameters.

USE CASE 3

Study a polished, real-time interactive web application with live feedback and account management.

USE CASE 4

Challenge yourself with different test modes like quotes, punctuation variants, and language-specific tests.

Tech stack

TypeScriptSolidJSExpressMongoDBRedisFirebaseTurborepo

Getting it running

Difficulty · hard Time to first run · 1day+

Multiple services required: MongoDB, Redis, Firebase config, and Express backend; Turborepo monorepo coordination adds complexity.

Use it freely, but any project you distribute that includes this code must also be GPL-licensed and open source.

In plain English

Monkeytype is a highly customizable typing speed test website. The premise is simple: text appears on screen and you type it as quickly and accurately as possible, then the site tells you your words per minute and accuracy. What distinguishes Monkeytype from simpler typing tests is the depth of customization and the quality of the feedback experience. While typing, it shows live error highlights, current speed, and accuracy in real time without interrupting your flow. The test offers a wide range of modes: different time limits, word counts, punctuation and number variants, quotes, and support for many languages. There is an account system that stores your typing history over time so you can track improvement. Cosmetically, users can select from many themes, adjust the cursor style, enable sound effects, and switch into a distraction-free focus mode. The site also includes challenges and novelty test modifiers for variety. The underlying tech stack is modern: TypeScript throughout, a SolidJS front end, an Express back end, MongoDB for data storage, Redis for caching, and Firebase for authentication. The whole project uses a monorepo structure managed with Turborepo. You would use Monkeytype if you want to practice typing and track your progress over time, or if you are a developer who wants to self-host a customizable typing test. It is also a good reference codebase for developers studying how to build a polished, interactive web application with a real-time feedback loop.

Copy-paste prompts

Prompt 1
How do I set up Monkeytype locally to self-host my own typing test instance?
Prompt 2
Show me how to add a custom theme or modify the styling in Monkeytype's frontend.
Prompt 3
How does Monkeytype calculate and display real-time words-per-minute and accuracy while typing?
Prompt 4
What's the best way to contribute a new typing test mode or language to Monkeytype?
Prompt 5
How can I export my typing history and statistics from Monkeytype for analysis?
Open on GitHub → Explain another repo

Generated 2026-05-18 · Model: sonnet-4-6 · Verify against the repo before relying on details.