2022-05-03 19:44:39 +08:00
[![ ](https://github.com/monkeytypegame/monkeytype/blob/master/frontend/static/images/githubbanner2.png?raw=true )](https://monkeytype.com/)
2020-11-25 21:34:21 +08:00
< br / >
2024-08-08 23:06:50 +08:00
![ChartJs ](https://img.shields.io/badge/Chart.js-FF6384?style=for-the-badge&logo=chartdotjs&logoColor=white )
![Eslint ](https://img.shields.io/badge/eslint-4B32C3?style=for-the-badge&logo=eslint&logoColor=white )
![Express ](https://img.shields.io/badge/-Express-373737?style=for-the-badge&logo=Express&logoColor=white )
![Firebase ](https://img.shields.io/badge/firebase-ffca28?style=for-the-badge&logo=firebase&logoColor=black )
![Fontawesome ](https://img.shields.io/badge/fontawesome-538DD7?style=for-the-badge&logo=fontawesome&logoColor=white )
2022-07-06 17:22:57 +08:00
![HTML5 ](https://img.shields.io/badge/html5-%23E34F26.svg?style=for-the-badge&logo=html5&logoColor=white )
2024-08-08 23:06:50 +08:00
![JQuery ](https://img.shields.io/badge/jQuery-0769AD?style=for-the-badge&logo=jquery&logoColor=white )
![MongoDB ](https://img.shields.io/badge/-MongoDB-13aa52?style=for-the-badge&logo=mongodb&logoColor=white )
![PNPM ](https://img.shields.io/badge/pnpm-F69220?style=for-the-badge&logo=pnpm&logoColor=white )
![Redis ](https://img.shields.io/badge/Redis-DC382D?style=for-the-badge&logo=redis&logoColor=white )
![SASS ](https://img.shields.io/badge/SASS-hotpink.svg?style=for-the-badge&logo=SASS&logoColor=white )
![TsRest ](https://img.shields.io/badge/-TSREST-9333ea?style=for-the-badge&logoColor=white&logo=data:image/svg%2bxml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB3aWR0aD0iMjAuMzA2Nzc4bW0iCiAgIGhlaWdodD0iMTIuMDgzMjMzbW0iCiAgIHZpZXdCb3g9IjAgMCAyMC4zMDY3NzggMTIuMDgzMjMzIgogICB2ZXJzaW9uPSIxLjEiCiAgIGlkPSJzdmcxIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogIDxzb2RpcG9kaTpuYW1lZHZpZXcKICAgICBpZD0ibmFtZWR2aWV3MSIKICAgICBwYWdlY29sb3I9IiM1MDUwNTAiCiAgICAgYm9yZGVyY29sb3I9IiNmZmZmZmYiCiAgICAgYm9yZGVyb3BhY2l0eT0iMSIKICAgICBpbmtzY2FwZTpzaG93cGFnZXNoYWRvdz0iMCIKICAgICBpbmtzY2FwZTpwYWdlb3BhY2l0eT0iMCIKICAgICBpbmtzY2FwZTpwYWdlY2hlY2tlcmJvYXJkPSIxIgogICAgIGlua3NjYXBlOmRlc2tjb2xvcj0iI2QxZDFkMSIKICAgICBpbmtzY2FwZTpkb2N1bWVudC11bml0cz0ibW0iIC8+CiAgPGRlZnMKICAgICBpZD0iZGVmczEiIC8+CiAgPGcKICAgICBpbmtzY2FwZTpsYWJlbD0iTGF5ZXIgMSIKICAgICBpbmtzY2FwZTpncm91cG1vZGU9ImxheWVyIgogICAgIGlkPSJsYXllcjEiCiAgICAgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTMuODE5ODA1NCwtMi4yMTQ3MTkzKSI+CiAgICA8cGF0aAogICAgICAgZD0ibSAxNS40NTgwMzUsOC45NzMzOTUzIDguNjMzMjUsMC4wNDQ4NyAwLjAwOSwtMS42NjgxOTggLTguNjMzMjIsLTAuMDQ0ODUgeiBtIDAuMDI2MywtNS4wNTYxMDggOC42MzMyNSwwLjA0NDg1IDAuMDA5LC0xLjcwMjU2OCAtOC42MzMyNSwtMC4wNDQ4NSB6IG0gLTAuMDQ0OCw4LjYzMzI0NzcgOC42MzMyMywwLjA0NDg1IC0wLjAwOSwxLjcwMjU2NyAtOC42MzMyNSwtMC4wNDQ4NSB6IgogICAgICAgZmlsbD0iI2ZmZmZmZiIKICAgICAgIGlkPSJwYXRoMSIKICAgICAgIHN0eWxlPSJzdHJva2Utd2lkdGg6MC4yNjQ1ODMiIC8+CiAgICA8cGF0aAogICAgICAgZD0ibSAxMS4xMTE3MjUsMTAuMjg2NjI4IGMgMS42NTEsLTAuNjE5MTI0NyAyLjU5Njg4LC0xLjk2MDU2MjcgMi41OTY4OCwtMy44MDA3Mzk3IDAsLTIuNjQ4NDc5IC0xLjkyNjE2LC00LjI0Nzg4NSAtNS4wNzMzNzk2LC00LjI0Nzg4NSBoIC00LjgxNTQyIHYgMS43MDI1OTQgaCA0Ljc0NjYzIGMgMi4wODA5Mzk2LDAgMy4xNjQ0MDk2LDAuOTI4Njg3IDMuMTY0NDA5NiwyLjU0NTI5MSAwLDEuNTk5NDA2IC0xLjA4MzQ3LDIuNTQ1MjkyIC0zLjE2NDQwOTYsMi41NDUyOTIgaCAtNC43NDY2MyB2IDUuMjQ1MzYzNyBoIDEuOTYwNTYgdiAtMy41NzcxNjYgaCAyLjg1NDg2IGMgMC4yMDYzNywwIDAuNDI5OTUsMCAwLjYxOTEyLC0wLjAxNzIgbCAyLjUyODA5OTYsMy41OTQzNjQgaCAyLjEzMjU0IHoiCiAgICAgICBmaWxsPSIjZmZmZmZmIgogICAgICAgaWQ9InBhdGgyIgogICAgICAgc3R5bGU9InN0cm9rZS13aWR0aDowLjI2NDU4MyIgLz4KICA8L2c+Cjwvc3ZnPgo= )
![Turborepo ](https://img.shields.io/badge/-Turborepo-EF4444?style=for-the-badge&logo=turborepo&logoColor=white )
![TypeScript ](https://img.shields.io/badge/typescript-%23007ACC.svg?style=for-the-badge&logo=typescript&logoColor=white )
![Vite ](https://img.shields.io/badge/Vite-646CFF?style=for-the-badge&logo=Vite&logoColor=white )
![Vitest ](https://img.shields.io/badge/vitest-6E9F18?style=for-the-badge&logo=vitest&logoColor=white )
![Zod ](https://img.shields.io/badge/-Zod-3E67B1?style=for-the-badge&logo=zod&logoColor=white )
2020-11-25 21:34:21 +08:00
2021-03-02 22:33:38 +08:00
# About
2020-08-12 05:02:25 +08:00
2023-10-23 23:51:09 +08:00
Monkeytype is a minimalistic and customizable [typing test ](https://www.monkeytype.com ). 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.
2020-05-15 02:03:05 +08:00
2021-03-02 22:33:38 +08:00
# Features
2020-08-12 05:02:25 +08:00
2022-03-12 09:32:55 +08:00
- minimalistic design, with optional advertisements and focus mode while typing
- type what you see, see what you type
- live errors, wpm, and accuracy displays
2023-10-23 23:51:09 +08:00
- a variety of test lengths and languages
2022-03-12 09:32:55 +08:00
- punctuation and numbers modes
2021-04-14 05:28:37 +08:00
- quotes
2022-03-12 09:32:55 +08:00
- themes
2020-05-15 21:45:44 +08:00
- smooth caret
- account system
2022-03-12 09:32:55 +08:00
- challenges and just-for-fun test modifiers
2020-06-28 07:17:29 +08:00
- and much more
2020-05-15 21:45:44 +08:00
2021-03-02 22:33:38 +08:00
# Discord bot
2020-08-12 05:02:25 +08:00
2022-08-22 19:57:44 +08:00
On the [Monkeytype Discord server ](https://www.discord.gg/monkeytype ), 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.
2020-07-08 04:15:48 +08:00
2021-03-02 22:33:38 +08:00
# Bug report or Feature request
2020-08-12 05:02:25 +08:00
2023-02-14 07:22:37 +08:00
If you encounter a bug or have a feature request, [send us an email ](mailto:contact@monkeytype.com ), [create an issue ](https://github.com/monkeytypegame/monkeytype/issues ), [create a discussion thread ](https://github.com/monkeytypegame/monkeytype/discussions ), or [join the Discord server ](https://www.discord.gg/monkeytype ).
2020-05-15 02:03:05 +08:00
2021-09-30 00:04:10 +08:00
# Want to Contribute?
2021-04-09 01:34:51 +08:00
2024-07-26 00:21:20 +08:00
Refer to [CONTRIBUTING.md ](./docs/CONTRIBUTING.md ).
2021-04-09 01:34:51 +08:00
2021-07-24 21:17:15 +08:00
# Code of Conduct
2021-04-09 01:34:51 +08:00
2024-07-26 00:21:20 +08:00
Before contributing to this repository, please read the [code of conduct ](./docs/CODE_OF_CONDUCT.md ).
# Security
To report a security vulnerability, please refer to [SECURITY.md ](./docs/SECURITY.md ).
2021-04-14 05:28:37 +08:00
2021-03-02 22:33:38 +08:00
# Credits
2020-08-12 05:02:25 +08:00
2021-04-14 05:28:37 +08:00
[Montydrei ](https://www.reddit.com/user/montydrei ) for the name suggestion.
2020-11-02 23:06:58 +08:00
2021-07-10 03:25:33 +08:00
Everyone who provided valuable feedback on the [original Reddit post ](https://www.reddit.com/r/MechanicalKeyboards/comments/gc6wx3/experimenting_with_a_completely_new_type_of/ ) for the prototype of this website.
2020-11-02 23:06:58 +08:00
2023-10-23 23:51:09 +08:00
All of the [contributors ](https://github.com/monkeytypegame/monkeytype/graphs/contributors ) have helped implement various features, add themes, fix bugs, and more.
2020-05-15 02:07:07 +08:00
2021-03-02 22:33:38 +08:00
# Support
2020-08-12 05:02:25 +08:00
2022-01-30 21:23:51 +08:00
If you wish to support further development and feel extra awesome, you can [donate ](https://ko-fi.com/monkeytype ), [become a Patron ](https://www.patreon.com/monkeytype ) or [buy a t-shirt ](https://www.monkeytype.store/ ).