[Userscript] WKStats Projections Page

^^ Install using the big Greasyfork URL right above! ^^

GitHub to propose changes and such

This script adds a provisional projections page to WKStats, since it’s been “under construction” for so long…

Because of this, you have to go to the WKStats projections URL to see it.

Thanks to @rfindley for the site and I hope this is helpful!

Are you unable or would prefer not to use this userscript? You can still get projections with @bagusprabangkoro’s site.

Screenshot of Userscript Projections Page

Former WKStats v1 Projections Page

v1.4.1: Fix for kana vocabulary (2023-05-27)
v1.4.0: Make past levels hidden by default & refactoring (2022-05-26)
v1.3.5: Internally refactor projection loop (2022-05-22)
v1.3.4: Fix potential bug in max + 1 calculation (2022-01-30)
v1.3.3: Shrink input field text boxes (2022-01-30)
v1.3.2: Configurable hypothetical speed (2022-01-29)
v1.3.1: Internal changes to support older browsers (2022-01-26)
v1.3.0: Add max + 1 and all burned projections (2022-01-24)
v1.2.3: Preserve input values (2022-01-22)
v1.2.2: Ensure radical pass time is not negative (2022-01-22)
v1.2.1: Fix bug in fastest possible calculation (2022-01-20)
v1.2.0: Extend current level view to any level (2022-01-19)
v1.1.5: Tidy codebase (2022-01-18)
v1.1.4: Limit projections to fastest possible (2022-01-18)
v1.1.3: Fix undefined sort behavior (2022-01-18)
v1.1.2: Load when other WKStats pages are used (thanks @BIsTheAnswer) (2022-01-18)
v1.1.1: Add current level kanji debug view (2022-01-17)
v1.1.0: True fastest possible & allow hiding past levels (2022-01-17)
v1.0.1: Add some formatting (2022-01-16)
v1.0.0: Initial commit (2022-01-16)


Could you add some screenshots?


So I just started WK on 1/3 and it predicts I’ll be level 60 by 12/28/22. Unlikely :smiley:

I’m sure the more levels I get the more realistic the predicted time will be.


The predicted column is inaccurate for low levels because it uses the median time even though 1 and 2 are accelerated. You can use the hypothetical or fastest possible columns for more interesting predictions.

1 Like

Has no effect for me.

Just pushed 1.0.1 to add some formatting to this!

There’s also a screenshot for @Kumirei in the description post.


Just installed this, but it doesn’t currently appear to be working on the latest Firefox yet. The script seems to throw an error the moment it is loaded:

Cool idea, but not useful for me yet. I have stalled on Level 29 in order to solidify the previous material before moving on, so I am definitely not going to finish Level 30 by October 2021. :sweat_smile:

So… shouldn’t it take into account the current date? And perhaps instead of setting the speed at the top, users could choose to use something like average speed so far?

Yes, that’s a TODO to dynamically figure out the fastest possible using the actual items.

The left column adds the median speed of the prior levels.

1 Like

Ah, yes, that makes sense. I’ll look forward to your update on the first point then. Thanks for the script!

Google Chrome.

I took a quick look too since sending level data for 40 levels would take up quite a big post, and nothing seemed off to me.

It seems that it’s due to me having completed an uneven number of levels, causing the division on line 56 to return 19.5 since javascript operates on floats. The index 19.5 then doesn’t exist in the array, causing the index operator to return undefined, which triggers the error. I solved the issue for me by simply adding a Math.floor around the division for now.


Thanks for this, it’s a cool feature to have.
I wonder whether the list of fast levels it’s using isn’t the current one. According to the “fastest” column I could theoretically level up from 45 in 4 days, but 45 isn’t a fast level.

Conversely, 47 is a fast level, but the fastest column shows a 7 day level up to 48.

1 Like

Should I change anything except installing the script? I still see “Sorry, this page is still under construction.” in chrome. The script is enabled.

I had that too… Then I clicked on the link in the OP (leading to the exact same page), and it worked. After that it worked in my original link as well. :woman_shrugging:

BTW for me it didn’t load the CSS, so I just got a plain HTML table which was… not very beautiful. Also I did not find it too helpful (at my level) that the past is shown as well. This being a “projections” page I had expected it to (only) be about the future tbh…

I have now pushed version 1.1.0.

This version calculates the true fastest possible and allows hiding past levels.

It also contains a fix for calculating the median, which apparently breaks the script for half of users. (See if updating fixes it for you, @peculiar_chester and @yemi90)

This should solve points brought up by @yatyisam, @BIsTheAnswer, and @omk3.


I like the toggle levels feature. :+1:
It still seems to think that my current level (45) is a fast level, however. :thinking:

It doesn’t show as fast for me. Are you sure the level isn’t actually fast for you?

I started 45 on the 14th. The Fastest column shows that I could be levelling up on the 18th.

Nice to see someone giving wkstats the attention it deserves (:sweat_smile: ).

Out of curiosity, have you compared your calculations against the calculations in the Javascript console on the Projections page? The v2 calculations are different from the old wkstats projections (it accounts for item dependencies now), and I haven’t vetted them against a large number of users yet.