Hi everyone!
I built ksost mostly for myself, but I wanted to share it in case it is useful to other people here.
ksost stands for Kanji Stroke Order Study Tool. It is a small app for practicing kanji stroke order, with lessons and reviews managed separately from WaniKani.
The https://kanjivg.tagaini.net/ dataset is used for the kanji shapes and stroke order
There is a public instance here:
I recommend using this instance only for testing. I do not guarantee it will always be available, that it will never break, or that I will keep hosting it forever. If you want to actually use ksost long term, I recommend deploying your own instance or using the desktop mode. See README.md in the source code linked below to find out ways to run or deploy it yourself. You can export your progress data in one instance and import in antother, so you can start using my instance and migrate to your own or to desktop later.
Source code:
How it works:
- You practice kanji stroke order through lessons and reviews.
- You can click the guides on the edges of each stroke or use gestures to actually draw the shapes. When you draw only the position and average initial direction of your gesture are considered, but if you draw the character precisely it will always be correctly recognized
- ksost has its own progress system, independent from WaniKani.
- The SRS mimics WaniKani’s default one
- WaniKani can be used to decide which kanji should become available for lessons.
- If WaniKani sync is enabled in Options, ksost checks the kanji you started learning in WaniKani and enqueues them as available lessons.
- If WaniKani sync is disabled, you can still use ksost, but you need to add lessons manually from the Advanced section on the home page.
About the WaniKani API key:
The key is used for authentication, so ksost knows which user is making the request. Other than that, it is only used for WaniKani sync, when that option is enabled. Use with a read-only WaniKani key.
If you run your own instance, you can also run ksost without requiring WaniKani API keys by enabling trusted local mode. In that mode, users can be created locally without checking WaniKani. This is intended only for private/trusted deployments, not public servers.
I hope you guys like it, I may be able to improve/fix one thing or another as time goes, but please understand that I can’t guarantee I’ll maintain this with the quality or dedication that one might expect for a serious project. Thanks for understanding

