← Back to list

MonkeyType Mod - Bigram Crunch

May 8, 2024

Targeting Transition Troubles - The Bigram Crunch Monkeytype Fork

For the uninitiated, Monkeytype is an open-source web app that provides a suite of tools to help you improve your typing speed and accuracy. One of its standout features is the “Funbox” - a collection of community-created modes that extend Monkeytype’s core functionality.

One such community mode that caught my interest was “Weakspot” by shishberg . This mode tracks your mistakes as you type and identifies letters that tend to trip you up. It then uses a weighting mechanism that biases new word suggestions to those words containing more of those “weakspots” to give you targeted practice.

I found Weakspot quite useful initially for general accuracy work. However, over time I noticed that many of my mistakes weren’t with individual letters, but rather with the transitions between specific bigrams (two-character sequences). For example, I’d often fumble the shift from “u” to “g”, mistyping “thought” as “thougmt” (a common mistake for me as a Colemak-DH keyboard layout user).

While Weakspot registered such errors as individual wrong characters, it failed to capture and concentrate practice on those problematic bigram transitions specifically.

This shortcoming inspired me to fork Monkeytype and build a new mode called “Bigram Crunch” laser-focused on smoothing out transition troubles. Rather than just looking at mistyped characters, it analyzes mistakes to pinpoint your personal weakest bigram transitions like “ug”. It then serves up words overweighted with those combinations.

However, to avoid an overly skewed and repetitive pool, Bigram Crunch samples probabilistically from the full corpus with the troublesome bigram weights log-normalized. This ensures you get a diverse mix of words while still concentrating reps on your targeted bigram transitions.

You can view these bigram weights by going into developer mode and checking the console. They are updated as you type.

Bigram Weights

From my experience so far, I actually prefer “Bigram Crunch” to “Weakspot”. I think the latter is more useful during earlier stages of gaining familiarity with key positions, but as you advance in proficiency, most mistakes tend to stem from weak bigrams. Again, this is solely based on my experience.

I have opted not to merge my mod with the main Monkeytype project as I think it is, in a sense, too similar to “Weakspot” and may only benefit a niche community. I have a live demo hosted on my server:

Just navigate to Settings -> Behavior -> Funbox and enable “bigram_crunch”.

You can find Bigram Crunch in my fork at:

If you’ve found general weakspot modes helpful, then I think it’s worth giving Bigram Crunch a shot.