Learn Japanese with JapanesePod101.com

The most efficient way to remember the meaning and writing of Japanese characters.


Remembering the Kanji

Use your imaginative memory to remember thousands complex Japanese characters, with Remembering the Kanji by James W. Heisig.

Get it at

Try the sample chapter (includes 294 kanji).
Both the 5th and 6th editions are supported!

Review, Share and Improve!

See your progress Visualize your progress as stacks of flashcards. Reviews are automatically scheduled based on your past results.

Review the kanji Review the kanji online. Repeat more of the difficult characters, and less of those that you know well.

Share mnemonics Feeling stuck? Share stories with fellow learners. Find help and encouragement on the community forums!


Database maintenance23 September 2015
The website was unavailable for ~15 mins today. I realized it's been a while since run the optimize functions on the database. It seems to have helped... though not by much.

The cache of the shared stories list is a good improvement, however it only saves one relatively expensive query. There is another similar query for the "Recent Stories" that is not cached yet, and I suspect this one also causes a lot of slow down.

I'm going to investigate the design of the database. I've never studied MySQL thoroughly since my main interest in web development is the front end side (Javascript, Css, etc). However I need to catch up on optimization techniques because the stories table is nearly one gigabyte and it keeps growing. Something is not quite right with the way I've designed the table, or the indexes.

Just how effective is the Shared Stories cache?21 September 2015
Today I implemented a simple log for the cache and a corresponding report in the "administration" panel for the website. As you can see the Study page caching, which was meant to improve the page loading time, hasn't been very effective so far:

That's because the cache only lasted an hour, and with visits spread across thousands of kanji pages, the cache typically wouldn't last long enough for another visitor to benefit from it.

I've now set the cache of the shared stories list to 12 hours, and the effectiveness is closer to 30% as of writing. Now I have real numbers, and hopefully we will see at least every second request to the Study page to benefit from the cache.

Small fixes following yesterday's update18 September 2015
The timezone setting for the server was set incorrectly, so that due cards and "reviewed today" count would not update at the usual time. This is now fixed. Remember to restore your timezone setting in the Account page if you tweaked it yesterday. Thanks for faneca and Daniel for the report!

Update : three minor fixes:

  • Fixed broken /sightreading URL
  • Fixed broken article link in Manage page to the RTK Supplement news update
  • Fixed error when clearing the learned kanji list ("Clear" in Study sidebar)
I haven't got any other emails since the update so it looks like the update went smoothly!

Today's update : Optimizing the Study page17 September 2015
The website has been updated today with changes that should improve the loading times of the Study pages.

The Shared Stories list on the study pages is now cached. I have set the "lifetime" of cached stories initially as low as one hour. So eg. if you share a new story, or upvote someone else's story, it may take up to an hour to be reflected in the page. Update: it may take several hours, up to a day to notice a difference because the cache is very conservative atm (probably too much) .

This is obviously a usability problem. How do you signal to users that the content is not immediately updated, but will be eventually? It's not ideal, but I think the tradeoff is worth it. It's not critical for votes, reports, and shared stories to be reflected in real time on the website, and this saves a lot of unnecessary queries on the database.

I will keep an eye on just how many pages are cached, based on the user activity, and then increase gradually the effect of the cache until it provides a significant speed improvement. In theory, updating the Shared Stories list even just once a day should provide more significant gains. But I wanted to think about how that is going to work usability wise so I will finetune it over time.

Since the website has been entirely upgraded to a more complete framework, there may be a few bugs that slipped through my tests. These should be very easy to fix. If you find an issue please let me know and I will fix it asap.

Kanji Ryokucha : an Android client for the Kanji Koohii SRS15 September 2015
Last month I worked with member porukkusu on a simple API that lets a third party application connect with a Kanji Koohii user's account. The Android application, called Kanji Ryokusha is now available on slideme.org!

The app lets you complete SRS reviews on your mobile device. The key feature of the app is that you can write the kanji on your touch enabled device, before flipping the flashcard and comparing your answer with the correct one.

If you use the Kanji Koohii reviewing system and own an Android device, give it a go, and be sure to give some feedback to porrukusu in this thread!

A few points I need to mention:

I struggled implementing OAuth last month, partly because I was just so tired and I couldn't find any straightforward solution in the form of a library that handles OAuth completely from the server side. For this reason although there is a simple API working on the website for the SRS reviews, it is not made public yet. However if you have an interest in it, just get in touch as more developers can help me design it better.

Without OAuth we decided to go ahead with a simple sign in through the website's own sign in page. In programming terms I believe this is "good enough" for the time being. Hopefully in the future I can improve the API authentication, and at that point I will make it public. The downside to this is that the app needs your username and password to login.

In terms of privacy: the API currently only gives access to your flashcards (read/write) and custom keywords (read only). Your email is not shared with the app. If you decide to stop using the app you can always update your password if you'd like to be 100% sure it is no longer accessible through the third party app.
...more in the news archive.