Introducing KameSame - a new reverse-Wanikani web app!


Howdy everyone!

I just wanted to share this app I’ve been working on in my spare time:

Here’s a demo of the initial release:

As a language-learner, I find that I hit a wall when I’m not forced to produce the target language when I’m studying. My conversation partners help, but I’m often scratching my head to think of the word I want, even in cases where I’d automatically be able to recognize the Japanese word and produce English (as WaniKani trains you to). So, for the last 18 months, I’ve wanted a reverse WaniKani app with a more robust UI and ruleset than the (very much appreciated) KaniWani.

In particular, KaniWani treats synonyms as “wrong”, when it’s just a matter of course that lots of WaniKani items all translate to something common like “Actually”. KameSame cross-references each intended meaning against all the synonyms it can find, so if you give a valid answer that just happens to not be what the app is looking for, it won’t count for or against you—the app just tells you what it was looking for and gives you another try.

I hope some of you will try it and find it useful!

Major Update #1

Thanks to all the tremendous feedback in this thread, KameSame has come a long way in the 9 short days since the app went live. Lots of bug fixes, fine tuning, and tweaks. Today, I pushed the first major new feature addition: Search.

Here’s a demo of search:

It might not immediately be apparent, but I feel search is even more important in an app like KameSame than it is in WaniKani, because the problem KameSame solves is to help you answer the question “I know that I know word X, I just can’t recall it”, and enabling you to search for the word and in a single step add it to your review queue is a great way to ensure you won’t forget it again!

Major Update #2

The most common large feature request so far in this thread has been the ability to create custom strings that KameSame will mark correct, just like the Meaning Synonym feature of WaniKani. In KameSame, I’m calling these “alternate spellings” instead, since they’re not synonyms so much as other acceptable ways to type a word or phrase.

Here’s a demo of how to use that feature from the item detail page as well as while you’re studying:

