WaniPlus - Add custom vocabulary words & decks to WaniKani

That error is coming from another userscript.

Do you mind sharing a screenshot of your Tampermonkey dashboard? I’ll try to match what you have an investigate.

Ah, looks like youre right! I turned them all off and it worked fine.


Yeah, it seems the userscript in particular is the Reorder Omega script. Which I believe is @Kumirei if I am not mistaken?

I will look into it and see if it’s possible for me to prevent it on the WaniPlus side. I’d like for it to be as compatible as possible with other scripts.

@Kumirei if you are around, do you have any further context on this and why this might be happening? Maybe there is something I can implement from my end.


1 Like

How do you handle ids when inserting into the review queue? I do negative ids in my extension. I have this happening there, because omega tries to look for the item with that id, but can’t find it obviously.

For me the solution is faking the entire wanikani api (or at least the parts that are used)


I remember reading your development updates, and you mentioned you went with negative IDs. So I made sure to go the opposite direction, starting at Number.MAX_VALUE and working my way down.

Ah I see, so you mean there’s parts where you will manipulate the jStorage? I don’t ever write to, only read from. Yeah, that’s probably it then.

I’m just curious which key in the $.jStorage is causing the issue specifically. My items can be found in l/lessonQueue and activeQueue. But it seems they aren’t in reviewQueue, so that’s probably the one throwing the error.

Not jstorage, not sure, if you’re familiar with it, but it’s using wanikani open framework. That queries and caches the WK api. And it can then get the data about wanikani items using that.

I didn’t yet solve this issue, I’m actually working on it, I just got quite sick last week.


Ah, yeah I don’t use WKOF so I’m not really familiar with it unfortunately.

You probably already know this, but after a quick look at the code for Reorder Omega, the exact line of code that causes the issue is

original_queue = get_queue_ids().map(function (id) { return items_by_id[id]; });

items_by_id is defined as

items_by_id = wkof.ItemData.get_index(items, 'subject_id');

Which of course causes the issue:


I guess the only two options here would be to take advantage of being an extension, and with an early runtime, overwrite the wkof.ItemData.get_items function to return dummy data for custom items. Or if @Kumirei or the maintainer of WKOF is kind enough to push an update, I’ll even write the code.

Hope this helps you a little bit at least, and hope you’re feeling better

I plan on adding more monkeypatching to the already existing ones to catch any request made to the wk api and append my custom items to it. Asking Kumirei, or rfindley (the maintainer of wkof) to solve this on their end might sound nice on paper, but in reality there could be cases, where someone doesn’t want to depend on wkof, so they do their requests themselves. For those, I will need to mock the api either way.


lmao I’m an idiot, that makes so much more sense since that’s already what I do with the other web requests.

1 Like

Might make more sense on paper, but messing with wkof is probably a lot easier. There is a lot of s**t you need to wade through when modifying api requests


Somehow I missed the fact you released it! I just installed it and started working on my deck (although I’m too busy to study properly at the moment), and so far so good for me - no error whatsoever.
The dashboard looks clean and great too.
Two minor issues I’ve noticed (when I say minor, I mean super minor):

  • When creating cards, “meaning mnemonic” and “reading mnemonic” are used instead of “explanation”, which is how the field is called in WaniKani (got me confused for a second trying to figure out where the explanation field was supposed to be).
  • When doing a lesson, the imported item does not appear in the summary. Not sure if it’s worth spending any time on, though.

Once again, thank you so much! It’s an amazing extension, it looks great and works flawlessly too.


Thank you! I’m glad you find it useful and without issue.

I will definitely make the change to be “explanation” instead of “mnemonic,” I didn’t even think about that. I’m not sure why I even went with that originally.

As for your second point, it’s definitely in the list of things to do but hasn’t been a priority among the other things I have to get done. Soon though!

Let me know if you have any other feedback. Thanks again!

Dark mode is available on the website now


1 Like

Does this play nicely with userscripts, notably Reorder Omega? Gorbit’s version hasn’t really gotten any updates in a while and I was wondering if I could use this.

It has, but not yet publicly. It’s a lot of work. As far as I know, this one doesn’t work with userscripts yet either


Like gorbit said, it is a known issue that I have had on the backlog. If I can, I will try to dedicate some time tonight to see if I can get a fix in.

1 Like

After some work, I’ve published version 1.2.0. A lot of the changes in this update are primarily in the background, not too many new features.

Version 1.2.0

New features

  • Compatibility with Reorder Omega – you can now use this to sort WaniPlus items.
  • WaniPlus items now show in the session summary page for lessons & reviews.
  • WaniPlus only mode: Will only show WaniPlus items in your lesson & review queue. Click the extension icon then find and click the checkbox for “WaniPlus-Only mode” to enable.


  • Increased compatibility with scripts that use the WaniKani Open Framework under the hood.
  • Historical record of SRS progress is now kept.
  • Refactored the extension’s backend so that when data is synced, only items that have been updated and not the entire deck.
  • Other refactoring to improve general efficiency.


  • Queue item count in lessons page is now updated accurately.
  • Lesson & review button in the navbar on the dashboard now show accurate lesson & review count.
  • The dashboard where it shows the count of each item by stage (Apprentice, Guru, …) now includes WaniPlus items.

As always, any feedback & suggestions are appreciated.
Thank you!


You can now import items from a file to your decks!

As an example, I used the Kanji from levels 61-70 of @polv’s WaniKani Kanji Beyond.

Here is a preview of the deck as-is after importing: Polv’s Kanji Beyond (Levels 61-70)

In addition to the basic idea of mapping column names to the respective item fields, like below:

I’ve added what are called special columns. These are columns that WaniPlus will look for inside of your file to give additional flexibility on how your items should be imported.

For example, if you have the column waniplus_level in your file, it will automatically create or update the item to that level. Or, waniplus_srs to set the item to a specific SRS stage (apprentice, guru, etc).

Import Guide: Special Columns

This is just the first iteration of importing. I plan to add more features and special columns to make it more powerful.

1 Like

Thanks for the updates!

Is there any way to delete a created deck? And to change its privacy after creating it? Also, do you still have plans to, at some point, add an option to export decks to for example a CSV in the same way you can now import them? (not urgent, would just like to confirm if that’ll be a feature or not)

Time to get working on some decks… :smile:

1 Like

Also - the dashboard view doesn’t have a dark mode, any chance you could add that? :grin:
And the Dashboard level progress detail script takes over the one added by WaniPlus lol (meaning there are 2 dashboard progress detail graphs and no WaniPlus one), not sure if you @jhendrix13 or @UInt2048 would need to fix that?