[Userscript] The GanbarOmeter

It’s likely my fault for pushing so many releases that break prior versions, but it does indeed look like you’re trying to run an old version (as @LupoMikti said).

Please ensure you are running the production release (the script name should be “ganbarometer-svelte” without the word “beta” or “dev”) and that it’s version 4.0.9 (as of 1/15/2022).

If it’s not, or if tampermonkey doesn’t seem able to find or apply the update, please delete the currently installed version and follow the instructions in the first post in this thread to reinstall.

1 Like

Thanks, both @LupoMikti and @Rrwrex. I needed indeed to update the script. Had some trouble doing that, but in the end just re-applied the installation link. Everything works now!

1 Like

Just a bit of a tangential interjection; but the already-existing word/phrase ‘groupthink’ actually means more like the opposite of what you’re describing. It’s a fascinating topic on its own, but I don’t want to derail. Just thought that since you’ve worked in project management, you probably should be aware of at least the general meaning of the word, just in case you might accidentally confuse co-workers if you were to, for instance, say something like, “Great to see all the groupthink going on here, folks! Keep it up!” :sweat_smile: See:

I just had the weirdest experience reading my own quote.

I’m familiar with the normal, negative connotation, so my own writing sounded really weird to me. I think I must have written “group-think” when I was reaching for something like “group effort”.

Thanks for the catch!


Would just like to say I’ll be very happy when we can adjust weighting per each SRS level as I was just reminded today that Guru 2 is my nemesis, especially for kanji. That’s the point where they are almost as difficult for me as Apprentice 2 or 3, whereas Guru 1 I almost never miss.

1 Like

Just to set expectations, it will be a good while. I still need to get review caching working to my satisfaction. I really want to get that rock solid before I do anything else.


I’d be happy to see that!

It’s kind of funny how we’re both posting as users of each other’s userscripts…

1 Like

I finally did what I should have done ages ago and changed to “Watching” everything in Wanikani → API And Third-Party Apps. :slight_smile:


Just one issue, the dial gauges overlap the navigation bar at the top:

Hopefully an easy fix? :sweat_smile:


Oops, I misunderstood. You mean the needles are at a higher z-index.

Indeed an easy fix (most likely) but I’ll need to investigate. This won’t make its own patch release.

1 Like

Indeed trivial. Fixed in the current dev version.

I’ll roll this up into the next production release.

Well, as always, not completely trivial. the modals (help and settings) need to be above everything, but the widgets need to be constrained to the z-index of the overall page below the top nav.

Fixing this finally taught me about “stacking context” in CSS, though.

For the curious:

The dials have things on several different layers, but the needles need to be on top and thus have some “big number” z-index (like 9999). But z-index only affects elements within the same stacking context. That is, if the parent element meets two criteria (explicit z-index and a position of anything other than static) then the children can never have a global z-index higher than the parent no matter how high the number or how many layers of children there might be.

So the solution was simply to add position: relative; z-index: 0; to the parent .gbWidgets div that surrounds all the widgets.


I just downloaded this script and got it all customized to my liking and it looks great!! It seems to be working perfectly as well~ Thanks for making it! :partying_face:


I have been thinking about how I would create a magic number for the gauge, and I think I have settled on simply going through the items and scoring them inversely proportionally to the number of days until they are due. That way it would work exactly like Expected Daily, only that it actually accounts for when reviews are due.

I wrote a quick script to try it out for myself, if you wanna see how I would do the calculation
Userscripts/test.js at main · Kumirei/Userscripts · GitHub

Just thought I would share my thoughts

1 Like

That’s awesome and much in line with my own thinking. Thanks!

I’ve been messing with plumbing all day — trust me I’d rather have been coding. Construction, electrical, machining, welding, woodworking, even roofing or digging, no problem. But plumbing … man I hate plumbing.

But the dishwasher is functional again so now I’m on my own time again.


Plumbing scares me. Do it wrong and it might cost you tens of thousands of dollars. Hopefully you’re a bit better at it than I am


My beef with plumbing isn’t competence or knowing my limits, it’s that it is so infrequently possible to bring the work to you! You can so rarely work at a bench like a civilized human being.

