A Miscellaneous Collection of Things

github twitter
Typeracer Can Be Addictive

For the uninitiated, is a website that allows you to test your typing speeds against other people using segments of text from different sources.

Judging by the relatively copious number of races I’v partaken in - I probably liked it:

Who’s my opponent?

A big factor in typeracer is your average WPM1. I came to the realization that my most challenging opponent was myself - I had to beat my own average score every race so I won’t lower it.

My once fun pastime quickly turned into a stress-inducing activity. I became irritated when I failed beating my average WPM. Results above my average were not symmetrical to the ones below it meant I had to race more in order to fix any miniscule change.

I’m not 100% sure why it mattered, maybe because that’s basically the only quantifable metrics you have. Constantly displaying it throughout the website doesn’t help:

RPG mechanics

I wish typeracer used more mechanics similar to ones often found in RPGs such as: EXP, quests and events. While the aforementioned mechanices are known to be addictive as well, they differ from typeracer’s in one major subjective property: the hate-yourself-for-playing-it cycle is much longer.

One mechanic typeracer does utilize is match-making so a 90-something-WPM typist wouldn’t annihilate any newcomer. I admit to sometimes channel my inner killer player archetype and race as guest, waiting right until someone nearly wins before overtaking them with some LUDICROUS SPEED.

Let the scraping begin

I wanted to see all of my ‘accomplishments’. This is feasible on the site but without a premium account one can only access up to a 100 race results at a time on this page.

I could’ve opted to replay that request but the response is an HTML page and I didn’t want to parse it. After a little digging I noticed that I could see some race information on the main page:

This information is retrieved differently, the request:{NUMBER_OF_RACES}&universe=play&playerId=tr:{USERNAME}&callback=__gwt_callback1689629411


__gwt_callback1689629411([{"ac": 0.92000000000000004, "wpm": 75.0, "r": 4, "t": 1483614497.6159999, "sl": "L6", "np": 5, "gn": 1657, "tid": 39, "pts": 0.0}])

I’d contacted TypeRacer to let them know this is information is publicly available. They responded that this is by design and that it’s OK.

Web development is fun meh

Content with the response, I carried on to write a chaotic mess of javascript, html and css that grabs the data from typeracer and displays it using some pretty charts2. Some caveats:

  • The server takes forever to serve up more than ~500 results
  • Requesting more than 5000 might time out
  • The race data is returned from most recent to least

Taking a look

By gawking at my results I concluded that I’m consistently inconsistent:

And that, by correlation, I perform worse after getting coffee or lunch:

If you want to take a look, here are all of my results. Warning: This might not be very mobile friendly.

Why am I inconsistent?

Comparing the way I type to my colleagues I noticed that:

  • I make typos often; I fix them jarringly fast
  • My fingers aren’t anchored to the keyboard; my hand tends to hover around.

Do I care? Not really.


  • Please do not blast typeracer with too many requests
  • On a newer account I averaged 97 wpm (~500 races)