I've created this small project to fix my own typing and thought you might benefit from it as well.
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.)
This is very cool and it arrives at a good time: I have a whole delete-back-word thumb key on my split-key, and I've been trying to train myself to use it with little success. This is actually perfect.
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.
I've added a lookahead to the next word now, feel free to check it out.
For more I wouldn't know how to add it design wise and I don't think it is the goal of the application.
I usually go to https://10ff.net/ when I am looking to practice the whole typing flow.
Agreed with the look ahead. I’m constantly doing that whether doing a typing test or typing my thoughts. (Currently capable of sustaining 170+ wpm over a minute).
This site looks like great fun as a member of the toolbox for making my Colemak more fluent!
This is cool I will bookmark it. I'm a terrible typist. I'm also teaching my 7 year old to type so this can be handy. I have something I built myself years ago and have never really circulated, that is more for beginners (it tries to help you with finding the keys and knowing which finger to use):
This has happened to me a few times too, I have to complete a word 3 times before it actually marks it as correct. I almost wondered if it was intentional because it happened so often.
If you delete and retype the word it is technically the same attempt and you are not being fast enough, so it is in deed a feature to practice the words you have made a mistake in in the first place.
But I can see how that can be less than obvious.
I fixed that now.
I have tried several times to relearn typing, but each time I've fallen back to my old ways. Has anyone actually been successful in learning how to type correctly from scratch? If so, how did you do it?
I've known people say that they found it "easier" combining learning touch typing with learning a new keyboard layout. It's harder moment by moment, but there's no bad muscle memory to fall back on.
I had that experience. I learned Dvorak and my touch-typing form got a lot better (as you would expect..) I then went back to Qwerty (it took a little while to switch back..) and retained the better form.
Are you doing that because you think it will improve your speed? A lot of fast typists don't really rigidly stick to the "correct" fingering, as doing so may actually slow you down. I speak from experience as a fast typer; memorising where the keys are and using the closest finger can get you very far, and from there it's just practice to improve speed and accuracy.
I used to type with my right hand too far to the right so it could cover the arrow keys and mouse. My home position would have my index finger somewhere around the L. I had okay speed but terrible accuracy because I had to cover so much territory with too few fingers.
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.
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.
Can confirm this. I recently used keybr to unlearn QWERTY and learn Colemak from scratch, since I wasn't overly relentless it took me about 3 or 4 weeks, although I used the layout everyday even when I wasn't fast yet and that helped a ton.
Split keyboard, a key map printed out and placed under the monitor (so you Don't Look Down), and moving to colemak (without changing keycaps, that is the important bit - if you want to stick with Qwerty, just use blank caps). Plus a lot of practice with programs like GNU Typist, keybr, typeracer, ratatype, speedcoder, keyzen-colemak, typelit.io ...
This said, some things will remain hard probably forever, if you have a short pinkie like me.
Thanks. I do use a split keyboard now and it helps a bit, but I'm still pretty limited with one hand and on both hands tends to stretch my fingers to uncomfortable positions rather than use all my fingers.
I used the same technique of having the keyboard layout away from the keys and moving to a different key layout. I'm currently using monkey type to train myself.
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 :)
This is super addictive... it would be nice if the word cleared instantly without hitting enter, having to stretch my pinky so often is kind of hurting my wrist. It'd also be nice if clearing the text box reset the timer so I could just start over when I make a typo (I either have to fix the typo, which is bad practice, or type the word twice).
Looks good. My wish list (some of these are mentioned below by others):
- 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)
Feels like it needs some sort of feedback when you type too slowly to get the next word. Plus maybe making it a bit more obvious that you can select a target speed for the WPM.
Do you have any ideas for the feedback when your speed is to low?
I am not a designer and struggle to find ideas that keep the UI as minimal as it is right now while improving the user experience.
A hint at what wpm I just typed at would be nice. So if I only hit 50 wpm a 50 off to the side or below the dotted line.
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.
Cool! But, as someone who used to be very competitive with fast touch typing and then suffered some long-term injuries, I say do not overdo it. It hurts your fingers. Learn how to type correctly, but do not hurt your fingers and do not aim for speed.
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.
It's a cool challenge! I tried it at 90wpm and cleared most words. Some I had to do 2 or 3 times to do fast enough. Then I hit my nemesis: I can't type "necessary" fast enough for 90wpm. Tried it 20 times.
It's good stuff.
It might be good to have an option to have a time threshold based on when the typing starts, not when the word appears. In that way, the time taken to recognise the word becomes irrelevant.
That is actually the way it works. If you turn on logs (bottom right) you will see the time measured in ms for each attempt.
The measuring starts on the keydown of the fist key and stops on the keydown of the space to complete the word.
The time er only continues in case you start typing the word delete it and retype it. That counts as one attempt.
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