[Userscript] Show Number of Learned Kanji, Vocab

Show Number of Learned Items (Kanji, Vocabulary, Radicals)

This script shows you how many Kanji, vocabulary, and/or radical items you’ve ‘learned’,
in the dashboard below the SRS stage overview.
See Settings, you can e.g. turn off showing vocab/radicals learned.


[ Install Number of Learned Items here (Greasyfork) ]

As usual, you need Wanikani Open Framework for this,
and a Script manager like Tampermonkey.
[ General Script Installation instructions ]
[ Open Framework Installation ]


This script is inspired by @Kumirei’s Progress Percentages, which is more powerful in that it shows you the number of Kanji per grade when you hover over it etc., but it doesn’t show vocab learned.
And I personally find it motivating to see how many Kanji i learned at one glance.

Another inspiration is the iOS app Tsurukame, which also just displays Kanji learned, at the top of the dashboard.
(also counts Guru+)

I only remembered after people’s comments that wkstats.com does the same:


Vanilla WK

Dark Mode (With Wanikani Breeze Dark Theme from Stylish)

With @seanblue’s SRS & Leech Breakdown

With @Kumirei’s Progress Percentages


In the code, you can already set:

  • which SRS stage counts as learned (currently Guru/5)
    • you can also e.g. set it to Apprentice (also set stageLearned = 1 for this)
    • change the “(Guru+)” text to (“Apprentice+”)
  • whether to show Kanji learned, vocab learned and radicals learned, in any combination
  • where to place this section
    • you can select whether to place this before or after a standard WK section
    • by default, this section is placed after the srs stage overview.
    • for example, to place this section after Level Progression, change “sectionsToPlaceAround.srsProgress” to “sectionsToPlaceAround.levelProgression”.
    • to place this section before another section, change “placements.after” to “placements.before”.
  • you can also change the “Learned” text

I might add a settings menu in the future, though i’m not sure it’s worth it.

To set these settings, install the script, go to your script manager (e.g. Tampermonkey) dashboard, and click the edit button. Search for “SETTINGS” in the code. In that section, you can change stuff. (not in the section above!)


Thanks to @Kumirei and @seanblue for code from their scripts, and rfindley for the Open Framework of course.
And sorry if i mutilated your code, Kumirei :smiley:

Disclaimer: I’m a Software Developer, but not an expert in Web design and CSS.
This is my first WK script ^^


Feel free to leave feedback, suggestions, etc.!


Neat! Not really useful for a level 60 but I’m sure others will enjoy it!


Yeah, not too useful for a level 60 user, except to add a “I learned 2048 kanji” badge to your dashboard :smiley:
Also, the level 60 vocabulary skippers can track their path to 6000 vocab items :wink:


I installed it and doesn’t seems to be counting all kanji and vocab, maybe its not counting burned items?

Unless that there are 5261 radicals :confused:

1 Like

i think i fixed burned items not being counted.
could you test it again with the new version (0.7.2)?
Thanks again :slight_smile:

I don’t have burned items yet, so i couldn’t test this ^^



Yeah, seems fixed. Thnak you

1 Like

ah, is that another script? Do you know the name of it?
I didn’t know there was a script that did this already, searched for a bit.
Showing the radicals learned is also a good idea.

looks like it’s from wkstats.com

1 Like

It is indeed from wkstats. Somewhat relieved my practice wasn’t completely wasted ^^
Now, i may add the display of radicals learned.

1 Like

yes wkstats haha, sorry for the worry

1 Like

You can now also see radicals learned (or turn that option off):

Looks better in Dark Mode:

Also, when you hover over the numbers, it will now show a hover text with total item numbers.

Btw, i haven’t figured out how to place this section right after Level Progression, but before heatmaps.
I can’t say $('.heatmaps').before, will throw an error even if heatmaps is executed before this.
And if i use $('.progression').after, heatmaps always comes first.

1 Like

It probably only comes first because of execution order, though.

There’s probably a much better way, but you could just check if the heatmap has been inserted already

const heatmaps = $('.heatmaps');
if (heatmaps.length) heatmaps.before(elem);
else $('.progression').after(elem);
1 Like