gitmyhub

monkeytype

TypeScript ★ 20k updated 4h ago

The most customizable typing website with a minimalistic design and a ton of features. Test yourself in various modes, track your progress and improve your speed.

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.

TypeScriptSolidJSExpressMongoDBRedisFirebaseTurboreposetup: hardcomplexity 3/5

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.

Where it fits