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.
Find a file
Jack 3c4212b718
refactor: commandline (#5180)
* initial rewrite

* remove title

* remove from dom on hide

* actual command dom
show active
keep active in view
update active index on keypress

* global event only shows commandline

* impr(dev): showing notifications with unhandled errors

* rename functions

* handle hover functions
handle nesting
handle exec
attaching handlers once

* void promise

* no need for async

* move font preview to ui

* add configkey to command

* add function to build single list

* add mouse mode
clearing preview on hide
add config icon

* using new function

* use fw icon

* fix incorrect type

* extract logic

* add support for input commands

* unused error

* update single list

* chevron icon margin

* only focusing when no popups and words are visible

* extract condition

* better type

* remove no icon

* only showing when nothing is already visible

* commandline lists no longer modify the commandline element
dynamically changing which funbox commnands are available
modified searching approach
showing active settings in single mode again
calling before list if needed

* ignore keydown on page transition

* add other ways to show the commandline

* always clearing previews

* incorrect icon being used

* extract logic

* support quick single list mode by starting input with >

* fix test words not being focused

* showing all if in quick single mode

* remove unused code

* rename entry to command

* remove more unused code

* add data- prefix

* rename to data-command-id

* fix input commands not refocusing words

* fix fontsize change not working as intended

* set active index to 0 when going back

* keeping active command in view

* remove console logs

* fix quick single mode

* move file

* add footer events

* add option for subgroup override
fix issue where commands would get hidden after clearing input field
fixed auto scrolling in mouse mode

* rename commands to lists

* add background after to avoid flashing

* getting config key from active subgroup

* updating active command after removing hidden class but before animating

* fix nasty hover behavior

* updating active before animation showing, keeping active after

* add keymap event

* remove comments

* invert if, use return, combine ifs to reduce nesting

* add test event

* popups events

* fix some commands not showing up on a single list

* use new animated modal

* use regex escaping function from misc

* add singlelistdisplay and singlelistdisplaynoicon properties

* add more navigation aliases

* not adding alias if not needed

* rework command filtering

* fix active icon not working

* add custom hide handlers

* fix active command not being kept in view after showing

* unused imports

* remove commandlinelists imports from other files

* delete old file

* remove unused file

* import commandline dynamically

* fix: if skeleton has wrapper, append before building animated modal

* using new parameters

* save skeleton on ready

* rename folder

* add util to get async modules

* remove empty imports

* remove unnecessary code

* unnecessary void

* catching errors and notifying user

* better error message

* making sure all the lists are fetched before getting the single command list

* add tab navigation
2024-03-05 19:34:35 +01:00
.github ci: add recaptcha site key 2024-02-27 01:08:38 +01:00
.husky chore: disable commitlint in commit-msg hook 2023-08-13 12:34:54 +02:00
.vscode test: replace jest with vitest on frontend (fehmer) (#5105) 2024-02-26 12:23:50 +01:00
backend feat: indicate premium users (fehmer) (#5092) 2024-03-05 16:09:23 +01:00
bin chore: improve bulid changelog script 2024-01-24 13:44:30 +01:00
frontend refactor: commandline (#5180) 2024-03-05 19:34:35 +01:00
shared-types feat: indicate premium users (fehmer) (#5092) 2024-03-05 16:09:23 +01:00
.dockerignore impr(dev): allow docker compose to start the backend server (plbstl, Miodec) (#4995) 2024-02-28 14:17:09 +01:00
.editorconfig Add .editorconfig (#1976) 2021-10-10 16:09:32 +01:00
.eslintignore remove run-script-os and change the script back (#2573) 2022-02-23 01:07:48 +01:00
.eslintrc.json chore: add no mixed operators rule 2024-02-17 17:24:41 +01:00
.gitignore test: replace jest with vitest on frontend (fehmer) (#5105) 2024-02-26 12:23:50 +01:00
.npmrc Enforce save exact (#2918) 2022-05-01 21:34:29 +02:00
.nvmrc chore: update node version to 18.19.1 (#5060) 2024-02-15 21:23:29 +01:00
.prettierignore Add pretty check (#2990) bruception 2022-05-19 11:31:18 +02:00
.prettierrc TypeScript FrontEnd: Add Account Files (#2494) 2022-02-19 17:44:27 +01:00
.release-it-fe.json build: replace webpack with vite (#5096) 2024-02-22 02:24:20 +01:00
.release-it.json build: replace webpack with vite (#5096) 2024-02-22 02:24:20 +01:00
CODE_OF_CONDUCT.md docs: fix typos and grammatical errors (theranjitraut) (#4728) 2023-10-23 16:51:09 +01:00
commitlint.config.js build: update allowed commit type 2023-08-10 23:19:51 +02:00
CONTRIBUTING.md docs: fix typos and grammar (LifeAdventurer) (#4818) 2023-11-28 14:13:04 +00:00
CONTRIBUTING_ADVANCED.md impr(dev): allow docker compose to start the backend server (plbstl, Miodec) (#4995) 2024-02-28 14:17:09 +01:00
CONTRIBUTING_BASIC.md docs: fix typos and grammatical errors (theranjitraut) (#4728) 2023-10-23 16:51:09 +01:00
example.env build: add script to deploy backend server 2023-08-11 16:28:20 +02:00
LANGUAGES.md docs: fix typos and grammatical errors (theranjitraut) (#4728) 2023-10-23 16:51:09 +01:00
LICENSE
monkeytype.code-workspace test: replace jest with vitest on frontend (fehmer) (#5105) 2024-02-26 12:23:50 +01:00
package-lock.json chore: release v24.9.1 2024-03-03 22:05:57 +01:00
package.json chore: release v24.9.1 2024-03-03 22:05:57 +01:00
QUOTES.md Corrected typo (#3402) JacoChong 2022-08-12 15:01:55 +02:00
README.md docs: fix typos and grammatical errors (theranjitraut) (#4728) 2023-10-23 16:51:09 +01:00
SECURITY.md updated email addresses 2023-02-14 00:22:37 +01:00
THEMES.md Adding new theme earthsong and fixing typo on THEMES.md (#3756) Guillermo-N 2022-11-21 13:24:48 +01:00


TypeScript SASS HTML5

About

Monkeytype is a minimalistic and customizable typing test. It features many test modes, an account system to save your typing speed history, and user-configurable features such as themes, sounds, a smooth caret, and more. Monkeytype attempts to emulate a natural typing experience during a typing test by unobtrusively presenting the text prompts and displaying typed characters in place, providing straightforward, real-time feedback on typos, speed, and accuracy.

Features

  • minimalistic design, with optional advertisements and focus mode while typing
  • type what you see, see what you type
  • live errors, wpm, and accuracy displays
  • a variety of test lengths and languages
  • punctuation and numbers modes
  • quotes
  • themes
  • smooth caret
  • account system
  • challenges and just-for-fun test modifiers
  • and much more

Discord bot

On the Monkeytype Discord server, we added a Discord bot to auto-assign optional roles based on typing performance and challenge completion. You can find its code over at https://github.com/monkeytypegame/monkeytype-bot.

Bug report or Feature request

If you encounter a bug or have a feature request, send us an email, create an issue, create a discussion thread, or join the Discord server.

Want to Contribute?

Refer to CONTRIBUTING.md.

Code of Conduct

Before contributing to this repository, please read the code of conduct.

Credits

Montydrei for the name suggestion.

Everyone who provided valuable feedback on the original Reddit post for the prototype of this website.

All of the contributors have helped implement various features, add themes, fix bugs, and more.

Support

If you wish to support further development and feel extra awesome, you can donate, become a Patron or buy a t-shirt.