Instead you have to go to the work, which invariably means crawling around in wet, filthy environments reaching up and around things where you can’t see or fit your tools. When you finally do get a tool where you need it, with countless bruises and scraped knuckles, you realize you need someone else on the other side where you can’t reach to hold a pipe wrench or whatever and there is nary a helper to be found within shouting distance.

Fortunately, I have built up the required vocabulary (e.g. “let’s go plumbing”).

1 Like

It’s interesting: it appears you might be having the same cognitive dissonance I’ve been having. :grin:

I note that your original “expected daily” calculation used only the srs_stage of item and ignored the available_at dates. Your newest algorithm does it exactly the other way around (uses available_at and ignores the srs_stages)!

I think both srs_stage and available_at are important and should be considered in whatever the next iteration of this script presents.

While I’m still pondering and haven’t come to any firm conclusions, I’d like the gauge to encapsulate both the “expected daily” quantity and an estimate of the difficulty of upcoming assignments.

My current thoughts:

  • Quantity is easier than difficulty to calculate and reason about. Or at least less contentious.

  • Things I’m looking at with respect to quantity:

    • When items are scheduled for review

      • Count of items available now
      • Items available over the next 120 days
        • total count
        • total counts by srs_stage
    • Peak and median counts per-day of scheduled items

      • Median is useful as it won’t over-weight outliers
      • On the other hand, peaks are also important. If I have a huge number of enlightened reviews all scheduled on the same day, for example, I’d want to take it into consideration.
      • It may also useful to break this down by srs_stage
  • Things I’m looking at with respect to difficulty:

    • The srs_stage breakdown of upcoming assignments.

      • Stage 8 items are typically better memorized than stage 1 or stage 2 items, for example
      • On the other hand, items you haven’t seen in a month or four can often seem brand new.
    • Incorrect counts and “streaks” of correct answers (both current and max).

      • If I’ve answered an item incorrectly 200 times, it’s fair to assume I find it difficult.
      • If I’ve only seen an item 1-3 times it’s fair to assume it’s more likely to be difficult.
      • I’m unsure if there is anything to be gleaned from max streaks (vs. current)

With respect to that last set of points, I really like the algorithm @prouleau (and others?) use for leech status with the review_statistics endpoint: IncorrectCount / currentStreak**1.5 . I also agree that it seems unnecessary to distinguish between reading and meaning mistakes: the gauge should use whichever is worse.

Whatever the final algorithm ends up being, I think it should probably use most if not all of these things as inputs for the calculation.

Because I’m not completely confident I’ll come up with an optimal calculation, I definitely plan to allow users to assign their own weights to whatever inputs the script will support.

I want the defaults to be meaningful to as large an audience as possible, though. You shouldn’t need to understand what all these inputs mean or the best way to combine them into a single figure of merit just to use the script. But I do plan to allow “advanced” users to come up with potentially better weighted algorithms.


I don’t think that’s quite right in my case. When I created Expected Daily I just wanted something simple and easily understandable, that’s why I used the SRS stages. I think of them more as a proxy to the duration until due, but more approachable.

I do agree with this, however, as items coming back after being reviewed should also be counted.

While this is a reasonable approach, I think I would prefer to have it by the hour instead, as whether your reviews are due in the morning or evening may affect when you want to do your lessons

I’m not sure that this is really necessary, as a larger number of items will always translate to a higher score. If you simple score every item individually and sum it up, then that will account for the difference between a large number of guru items, for example, and a large number of enlightened items.

I imagine you could gather some stats on which SRS stages people mess up on the most

That’s probably a really good idea

1 Like

I think adding a launcher for the self-study quiz to this was about the best thing I’ve done for my own personal learning. It’s incredibly useful for anyone that hasn’t yet reached level 60 and only does their reviews once or twice at most per day.

I’m definitely going to make it the default to have radicals, kanji, and vocabulary checked in the preferences so that they are included in the self-study quiz. Those extra reviews of all items (not just kanji) are making my morning sessions a little longer, but the improvement in my retention has been dramatic. It also seems to be speeding up my time-on-level which isn’t really surprising, but I don’t really think that’s important.

In case anyone is interested, I’ve changed how I use the self-study quiz with this script.

My daily study routine