This feature also supports “official” spellings that I’ve manually marked as correct and will immediately apply to everyone. If you have any suggestions for official alternate spellings, please let me know (here or at and I’ll review and add them. So far I’ve added a couple obvious ones: 見つける (for 見付ける) and 子ども (for 子供).

Major Update #3: Progressive web app (PWA) support for iOS

KameSame can now be “installed” like an app, which eliminates browser chrome, reduces the amount of keyboard show/hide jank, and confers permission to launch other app links (e.g. Midori & Japanese) without asking every time.


I had to shelve this update for a while until iOS 12.0.1 was released and PWA support was good enough to be work-aroundable.

Major Update #4: Account management & password reset

Since I wrote KameSame primarily for my own use, I didn’t bother with a bunch of typical things you might expect, like:

  • Field validation that name isn’t blank, email is unique, or that WaniKani API is valid
  • Ability to change name, email, or password
  • Ability to update WaniKani API key (if you regenerate it)
  • A password reset feature

Well, KameSame has all of that now. It was every bit as annoying and laborious as I expected. Check out the new goodies in the account page:

Major Update #5: Levels, experience points, and updated home page

I spent most of my holiday break working on KameSame. 7 days and 71 commits later, I’ve merged in the XP system I’d been hoping to build since I first started work on KameSame in May.

Here are some highlights:

  • Introduce a new level system. If you’ve been using KameSame, you already have a level, and now when you login you get to see what it is! There are currently 100 levels in the app, and reaching level 100 means you’ve burned the vast majority of content from WaniKani.
  • You level up by earning XP during reviews
    • XP is rewarded for each correct answer (exact or reading) that reaches a new maximum rank for a given item. For example if you get 大体 to SRS stage 4 for the first time, you’ll get roughly 20XP, but if you get it wrong on a subsequent review (SRS rank 3) and then correct review (back to SRS rank 4), you won’t earn more XP.
    • You get an inline XP notification animation each time you answer correctly. This can be disabled in settings if you find it distracting or unmotivating
    • Higher SRS ranks award more XP than lower ones
  • The home page is completely redesigned. It now shows your current level, a number of statistics, and noteworthy items. Those are:
    • Started studying - lessons you completed most recently
    • Frequently failed - items you get incorrect in reviews most often
    • Reading reliant - items for which your correct answers are most often via the hiragana reading as opposed to the exact kanji
    • Likely leeches - items where you most often answer with an alternate match before ultimately getting it right or wrong. Items with lots of synonyms will show up here, as will items you might have a leech between two items
  • Tons of little bug fixes to the SRS system and the stat tracking already in place

I’m sure there will be a few bugs here and there, but overall this is a massive release and I think it dramatically improves the usefulness of the app. Enjoy!

Home page:

Animated review summary page:

XP + SRS rank notification during reviews:

New setting to hide animations:

Does it matter to know english to japanese?
The New And Improved List Of API and Third Party Apps
Handling Wanikani with other resources
English meaning to hiragana review
Add-on that lets me only review kanji?
Does everyone here use user scripts?
Does it matter to know english to japanese?
KameSame not including all vocab?
I'm not renewing WaniKani
The New And Improved List Of API and Third Party Apps
Two Suggestions for WaniKani
Struggling to recall certain leeches
Recognizing Kanji/vocabulary while listening
Help with learning method / vocal recall
KaniWani Question - Triangles
Sorting WaniKani by usage frequency

macOS High Sierra 10.13.5
Safari 11.1.1

Every time I type a character in any field of the sign up page, it gives me a script error.

Interestingly, it does not happen on Chrome or Firefox.


Thanks! If you could try again I just wired up some error reporting. Thanks!


Great app, I’m having lots of fun with it! Shocking the number of things I thought I knew but really don’t. As a suggestion, would it be possible for it to ask only for items that are Guru’d and above? I think it’s fair to not be expected to think of a word I only just unlocked this morning. Besides which WK sometimes has this hiccup where a vocab is noted as unlocked even though you haven’t come across it in lessons yet, and I’ve had one such item pop up so far.


So far I’m loving it. I always had a hard time with KaniWani because the way it deals with kanji with similar meanings, and this nails it for me. I just found something during lessons: when you get wrong a vocab (could be kanji and radicals too, haven’t tested it yet), it shows “see 「undefined」” instead of “see 「」”, same with “Look up 「」”, but creates the link correctly (最近, bottom left), so it could be a typo in the code.

Great job!


I also really love the app but also agree that starting with guru ‘d items would be better, I take a while to go through my lessons and everything in the queue is showing up in KameSame before I’ve studied it here.

Otherwise everything works well and i feel this will help with my reading speed when encountering stuff in the wild.


Thanks for the feedback!

Right now the information I pull from your WK account is very very minimal, just your level, really, which is why you’ll get items in KameSame that you haven’t unlocked in WK yet. I was trying to really nail the mobile UI first and then tighten the integration.

A lot planned:

  • only enable KS lessons for WK unlocked items (I’ll consider guru as suggested here)
  • load user synonyms from WK and display them in the quiz. Also add them to the (sprawling) list of alternative matches
  • gracefully update the KS corpus of WK items on some batch interval. WK will frequently change and even delete items and falling months out of sync would confuse people
  • search! The item view page contains a lot of info on it, but there’s no way to find an item except to complete a lesson on it. I want search to work in KS with permalinkable item pages that link to lots of resources (jisho, tatoeba, WK) and allow users to yank specific items into their review queue when they know they struggle with a word
  • revisit the pure random shuffling. I think weighting both what lessons and reviews get queued might help and to keep a limit on the number of WIP items are currently in review to prevent overwhelm
  • in lesson feedback, include feedback on the new SRS rank of the item (trying to decide if this is good or bad motivationally)
  • add styling to error notifications (right now if your login fails, it just prints unstyled text at the top of the page)
  • allow users to change & reset their passwords
  • allow users to change their WK API keys (potentially hazardous if they inadvertently switch WK accounts and their level drops)


But I’m also having a hard time with similar items in KaniWani so this looks very promising.

Are you planning to include more specific controls about what will show up as lessons? Such as reviewing only items above a certain state (e.g. only burnt items) or enabling only one level at a time? Otherwise it might be a bit frustrating to start using it when you are not in one of the lower levels anymore. This is one of KaniWani’s most important features for me.


Good point. I think making this configurable is probably the right choice, and I think the right place to do it is the /lessons page, instead of account-wide. So instead of just choosing a number of totally random lessons, you could choose number plus some criteria (like: ‘at level’, ‘unlocked’, ‘guru’, … ‘burned’; with the likely default being ‘unlocked’ or ‘guru’) and that way only pull into review what you want.


Hello! I tried it out, it’s a great program, thank you for your hard work! I will definitely use that alongside my Wanikani studies from now on ^-^

Just a question: The card for Yen exists twice: once it wants you to put in ~en and once just the kanji en. I was wondering if that had a specific reason? It is kind of confusing ><

Really looking forward to how this site develops! Thank you ~


I have only played around with it for a very short while, but I like it so far. I do also agree with all the feedback given so far - those features would be really great!

One other thing I noticed: I clicked the link for a WaniKani vocab page expecting it to open in a new tab. It opened in my current tab instead, overwriting the lesson. I could back up into the lesson with no problem, leaving me where I left off, but if I go down a rabbit hole of doing research on the side, my lesson would likely be lost in the shuffle. So perhaps an idea to open the links in different tabs?

Thank you very much for sharing your hard work!


Hey Omun, in general I default to leaving links target the tab/window the user’s on (since every browser has a way to manually open things in a new tab). However, in an “app-ey” display this can be jarring, so it might be better to have most external links open in a new tab (even though I’m proud of how well KameSame deals with history and session persistence so far!). I’ll think about this.


Thanks for asking! KameSame doesn’t build its own curriculum, rather every item it tests you on comes straight out of WaniKani, which has items for both 円 and 〜円.

There are a handful of lessons (like this one) that don’t make a ton of sense, so I think a reasonable feature for KameSame would be to block certain items from showing up in lessons (and any of the 〜… items might be a good start)


Well, thanks a lot to everyone in this thread for feedback. Between error reports and feature requests, we now have a pretty long backlog to prioritize!


No errors this time. Form now works on Safari. Thanks!


Great first day of activity in the app so far. I’ve got a long feature list to work on, and in the meantime I’ve fixed the first half dozen or so bugs reported here and caught by our bug tracker. I hope folks keep finding and enjoying KameSame while I iterate on it


@searls Could you add the reading to the result page. Especially on mobile, where kanji generation and autocorrect are mixed it is easy to type the wrong reading and still get the right result (and sometimes the other way around).

Given the webapp nature the only way to refresh the count in the top bar seems to be reloading the entire page. Not a drama but surprising as switching to different menu items (e.g. home) did not.

Another idea would be to quiz for readings explicitly. Quizing for them separately would help ensuring that you really know both by heart. Given the rather limited value add, I understand if that is not interesting though.


I was getting kinda annoyed when kaniwani said I was wrong even though asking for the word mother/farther for example can have two different answers as taught by wanikani.
Im going to try this out then.
Thanks for sharing it with us!

Something I noticed is when I get a answer wrong it only gives me the kanji for the right answer. Would it be possible to show the furigana if answered wrongly? That would be really helpful. Is nice that it links to jisho though.


I think this is a good idea, since producing the word might not be made much easier if you have zero idea on how to pronounce it (though clicking through to another resource in that case might be better). I’ve added this to the backlog.


Iiiinteresting. Will have to give it a try.

Question: My WK subscription is up in a few days. Kaniwani has a feature where you can pause automatic syncing with WK before your subscription is up, so you don’t lose access to vocab in Kaniwani. Do you have/are you planning to include this option?