Ryan Hardy37 downloadsA more productive way to build good typing habits. Compiles advanced typing stats as you take notes.
Work on your notes and your typing skills at the same time with this Obsidian plugin! It calculates a bunch of typing statistics in the background while you take notes. You can analyze these stats over time to find areas of improvement.

See CHANGELOG.md in the repository for more details on each version.
Stats are compiled by day in your plugin data. You can view your history of these stats over multiple days:
Active time - How much time is spent typing.
Bursts - How many typing bursts occurred. A "burst" is a sequence of edits with no gap longer than the "new burst threshold" setting (2 seconds by default) between them. Once you pause for longer than that, the current burst ends and the next edit starts a new one. Bursts shorter than "minimum burst duration" are not counted, to filter out small ones or stray keystrokes.
Average WPM - Average of your net words per minute over time. Net WPM uses the following formula:

Corrections: An estimate of how often you type something and immediately correct it. Happens when, shortly after inserting text, you delete something that overlaps with what you just typed.
Corrections per minute - Number of corrections divided by your active time in minutes.
Total chars added - How many characters you have inserted so far.
Total chars deleted - How many characters you have deleted so far.
Net chars - Total chars added minus total chars deleted.
If you have any feedback on how useful the stats are, or any ideas for new ones, feel free to create a feature request issue.
This plugin does not work like typing websites such as keybr or Monkeytype, because there is no "target text" to compare to. Stats have to be calculated differently because of this:
This plugin uses Obsidian's local storage (data.json in the plugin folder) to keep a history of stats and save your settings on your machine. Here is what a typical data.json looks like:
{
"settings": {
"enabled": true,
"newBurstThreshold": 2000,
"minBurstDuration": 500
// ...
},
"history": {
"2026-07-09": {
"date": "2026-07-09",
"totalActiveMs": 56073,
"totalAddedChars": 733,
"totalDeletedChars": 369,
"bursts": 8,
"avgWPM": 75,
"corrections": 6
// ...
}
// ...
}
}
In the history, each day has the stats compiled during that day. You can use this information to view trends over time.
Check out CONTRIBUTING.md in the repository!