First I created a new self-study preset:

Once I launch the self-study quiz, I also enable audio (I use headphones) and disable pairing. Pairing feels easier to me, too much like cheating. It’s amazing how often recalling the reading reminds me of the meaning, or vice-versa. Getting intervening questions between the pairs is kind of a mental palate-cleanser that helps to overcome this “cheat”.

(I’ve also disabled lightning mode as I prefer to hit enter to move forward, but that’s a personal preference.)

With this configuration, I’m asked the normal reading and meaning questions for each item just like the standard WK reviews (except that it also reads aloud the pronunciation you just typed whenever you enter the correct reading — which is a little distracting, but it doesn’t hurt).

The last checkbox quizzes you on vocabulary production by presenting you with the meaning (written in English) and asking you to type in the hiragana for the Japanese word (like kamesame or kaniwani).

I really, really, REALLY wish I’d been doing this since the beginning. Practicing recall in both directions helps cement things into your brain.

I’ve been wanting to start using kamesame regularly for ages, but I didn’t want to allocate more than an hour or so each day studying Japanese and Wanikani already consumes most of that. I told myself I’d eventually transition after I plateaued here at level 60 and started burning off items without adding more (queue little red-haired girl singing “Tomorrow, tomorrow!”).

Because items quickly transition past stages 1-2, though, getting production practice in small batches like this with the self-study quiz doesn’t really add take too much extra time: I rarely have more than a few dozen items in stages 1-2.

Since WK isn’t really about teaching vocabulary, I think the tradeoff of only quizzing on production for stage1-2 items is quite worthwhile. Once I transition away from mostly studying kanji and focus more on production, grammar, and reading I’ll start using other tools but for now this seems the best of both worlds.

The following morning routine has been working exceedingly well for me in practice over the past several days (as I’ve written: I typically only do one review-session per day):

  1. Bring up the dashboard (refresh the page since it’s usually still there since yesterday) and glance over my status. Mostly, I just glance at the gauges and see how many reviews are currently in my queue.

  2. Click on the self-study launcher, which remembers my configuration choices from last time (shown above).

  3. Make a first pass through all the stage1-2 stuff. If I’m still in the early stages of a level, I’ll inevitably get several kanji and vocabulary items wrong. Each time I get something wrong, I hit “f” to refresh myself with the correct answer.

  4. Continue until finishing all items until the review page comes up. If there are more than two or three wrong items on the review page, I don’t even bother to look through what I got wrong. I just hit “enter” and start another pass.

  5. Usually, I get fewer wrong on the second pass, but if I don’t seem to be making progress, I sometimes click the “re-quiz” icon to just quiz myself again on the items I get wrong. Extra reviews for just the items I missed goes very quickly and usually suffices to start getting those items to stick.

  6. I continue making full iterations through all stage1-2 items until I’ve made a pass with 100% correct. My personal rule is that re-quizzes don’t count: I have to be able to answer all of my stage1-2 items correctly before starting my “real” WK reviews.

  7. Only now do I start my WK review session. In practice I’ve rarely spent more than a few minutes getting to this point.

  8. I continue doing reviews until there are no more reviews currently available. On the very rare occasion where I just don’t have the time to finish them all in a single session, I try very hard to do an extra review session in the evening to get it down to zero.

  9. Only after completing all my available reviews do I even consider doing my lessons, since how much time and energy I still have in the tank is part of the calculus.

  10. If the GanbarOmeter is to the left of the green zone (or at least to the left of the upper limit) I’ll usually try to do at least five lessons. Toward the end of a level when I’m seeing mostly vocabulary (which I find easier) I might do 10, 15, or even 20 or more lessons if they seem easy and I’m feeling particularly gung ho, but I try not to do more than 20 lessons at a time just to reduce my workload for the coming days.

That’s what works for me. I’d welcome any thoughts anyone else might have.


I’ve been using something very similar since I installed the ganbarometer. I have now switched to the same self study preset, good idea! Having the extra prompts really helps exercise the brain.

Question for you - when doing lessons do you like to finish out the vocab from the previous level or hit the radicals/kanji/vocab from the new level? I’ve got the reorder script enabled to make sure I finish my previous levels vocab first.