The Struggle - basic WK review analysis with a graph

Hello, I’ve been procrastinating when I should have been doing reviews.

>>This is the result<<

I made it for myself, but it’s probably useful/interesting enough to show you people so I tidied it up a bit and put it online.

Put your WK V2 API key in, hit the button, wait a bit while it drags all the data down, then you can filter and sort your problem kanji.

  • May cause extreme negative feelings towards certain kanji and vocabulary items
  • Only tested (minimally) in desktop Chrome and FF
  • Internet Explorer won’t work
  • Might well crash your phone/tablet if you try it
  • Doesn’t understand resets
  • Does probably take a very long time to load data if you’re an experienced WKer
  • Only graphs stuff you’ve got wrong at least once
  • Caches subject/review data in local storage to avoid hammering the API excessively. If you want a full refresh, hit the submit button again.
  • May encounter problems when faced with high level users, particularly people who’ve done L60 -> reset -> L60! I’d be interested to see how it performs in those circumstances, perhaps send me your API key?
  • Almost certainly has bugs which may not ever be fixed
  • All plain JS, no obfuscation/minification, do whatever you want with it

Here’s the kind of thing I find it useful for:


Oh dear lord this is going to an absolute schnitt storm for me. :cold_sweat: It’s loading…



Super cool stuff, simultaneously motivating and infuriating :upside_down_face:
Thank you for sharing, I now get to hate my leeches even more


It works! Thanks for the screenshot, I’ll have to limit that line thickness…


What does the line thickness represent? Even if I only show 10 it’s hard to figure out what’s going on, because most lines are super thick… :sweat_smile:


I’ve just capped the line thickness based on Pep95’s image! It’s proportionate to the amount of days ‘lost’ to demotions, i.e. you “lose” more days going from G1 to A4 than you do from A4 to A3.


So, I have a question regarding the “lost days” data point. What exactly does that mean, and how is it calculated? Is it how many days earlier than now I could be my current level? Or is it how many days earlier said item could have been burned? As is, I’m not really grasping what exactly that information is supposed to be telling me.

But even still, I really like what you’ve done here! It’s pretty cool to be able to go back in time and think “God I remember that piece of garbage word, man I hated that” while being able to also realize how effective the SRS system is with said items, because I don’t struggle to read or understand said words anymore at all! Great work!

Edit: Upon closer inspection, I actually understand “time lost” less than I thought, because I’ve got some items that I literally learned this morning saying “time lost: 164 days”?

1 Like

Thanks, this is at least a little clearer :sweat_smile:


Sooo… It sounds like there may be a bug or two here and it’s not exactly scientific to begin with but the idea is that when an item is demoted you have “lost” a number of days equal to the amount of time it would take you to bring that item back to the level it was just at. A4->G1 takes 2 days, thus if you fail a G1 review 2 days are added to that item’s “lost days”. Failing at M seems to take you all the way back to G1, so that’s 2 weeks + 4 days = 18 days “lost”. It’s just a way to rank how annoyingly persistent these things are, really!

(Thanks for the kind words, also)

Edit: I did find a classic off-by-one error in the code that calcuates “days lost” - should be closer to reality now.


Not sure if it is already done this way, but are you perhaps scaling the thickness of the lines linearly with the amount of lost days? You could also try to do this logarithmically, such that an increase from 50 to 100 adds as much thickness as an increase from 100 to 200, or 200 to 400. This makes the extra thickness from 50 to 400 an extra 3 units of thickness rather than having it be 8 times thicker.
Or maybe maximize the thickest possible line and connect that thickness to the highest amount of lost days.

Yeah, it is linear - though I’ve just tweaked it a bit more so the scaling varies depending on the user. Log scaling is a good idea, I may well play with that a bit - thanks.

Ah, in fact…

…is what I think I’ve done most recently. Great minds, etc.

1 Like


Just a little example I put too much time in.
If you assume 1 day means that the line is one pixel thick, then the blue part resembles the relative thickness in pixels for a linear relation, the red part is for a logarithmic relation.


Thanks! this makes me twice as pissed that I got the last review for 今日は wrong. 44 lost days :frowning:

Most demotions : useful for leeches
Time wasters: useful for getting mad :joy:




The Struggle, indeed :sweat_smile:


why use cursive in popup bubbles, makes kanji confusing
Also I guess A1 column should have n/a for its success rate, can’t get lower than that.
Anyway, cool stuff, thanks for sharing!

1 Like

Laziness! I just used the defaults for that charting lib. Modified to be clearer now, thanks for pointing it out. (WK hasn’t made me learn any very complex kanji yet, so it wasn’t a problem for me.)

Also laziness, and I will remain too lazy to change that.

@Pep95 thanks for the illustration, I’ve had a play with log (and exp) functions on line width and I’ve decided I still prefer it linear, after the tweaks I made earlier.


I think the most painful part is seeing the total number of burns you failed… :sob:

It seems to hit a limit after around 60 requests or so. But maybe that means that I wouldn’t have wanted to see my chart anyway? :wink:

1 Like

For some reason, I’m not having any luck with it accepting my API code (using V2)

I’ll try again from my home computer later, and maybe have more success. This sounds like something I could definitely use in my struggle!