[Userscript] WaniKani Workload Graph

finally got around to installing this tonight…

never reset…there is a 1 week period where I did enable vacation mode (pre-flaming durtles app offline being available) the breaks are because of being overwhelmed by leeches where i just hammered reviews for 2-3 months (come on stupid WK - built in leech manager already)… gonna keep posting this in the hopes that someone at WK actually will implement one…

the error percentage is surprisingly flat (or not surprisingly for me…)…

since someone is going to ask:
Wanikani statistics page question - WaniKani / API And Third-Party Apps - WaniKani Community


incredible, you decreased the number of mistakes as you advanced levels O.O

mine is the opposite lmao. I suck at studying languages :slightly_frowning_face:

1 Like

@rwesterhof Thank you for the script!

Unforunately, there’s a conflict with this script:

P.S. It would be great if the settings we pick for the graph would be persistent.

Edit: I didn’t realize the feature of the heatmap swallowing up the graph button. In that case, the conflict is less severe - just the “+” added to the Levels gets eaten up.

1 Like

I’m running both, but the only thing I can see is that the + added to the first button ends up on the Graph button rather than the Levels button. Functionally they seem to work side by side. Anything else I’m missing?
I should have some time tonight to both go over the error percentage code and look at this.

Makes sense. Let me see what I can do.

The reason for that is I have had to slow down drastically!!!

… death by leeches is real and even keeping the often recommended 100 app items was not sustainable (I know I’m not the only one)…based on the current path it’s going to take me 5-6 years to finish WK total…really not great… BUILD IN A FREAKING LEECH MANAGER STUPID CRABIGATOR!!! SRS is incomplete w/o some sort of leech management … gonna keep beating that dead horse and make jello but gonna keep at it…hoping that someone at WK will stop adding strawberries, stop playing with the cosmetic stuff and get up off their $%#@ and do it already. Programming is not easy but if developers put their mind to something… nothings impossible… :wink: I’m willing to be a guinea pig if it helps improve the platform by killing the leech problem globally

Trying to find that balance of lessons vs reviews vs everything else is hard (to this day have never reset) but now that I’ve been doing this slow and steady already for 2.5 years … gonna take at least 2.5 more to finish because of the leechy hell that is WK. May eventually quit…would have already if I didn’t pay for a lifetime when I first started maybe when I get to 河豚…oh wait nvm…already at master…though still not burned…keep forgetting it… next review 15 days…maybe it will be fine this time around… or I’ll end up using the reorder script to learn just the kanji …but for now plugging along as basically the same pace as the school kids really…

a little more ranting...

WK shouldn’t keep advertising learn it all in a year IMO … while it has been done by a very small handful of people…for 99+ percent of us … it’s seems misleading selling it that way. (when I originally started I thought well even if it takes 2-3 years it will be ok)…now I’m going WTH 5-6 years could have learned the the kanji MUCH faster w/o WK and cheaper.

[of course this maybe obvious now … but … as a beginner that barely is learning hiragana… what do we really know right?] I’m not in my 20s anymore…languages are hard and memory is not as good as when I was younger.

