WaniKani Lesson Balance script

Get an even progression across radicals, kanji, and vocabulary with this script: WaniKani Lesson Balance. This script will have you doing more of your vocabulary earlier. So no more “Congratulations! You’ve leveled up! And now you need to work on 120 vocab!”

In the extreme your progress could look like this (very close to balanced):


E.g. this is what my lesson starting level 8 looked like:


More realistically (unless you always keep your lessons at zero - I always have plenty waiting for me), then with this script your progress will look a lot like this:

Note that this dashboard information is from [Unsupported] Userscript: Dashboard Level Progress Detail (srs stages on progress bars).

Here’s a log of screenshots showing my progression from level 6 to 7 with this script.

If you’re curious as to how this works the mechanics are:

  • Detect when the lesson has started, or the lesson has been continued.
  • Leave the order alone for anything from an earlier level.
  • Reorder the remaining subjects so that the percentage of radicals, kanjis, and vocab stay equal (with vocab > kanji > radical as tie breaker).
  • When picking a subject select the one that unlocks the most (i.e. pick the radical that unlocks the most kanji and indirectly vocab, pick the kanji that unlocks the most vocab, or pick any vocab).
  • If it’s impossible to, say, pick a vocab because they’re all locked then the script will allow the radicals, kanjis, and vocab to get unbalanced. It won’t stop you from learning!

I’ve tested this script out on myself for a full level and a half. I think I’ve ironed out all the bugs. If you find a bug, please do let me know! I’m also open to sharing what I’ve learned about writing reorder scripts because it wasn’t at all intuitive. (Big thanks to @rfindley for helping me get started)


If you like this script, you might also like some other things I’ve been up to:

Original post (just to keep the replies in context):

Take a look at this:

Or just these snippets:




What you’re looking at is a visualization of the dependencies of vocab → kanji → radicals on level 5.

What I’m thinking is that these can be rearranged in order to maximize the unlock rate, or that they can be organized by some other criteria (such as most troublesome for most people first).

I may experiment on myself by making a reorder script that aims to unlock the most vocabulary the soonest. Hmm. Hmm…


1 Like

Took me a minute to imagine what effect this would have, then I remembered most people don’t do all their lessons at the same time.

1 Like

Nice visualization.

The tech tree is actually higher tho. In the images it seems like if tech tree has height=3, but in later levels you will see that there are Radicals that are composed of already learned Kanjis, basically making the tree higher.
For example, the older brother` radical is made up of smaller radicals (this).

But yeah, definitely there could be some improvements. Sometimes they teach you a radical with no uses in kanji in that same level.

I would just keep going using the wanikani’s order.

I added a link in the tree when it was required to unlock. (I excluded links to kanji or radicals from previous levels).

I don’t think that the tree ever does get deeper than 3 (a vocab depends on kanjis that depend on radicals). At least, not in the way that the information is organized in the WK API. I had a dig around various levels and this is the most complicated relationship that I found (from level 10):

Interesting but as already mentioned, the only way you can optimize with this is when you don’t do all your lessons at once. Even then I’m not sure unlocking a bigger chunk of vocab earlier will make much difference.

Yes. This would be aimed at someone like me that doesn’t have time to do them all at once.

Edit: There are differences. On level 5 I could have started a number of kanji before even doing radicals in order to unlock their vocab sooner, namely:

交 (Mix), 光 (Sunlight), 回 (Times), 多 (Many), 米 (Rice), 体 (Body), 声 (Voice), 売 (Sell), 弟 (Younger Brother), 来 (Come), 社 (Company), 角 (Angle), 谷 (Valley), 麦 (Wheat), 林 (Forest), 空 (Sky), 草 (Grass), 音 (Sound).

But why? I just don’t see an practical benefit to this without the exception of clumping similar items together for people who are interested in that sort of thing.

Most levels can be done in around a week at 20-30 items per day. Given that after level 14 there’s usually <10 radicals and 30 to 40 kanji it’s usually around 2 days to clear out the dependencies then just filling the rest of the time to level with vocab.

Even if you’re leveling slowly the default ordering just makes it so that dependencies are a borderline non-issue and the penalty for missing something is only like a 2 day delay which shouldn’t matter at all for lower pace individuals.

I think it’s cool visualizing the dependencies like this, I just don’t see an actual reason to go out of your way to further optimize WK ordering.

In my case I find I have bandwidth for 0, 3, or sometimes 6 items a day.

1 Like

I have a reorder script working for me (at least, I think I do - I still have to use it a bunch first). It is certainly not for everyone. What it does:

  • Orders vocab towards the top, then kanji, then radicals.
  • Will always try to keep the percentages of started subjects balanced (e.g. 65% of radicals, 65% of kanji, 65% of vocab) - unless it can’t because not enough is unlocked.
  • Picks subjects that unlock the biggest “tree” of remaining subjects for that level.

To explain that last point some more with an example from my level (6):

  • kan/直 unlocks voc/直す, voc/直る, voc/正直, voc/直行
  • kan/安 unlocks voc/安全, voc/安い, voc/安心, voc/不安, voc/平安

So it will order kan/安 ahead of kan/直 in order to unlock the most vocab the soonest. The same applies to the order of radicals, except for radicals it’s considering the whole tree of unlocks (rad through to kan through to voc).

For me right now on level 6, this is my current started percentage across the types is:

vocabulary @ 0%, kanji @ 35%, radical @ 100%

My progress bars look like this:

I’ll report back in while to show you how that percentage is altered by this script.

Illustrating how my progress went with this script:

Oops. I had a bug that prioritized radicals over all else:

It’s rebalancing things:

There’s a bug in my script. When I continue for more lessons it doesn’t alter the lesson order (so I did a bunch more radicals again):

To illustrate how the (as yet unpublished) script works:

I wonder if this would look good with the ‘locked’ background image for the locked portion of the bar:

I wanted to use that image. I believe that the URL will change with every new deploy of WK. Any thoughts as to how to reuse it?

I don’t think the url changes unless the asset itself changes. But you could either draw your own and host it somewhere, or data-encode it and paste it in the script itself (online data uri encoder)

1 Like

Oh! Data url encoding is a great idea. Thanks! :slight_smile:

I’m sorry, but what is the script for these level bars? Or it’s private?

its this one.

Oh, thank you!

Can’t wait to trial this script… I made a comment in a “wishlist” thread asking for something like this. What usually happens with me is that I get hit with 30+ lessons from the previous level when entering the new level and would prefer just to deal with the items from the new level. A bunch of Kanji in each level have only one or two vocab words attached to them at respective levels and it would be great if I can study them last. This is not about speed of levelling, more about managing my time and expectations and have a constant level of apprentice items to deal with at all times. I am bookmarking this thread.