iMocha's Typing Test
A new typing test for iMocha, built to be fair to a 45-year-old typist and a 22-year-old graduate. Shipped in 3 weeks and scored 72 on the System Usability Scale.
Interaction Design
Behavioral Research
At a Glance
Product: iMocha, an assessment platform
Role: Sole UX Designer, end-to-end ownership
Scope: Candidate test experience, admin creation flow, reporting
Timeline: 3 weeks
Research: Published keystroke and heatmap studies, plus interviews with 10 to 15 users about their typing habits
Result: SUS score of 72. Backspace added in a later release after user feedback.
Constraint: Tight timeline. Research phase was cut short.
Context
The typing test was one of iMocha’s most requested features. It kept getting pushed back because the engineering effort was large. When it was approved, I owned the whole design: the candidate test, the admin creation flow and the reports.
Nothing in the product covered typing, and recruiters use the test to hire typists, data entry operators and admin staff across age groups. It had to be fair to all of them.
What i learned and Research
I started with published research on keystroke dynamics and typing heatmaps, then interviewed 10 to 15 users about how they actually type. Three findings shaped the design:
Typists and everyone else type differently. About 40% of people use only four or five fingers, while trained typists use all ten and work the numeric keypad regularly. The test is mainly used to hire typists, but it had to be fair to both.
Backspace use varies by skill. Most people lean on it. Trained typists use it sparingly. That split turned out to matter more than I expected.
Too much visible text hurts. Seeing the full passage pulls attention off the current word and adds anxiety about how much is left.

The 40% figure comes from my interviews alongside published typing datasets. The heatmap work is from published studies, not my own.
Key Decisions and Tradeoffs
Paragraph view, not one line at a time
I explored a single-line display to cut distraction. Interviews killed it. People preferred paragraphs because real typing is paragraph-based: you’re writing a block or copying from a source. One line felt artificial. I kept the paragraph and used contrast between typed, untyped and incorrect characters to guide attention instead of hiding text.


Poppins with wider letter spacing
A larger face helps older candidates, who already type more slowly. Extra spacing reduces misreading of similar letters (“l” vs “I”, “rn” vs “m”). An error should come from mistyping, not misreading.

Backspace: shipped without it, added later
My research said trained typists use backspace sparingly, and removing it makes scoring stricter and simpler. V0 shipped without it. Then feedback and interviews showed that candidates still reach for it, and a test without it wasn’t measuring real work. We added it in a later release.
The tradeoff: scores run slightly more lenient because candidates fix errors before they count. A test that reflects real work with slightly lenient scores beats an artificial one with strict scores.
No live WPM counter
Candidates in testing chased the number instead of typing naturally. The WPM formula was built for post-test calculation, so a live version was also high effort, and the rest of an iMocha assessment shows no live score. We removed it.
5-state cursor model
No pattern in iMocha covered real-time typing, so I documented every keystroke scenario for engineering: nothing typed, correct, incorrect and stopped, incorrect and continuing, and backspace. Three consecutive errors lock the cursor. Some people type from memory while looking at the keyboard, and one wrong key early shifts everything after it, so the cap forces a glance back at the screen.

Smaller calls.
Passages run about twice as long as anyone can type in the allotted time (1, 3 or 5 minutes), so we never accidentally measure reading speed. Section switching is locked because the timer starts on the first keystroke. I also explored an error sound cue for keyboard-lookers, cut for time.
What shipped
Six test formats: standard passages, numbers, alphanumerics, punctuation and capitalisation, decimals and operators, and random characters. Each maps to a job type, and the number and symbol formats are built around the numeric keypad that typists rely on.


Admin creation (V0): passage content, format, time limit, publish. No AI generation or auto-calibration. A reliable base first.
Reports: accuracy, WPM, time taken, correct and error counts, plus a colour-coded view of the candidate’s output so recruiters can see where errors clustered: the start (nerves), the end (fatigue), or throughout (a skill gap).

Results
Metric | Result |
|---|---|
System Usability Scale | 72 |
I ran the 10-question SUS with the same group I’d interviewed. 72 sits above the commonly cited average of 68. With a group of 10 to 15 I treat it as a directional read, not proof.
The more useful result was what the feedback surfaced: backspace was missing, and we shipped it in the next release.
What I'd Reconsider
Keystroke rhythm for integrity checks: I used keystroke research to shape the design but didn’t build rhythm analysis. The idea was right, the timing wasn’t. With more time and better browser support it would catch things WPM and accuracy can’t.
Adaptive difficulty: Passages are static. A future version could adjust complexity to how the candidate is performing.