⌨️ TYPING RACE

Twenty-four words, sixty seconds — how fast can you go?

← Back to Fun Time
Speed
0
Accuracy
100%
Words done
0
Best WPM
0

📚 Which words?

Race on the everyday words, or practise a Classical Roots lesson. Pick one book, then tick as many lessons as you like.

⌨️ Controls

  • Just start typing — the clock starts with your first letter
  • SPACE after each word
  • BACKSPACE to fix a letter
  • ENTER a new race  •  ESC pause
  • 🎮 Xbox controller? Not this one, sorry — this game is about typing letters, and a controller has no letters on it. Every other game takes a pad.

🎯 How to play

  • Type the boxed word, then press space. Right or wrong, the race moves on.
  • Your typing turns black as it matches — and gets struck through when it does not.
  • The bar shows the minute running out.
  • The race ends after 24 words or 60 seconds, whichever comes first.

📚 Your own word lists

  • Under the board you can swap the everyday words for a Classical Roots lesson.
  • Pick one book, then tick as many lessons as you want — they all go in together.
  • The race deals from a shuffled bag, so every word in your choice gets a turn before any comes round again.
  • Your choice is remembered, so you can keep practising the same lesson.

🏆 What is a good speed?

  • A "word" means five characters — that is how typists have always counted.
  • 20 WPM is a good start. 40 is proper touch typing.
  • Accuracy beats speed: a wrong word is worth nothing at all.
  • Do not look at your hands. It feels slower and it is much faster.

🧑‍💻 For young coders: build this game yourself

This game is split into small library files inside funtime/lib/, and every function has a comment saying exactly what goes in, what comes out, and the algorithm in plain English. Empty any function out, read its comment, and write it yourself.

File What it does Good functions to try re-writing
lib/typing-rules.js The rules: matching letters and working out the speed matchingLetters, submitWord, accuracy, wordsPerMinute
lib/typing-draw.js Painting the words, the typing and the clock layoutWords, drawTyped, renderGame
lib/typing-main.js The glue: the keyboard and the on-screen one doAction, connectKeyboard, gameLoop

💡 The big idea: check before you divide. Accuracy divides by the words attempted, and speed divides by the seconds gone by — and at the very start of a race both of those are zero. Two lines of guard turn a crash into a sensible answer.

🛠️ Want to be walked through it? Build Typing Race Yourself takes you through the key functions one step at a time and tests each one you write. There is a Python version too.