About keyduelo
keyduelo is a free, open-source typing race: a Monkeytype-style typing test for solo practice and real-time rooms where friends type the same text and compete for the highest WPM. It was built by Jaime Aza and first published in April 2026.
Updated by Jaime Aza · Leer en español
What keyduelo is
keyduelo is a web app with two screens. The home page is a typing test that starts on your first keystroke and reports WPM, raw WPM and accuracy. The play page is a lobby where anyone can create a room, share a 5-letter code and race friends on the same text, with live progress bars, a synchronized countdown and a server-side ranking. There are no accounts, no ads and no tracking.
Who builds it
keyduelo is a personal project by Jaime Aza, a software engineer from Colombia who builds web products with Next.js, Django and AI agents. It is not a company. The code, the decisions and the mistakes are documented in the open at github.com/Jjat00/keyduelo.
How it is built
- Front end: Next.js 16 with the App Router, React 19 and Tailwind CSS 4, deployed on Vercel.
- Rooms: a Cloudflare Worker with Durable Objects. One object per room holds the players, the text, the clock and the ranking; a singleton registry feeds the public lobby.
- Real time: WebSockets with hibernation, so an idle room costs nothing.
- Typing engine: a pure TypeScript state machine shared by the browser and the server, with no React inside, so the same code can validate results.
- Text: a generator over 282 common English words with optional punctuation, avoiding the same word twice in a row.
Privacy
There is nothing to sign up for and nothing is tracked. Your theme, sound and test settings live in your browser's local storage, and so does your nickname. Solo tests never leave your device. In a room, your browser sends progress counters (position and WPM) to the room server, never the keys you press, and the room disappears from memory when its host leaves.
Inspiration and license
keyduelo is inspired by Monkeytype: the scrolling text, the caret, the metrics and the lowercase mood come from there. No Monkeytype code is included; the engine, hooks, components, worker and protocol were written from scratch and the word list is our own selection. The Nord, Dracula and Gruvbox palettes are used under their MIT licenses. keyduelo itself is released under GPL-3.0.
The keystroke sounds are not ours either. The seven switch profiles — KAT, Cherry, MT3, XDA, OEM, SA and DSA — are the recordings from kliq, a free and open-source mechanical keyboard sound app for macOS by Crafter Station, with sound design by Cris. They are used under its MIT license from github.com/crafter-station/kliq. If you like how typing here sounds, kliq gives you the same thing everywhere else on your Mac.
What might come next
Under consideration, in no particular order: word lists in other languages (Spanish first), custom texts for rooms, and optional accounts with history and leaderboards. Nothing here is a promise; the repository's README tracks what actually ships.
Contact and contributions
Bugs, ideas and pull requests go to the GitHub issues. The README explains the architecture, the local setup with pnpm and wrangler, and the reasoning behind the main technical decisions.
Frequently asked questions
Is keyduelo free?
Yes, completely. There is no premium tier, no ads and no account. It runs on the free tiers of Vercel and Cloudflare and its source code is public.
Is keyduelo open source?
Yes, under the GPL-3.0 license, the same license as Monkeytype. The repository at github.com/Jjat00/keyduelo contains the Next.js front end, the Cloudflare Worker with the Durable Objects and the shared typing engine.
Is keyduelo affiliated with Monkeytype or TypeRacer?
No. keyduelo is an independent project inspired by Monkeytype’s design. It contains no Monkeytype code and does not use its name or logo; the engine, the hooks, the worker and the protocol were written from scratch.
Why the name keyduelo?
"Key" as in keyboard, "duelo" is Spanish for duel: a keyboard duel. The project was first published in April 2026 under a working name and renamed keyduelo when public rooms arrived.
How do I report a bug or suggest a feature?
Open an issue on GitHub. Pull requests are welcome; the README documents the architecture, the local setup and the technical decisions.