Anyway… now what I do is look at the next day reviews and assume my normal review percentage (typically 72-75%) … using that and assuming my fail rate is 30% take that number (usually between 8-10am and look at the next days reviews and add it together… for example right now I have 42 reviews left today and 88 tomorrow…I am trying to keep the next day review numbers under 100… thus… 42*.3 = 12.6 => Add 13 + 88 101… no go for lessons today… kind of sucks really but that’s what seems to be working for now. Tried variations of this adding 3 lessons a day or 5, but ultimately depends on how many burns I fail that haunt me 2 weeks later at guru2 that I fail again…so this sort of metric (for now has been working) [it really does suck though] Generally try not to add more than 7-8 lessons a day until I hit the arbitrary 100 next day number.

At this pace my current level up is about 40-45 days.

more of my thoughts

Magic 8 ball says all signs point to bad SRS intervals - spacing is too far apart specifically around guru2/master/enlightened… also suggested WK provide options for more reviews even if it takes longer (if not dynamic srs / toggle switch more review steps on the way to burn)… on average it takes me 1.2-1.5 years to burn something… that’s at least 2x through enlightened often 3x …might as well have more review cycles if they are just going to churn anyway… would rather be consistently burning things in 9-12 months than cycling everything back through guru2 only to fail back to app (usually down to 1 or 2) and go through them again …

Thus all of this is why my accuracy has increased (even though it’s still horrible really) seriously have typed in incorrect answers 33,595 times!!! …huge waste of time on leeches… thats gotta be hours of my life I can’t get back…oh wait (forums)…look away hehe

1 Like

No, see my edit :wink:

Thank you!

1 Like

Posted version 1.1.2

I ended up swapping the order of the Graph and Levels buttons because Levels Overview Plus simply puts the + sign on the first button in the header.

And chosen display options for the graphs should now persist across page reloads.


Due to many resets over the years, my graph doesn’t look very neat:


Man, what’s level 401 like?


It was glorious. Koichi delivered pizza every day to my home in person. Unfortunately, it only lasted one week for me.


I guess I could give the reset level markers a different color. Maybe. I’ll put it on a list somewhere.


I know this is a workload graph, but since the WK Timeline is not maintained any more, it would also be cool to see how many apprentice/guru/master/enlightened/burned items we have historically. If you think this is too much work, then just ignore this, it’s no big deal :sweat_smile:


I had to think about this one for a minute… that information is not directly stored, so this requires a complete reconstruction of activities, and while the reviews form a large portion of this, resets necessitate keeping track of each individual item (their levels). But the hardest part would be the items that are moved (to a different level). I don’t think I can find the original levels of the items (apart from deducing them from their original reviews). And then there are the removed items - maybe they have an update timestamp? That’s pretty tricky. The current level difficulty graph already ignores these (only looks at the current level of the item).
I’ll add it to the list for now, not sure if I’ll do anything with it.


:sweat_smile: It’s a really critical part of the levels script for sure

Interestingly, the only distinguishing property on those buttons is the aria-controls attribute, and for some reason the “help” button also has aria-controls="sitemap__levels" :expressionless:


My graph!
And I just realised it started the graph at 1970 by default haha


This script is truly awesome. I love it. I especially love that it plugs into the heatmap UI.

There is so much information condensed into two just two graphs that it took me quite a while to understand what I was seeing.

It’s probably obvious to everyone else (I’m more than a little intimidated by the average level of people on this thread!) but I’d really have appreciated some legends and axis labels. I know screen real estate is a concern and nothing is ever easy, but might it be possible to add them?

My average reviews graph looks like this:

As silly as it sounds, it wasn’t immediately obvious to me that the X axis (in black) was my current level at that date. The graph title contains the Y axis label, but it would have removed a little mental friction for me if the horizontal axis was labeled “Level at date” or simply “Level.”

Even more helpful would be a legend for the colors, even if I have to click on a link to reveal the legend (Pink = Apprentice, Purple = Guru, Dark Blue = Master, Light Blue = Enlightened).

That graph is actually the easy one to understand. Despite the explanation you’ve provided at the top of this thread, I struggled to understand my error rate graph:

It’s a little more obvious that the horizontal axis is “Level,” since all 60 are displayed, but I’d still appreciate a label. [I suspect this would be harder to code than just adding labels, but it would be nice if the Error Percentage graph also cut off levels not yet reached.]

I really struggled to understand the stage colors on this one. Yellow?! Again, a legend would help tremendously.

Further, the prior graph for reviews-per-level primed me to expect multiple stages per level, causing my pea brain to struggle here. Why just one color per level? What does that transition to blue at level 28 mean?

I think the stage colors are indicating the highest stage attained for any item in that level. So I have at least one burned item in every level up to 27, for example.

If I understand this correctly, I’d have found it much easier to understand if it used grayscale instead of yellow for burned items (like the dark gray used for “burned” by default). A legend with color chips and text saying something like “Highest stage achieved” would have made this much easier for me to grok.

The reviews-per-day graph was much easier for me to understand because each point along the horizontal axis just displays the running averages at that point in time. Over time, the left portions of the graph won’t change because it’s all in the past.

If I understand correctly, the error percentage graph, though, only displays a snapshot of the current point in time. If I look at it again in a few months, both the stage colors and the error percentages will change. This wasn’t at all obvious to me at first.

Maybe a better title might be something like “Difficulty snapshot - Error percentage”? I’m unsure, it’s a pretty complex concept.

Now that I think I understand, it’s less necessary for me personally, but I think a few labels and legends would aid comprehension tremendously for most users.

I’m all too familiar with feeping creatures, though (for my sins, I was responsible for product management at my last company). Whether or not legends are easy to implement, this is a terrific user script. Thanks!


Think it should be doable to include a ? button near the top. I’m putting it on the list!

It actually does :upside_down_face: The problem here is that WK recently moved a level 2 item to level 51 and most users have at least one review of that item. It’s pretty much impossible to detect the level that the item ‘came from’, and simply comparing it to current level would also cut off data for anyone who recently reset.
It might be possible though to filter out ‘outliers’. So if any level has less than, say 10 reviews total, I could treat it as a ‘not yet ready to display’ and that might get rid of the shifted items. I’ll have to figure out a good lower bar for that as more and more items are getting moved around.

I considered the dark gray, but it looked like a big dark blob. So I ended up going for the ‘Golden Burn’ color that is regularly used. It should not be a problem to give users the option to choose default burn or golden burn. Going on the list!

It’s true that this graph isn’t the easiest to understand. I’ll think about the names and axis labels.
Thanks so much for your detailed feedback!

1 Like

Awesome! Thanks for considering these.

Ouch. Yeah, that makes total sense. Probably not worth worrying about — seeing graphically that I’m closer to level 60 than to level 1 was actually kinda motivating! <laugh>

Makes sense. I think it’s moot with a legend, regardless.

1 Like

I think the recently moved items have brought up one edge-case that might make the graph look a bit weird to some:

Since the kanji (また) and it’s vocabulary have been moved from level 2 to level 51, their accuracies now appear at level 51, which makes the graph look slightly odd. I think maybe hiding any entries that are above the user’s current level might be a nice addition (or maybe an option to do so), although I don’t know how this would affect people who reset their level.

EDIT: and just now I noticed you’re already aware of this, never mind me then :grin:


yeah, recent events have really upped the priority on that one :scream_cat:
I like the idea of not perma hiding the entries though - but giving a display option to do that instead (on by default probably). Stay tuned.