To calculate the WPM words with 5 letters are taken. To reach e.g. 80 WPM you'd have 150ms per character.
The application uses ~1000 most common english words and only gives you the next word once you've cleared the word in the calculated time.
The time is measured only as soon as you press the first key.
Give it a try.
Controls: [Space] or [Enter] to complete a word. [Esc] to move on to a next word
Click [wpm] to set your target speed. The default is quite low but you might still find words that you can't type within the time limit. Click [log] to see a log of your individual attempts.
How it was build:
No dependencies, single html file
Respects system preferences for dark them
Keyboard friendly (autofocus, tab & enter for settings, etc.)
Next up:
Using Service Workers to allow offline usage
I recognize this might push against the minimalism you're going for, but I might suggest having the next word, or even two words, off to the right and greyed out. What you're measuring is recognizing and typing the word, and most competent typists who want to lower error rates and gain speed are going to be fast enough already that they (we) can be recognizing the next couple of words while typing the one which is already centered.
A two-word lead would let me get up to speed, maybe that should be configurable but for the words I've seen while playing with it, probably two is just right.
Great site, I'll come back and use it as-is.
I usually go to https://10ff.net/ when I am looking to practice the whole typing flow.
This site looks like great fun as a member of the toolbox for making my Colemak more fluent!
https://pianop.ly/misc/typingtutor/
One thing I experimented with is giving you both a "total speed" and a "best 15 seconds" speed.
Learning to navigate with hjkl in vi was the turning point for me. I quit treating the bumps on F and J as "some weird thing that touch typists use" and made a conscious effort to always start with my index fingers resting on them, even not actively typing. Accurate vi movement becomes instinctual instead of having to hunt for the keys, and because I could navigate without leaving the home row, it turned into a virtuous cycle.
vi-style browser navigation add-ons further reduce the need to leave the home row. Vimperator and Pentadactyl were complete browser makeovers for vim enthusiasts, but they went away with the move to WebExtensions. I now use vimium which behaves mostly like a normal browser but retains the critical navigation keybindings. Even when simply reading a web page, I'm sitting right on the home row, with the two most-used keys (j to scroll down, and f to click a link) sitting right under my index fingers.
Switching to a laptop with a centered tenkeyless keyboard also helped a lot. There's no longer a temptation to have my hand float right. The trackpoint helps too - it's slower and less precise than the trackpad, but I make up the time by not needing to move down and back (the trackpad is still better when doing more than a single point and click though). When using a desktop with a traditional mouse, I center the QWERTY section of the keyboard and put the mouse on the left. I learned to mouse ambidextrously within a week or two and my hands no longer have to rest at weird angles.
Remapping Caps to Ctrl is another important home-row improvement. Ctrl is used frequently, usually chorded, and the ones on the bottom require contorting your hands to make it work. Bonus: I can use Ctrl-[ with my fingers still on f and j instead of reaching up to hit Esc, which is needed frequently in vi.
After making the conscious effort to position my hands correctly, everything else fell into place. My accuracy went up, which meant I had fewer times I'd have to look down and reposition, which meant I could achieve much better typing flow. I went from 30-40 WPM with poor accuracy to 60-80 WPM with pretty good accuracy over a couple years, without putting any additional effort toward training.
Been learning touch-typing and struggling with returning my hands to the right spot. I can't believe I never noticed these!
I found it broke up touch typing into just the right size chunks to engage me.
At the start of Covid, I spent a week doing half an hour a day. My typing speed and accuracy improved out of sight. The whole process of acquiring muscle memory is quite magical. I highly recommend it.
This is the companion site to http://www.speedcoder.net/, which is for coding, and presumes you start with reasonable touch typing skills on normal text.
This said, some things will remain hard probably forever, if you have a short pinkie like me.
It would be great if [Enter]/[Space] would clear a wrongly typed word, maybe with some visual indication that it wasn't typed correctly and maybe also show the mistyped word. Having to delete the word because of a single mistake really takes you out of the flow, and the timer doesn't reset till you delete and retype the word correctly.
Displaying the target ms/character for the specified word count might also be beneficial to quantify what you're working toward.
edited/failed words should be silently saved to a separate list the performance of every word typed ranked 2/3/4/5 characters that occur consecutively should be analysed also to learn about user's weakness
all then can be used to reappear in optimal learning interval so user can improve :)
- don't worry about target wpm, just worry about getting faster from a baseline and automatically adjust that baseline from current speed.
- repeat words that recently failed / took longer to type after some spacing (spaced repetition)
- fail words which are committed rather than making me correct them to continue (I'm of two minds about this, is correcting a mistake faster than just continuing and coming back to mistakes or the other way around?)
- consider a prose mode that shows more context to type (grab some paragraphs from project gutenburg perhaps?)
- consider a code mode (more difficult as autocomplete is a thing and different per IDE)
This is fascinating when picking a liminal wpm. Single hand words are so much harder.
I can cruise along until I hit words like "exact"
EDIT: You could make a list of bigrams as people type and average the wpm for words with that bigram, then you could weight the randomly chosen words by the difficulty of the bigrams, to really help people focus on their biggest stumbling blocks.
Even though I have recovered physically, my fingers still (mentally) hurt when I try to type very fast. It hurts even when I think about it.
1. That was very enlightening
2. I added skipping a word by using the [Esc] key
It would be interesting to see if one could safe those words for later and practise just those.