List of all WaniKani-Kanji with their Level

Hi everyone,
I’m trying to develop a small app, where you can input a japanese document and it will tell you the amount of the used kanji per level. That way it will be easier to determine beforehand, if you are able to read/understand a certain book/manga/form etc.
Does anyone know of an easy way to get the WaniKani-dataset with all the kanji and their level? Something like:

{
{kanji: 木, level: 1},
{kanji: 売, level: 9}...
}

would be perfect, but any format would be okay for me. I could just scrape WK and/or do tons of requests while using the app, but I would like to just have a small local database (or json file) with all the kanji/level-pairs.
Thanks in advance :slight_smile:

3 Likes

Probably not mush help but https://www.wkstats.com/ also offers info on kanji and their level

1 Like

WKOF is the goto tool for this. It’s technically for userscripts, but I’ve used it plenty of times before to get specific items from wanikani.

3 Likes

If you only need the kanji and the level then here is such a list for you :smiling_face:

WaniKani Kanji by Level (JSON) - Pastebin.com

You can easily copy this and it’s in JSON format (but can just be pasted in Javascript as well). Do you really only need the level and the kanji itself? Anyway, it should look like this:

4 Likes

Thank you so much, you’ve made my day! <3
Yes, for now thats totally fine. I just want an output like: “With your current Level X you can read Y% of all the kanji in this document” or maybe a nice little graph, showing the “difficulty” of the document. Later I’ll probably add vocab too, but for the beginning thats totally fine. May I ask how you created the json file?

Thanks a lot @Gorbit99 and @Mythic_Bean too!

1 Like

I used the tool that @Gorbit99 mentioned called WKOF. If you use that in the browser it’s this command that you can use to get the list I posted here:

await wkof.Apiv2.get_endpoint('subjects').then(data => Object.values(data)
    .filter(e => e.object == 'kanji') // sort out everything but kanji
    .map(e => ({kanji: e.data.characters, level: e.data.level}))) // format data

It uses the WaniKani API behind the scenes which can give you a lot of information about WaniKani items and reviews and so on (this is also what drives most userscripts here).

2 Likes

Thanks, I’ll try that myself the next time I need it :slight_smile:

1 Like

Note that it’s super easy to get the kanji using the WK API, for instance in python:

import requests

def query(path, params=None):
    return requests.get(
        "https://api.wanikani.com/v2/" + path,
        params=params,
        headers={"Authorization": "Bearer " + token},
    )

def kanjis_for_level(level):
    resp = query("subjects", {"levels": level, "types": "kanji"})

    return resp.json()["data"]

def vocab_for_level(level):
    resp = query("subjects", {"levels": level, "types": "vocabulary"})

    return resp.json()["data"]

You get all the data that way (and you can update easily when WK reorders them).

2 Likes

Yeah, and you should bear in mind that you need to create an API token for that (on the WaniKani main page under settings) to be able to send requests at all. In your code this has to be put in a global variable called token.

2 Likes

Thanks, that looks even easier! I’ll try to implement that in JS, seems like a good way to get back in contact with the fetch-api :wink:

1 Like

(gotta mention, the wk docs have full javascript examples for the api)

2 Likes

I ended up writing a script to get the running total of kanji per WK level (for something unrelated to this topic), here’s the current output for reference:

 1:   18 (+18): 一二九七人入八力十三上下口大女山川工
 2:   54 (+36): 刀土千夕子小丁了丸才中五六円天手文日月木水火犬王出右四左本正玉田白目立々
 3:   84 (+30): 万今元内分切午友太少引心戸方牛父毛止冬北半古台外市広母用矢生
 4:  123 (+39): 石世主他代写去号央平打氷申皿礼休先名字年早気百竹糸耳虫村男町花見貝赤足車不仕宝
 5:  166 (+43): 兄皮交会光同回多当毎米羽考肉自色行西何体作図声弟形来社角言谷走近里麦学林空金雨青草音斤
 6:  207 (+41): 化地両全向安州曲有次死羊血京国夜妹姉店明東歩画直知長前南室後思星活海点科茶食首亡私
 7:  240 (+33): 欠氏由札民辺付以失必未末校夏家弱時紙記通高強教理組船週雪魚鳥黄黒風
 8:  272 (+32): 池支住助医君対局役投決究身者研馬森場朝番答絵買道間雲数楽話電所反
 9:  309 (+37): 売事使具受和定実服泳物苦表部乗客屋度持界発相県美負送重談要勝仮予新返保試験
10:  348 (+39): 公始起速配酒院終習転進落葉軽運開集飲業漢路農鉄歌算聞語読鳴線横調親頭顔病最求頁
11:  386 (+38): 争仲伝共好成老位低初別利努労命岸放昔波注育拾指洋神秒級追戦競良功特便働令意味
12:  425 (+39): 待勉庭息旅根流消倍員島祭章第都動商悪族深球童陽階寒暑期植歯温港湯登着短野泉合僕
13:  461 (+36): 問宿想感整暗様橋緑練詩銀題館駅億器士料標殺然熱課賞輪選鏡願養像情謝映疑皆
14:  491 (+30): 例卒協参周囲固季完希念折望材束松残的約芸基性格能骨妥雰頑苺狼
15:  529 (+38): 福技術寺岩帰春昼晴秋計列区坂式信勇単司変夫建昨毒法泣浅紀英軍飯仏築晩猫払匹丈
16:  562 (+33): 園曜書遠門係取品守幸急真箱荷面典府治浴笑辞関弁政留証険危存専冒冗阪
17:  599 (+37): 悲喜原細薬鼻側兵堂塩席敗果栄梅無結因常識非干是渉虚官察底愛署警恋覚説幻詳劇
18:  630 (+31): 訓弓告種達類報祈等汽借焼座忘洗胸脳僧禅可許枚静句禁喫煙喉叩飴苛
19:  663 (+33): 加節減順容布易財若詞昆閥歴舌冊宇宙忙履団暴混乱徒得改続連善絡比笛史
20:  696 (+33): 困災機率飛害余難妨被裕震尻尾械確嫌個圧在夢産倒臭厚妻議犯罪防穴論経
21:  729 (+33): 敵済委挙判制務査総設資権件派岡素断評批任検審条責省増税解際認企義羨
22:  762 (+33): 罰誕脱過坊寝宮各案置費価勢営示統領策藤副観値吸域姿応提援状態賀諦袖
23:  795 (+33): 収停革職鬼規護割裁崎演律師看準則備導幹張優宅沢贅施現乳呼城俳秀棚痒
24:  826 (+31): 担額製違輸燃祝届狭肩腕腰触載層型庁視差管象量境環武質述供展販株
25:  861 (+35): 限与含影況渡響票景抜訴訟逮補候構模捕鮮効属慣豊満肥巻捜絞輩隠掛替居捉莫
26:  894 (+33): 造授印創復往較筆鉛貯故障従我激刺励討郵針徴怪獣突菓河振汗豚再接独占
27:  926 (+32): 招段胃腹痛退屈悩暇織貸迷惑誘就訪怒昇眠睡症締迫靴濃端極途健康郎給
28:  961 (+35): 逆巨庫児冷凍幼稚処博清潔録隊修券婦奇妙麗微益移程精絶並憲衆傘浜撃攻綺沼
29:  994 (+33): 監杯乾催促欧江請雄韓壊診閣僚積督臣略航寄板街宗緊娘宴怖恐添猛烈索詰
30: 1027 (+33): 魅渇系婚遊旗照快版貧乏適預延翌覧懐押更枕浮漏符購越飾騒背撮盗匂濡柵
31: 1063 (+36): 離融編華既普豪鑑除尋幾廊掃泥棒驚嘆倉孫巣帯径救散粉脈菜貨陸似均墓富徳探偵
32: 1097 (+34): 久序迎志恩採桜永液眼祖績興衛複雑賛酸銭飼傷党卵厳捨込密汚欲暖机秘訳染
33: 1131 (+34): 簡閉誌窓否筋垂宣尊忠拡操敬暮灰熟異皇盛砂漠糖納肺著蒸蔵装裏諸賃噂股屁
34: 1166 (+35): 誤臓貴降丼吐奴隷芋縮純縦粋聖磁紅射幕拝薦推揮沿源勤歓承損枝爪豆刻腐痩咳
35: 1199 (+33): 遅彫測破舎講滞紹介己厄亀互剣寿彼恥杉汁噌炎為熊獄酔酢鍋湖銅油醤喋戚
36: 1233 (+34): 旧姓貿将盟遺伸債及奈幅廃甘換摘核沖縄津献療継維舞伎踏般頼依鹿諾牙超鮭
37: 1267 (+34): 跳昭漁償刑募執塁崩患戻抗抵旬湾爆弾聴跡遣闘陣香兆臨削契恵抱掲狙葬串眉
38: 1302 (+35): 需齢宜繰避妊娠致刊奏伴併傾却奥慮懸房扱抑択描盤称緒緩託賄賂贈逃還膝噛璧
39: 1338 (+36): 邦鈴阜岐隆雇控壁棋渋片群仙充免勧圏埋埼奪御慎拒枠甲斐祉稲譲謙躍銃項鋼囚宛
40: 1374 (+36): 顧駐駆柱唱孝俊兼剤吹堀巡戒排携敏鋭敷殿犠獲茂繁頻殖薄衝誉褒透隣雅嬉妖麺拉
41: 1408 (+34): 遜伺徹瀬撤措拠儀樹棄虎蛍蜂酎蜜墟艦潜拳炭畑包衣仁鉱至誠郷侵偽嘘凄喧嘩
42: 1442 (+34): 克到双哲喪堅床括弧挑掘揚握揺斎暫析枢軸柄泊滑潟焦範紛糾綱網肝芝荒袋餅
43: 1475 (+33): 誰珍裂襲貢趣距籍露牧刷朗潮即垣威封筒慰懇懲摩擦撲斉旨柔沈泰滅滋炉琴
44: 1508 (+33): 寸竜縁翼吉刃忍桃辛謎侍俺叱娯斗朱丘梨叫釣髪嵐笠涙缶姫粒砲雷芽塔挨拶
45: 1544 (+36): 岳澄矛肌舟鐘凶塊狩頃魂脚也井呪嬢暦曇眺裸賭疲塾卓磨菌陰霊湿硬稼嫁溝滝狂翔
46: 1581 (+37): 墨鳩穏鈍魔寮盆棟吾斬寧椅歳涼猿瞳鍵零碁租幽泡癖鍛錬穂帝瞬菊誇庄阻黙俵綿架孔
47: 1618 (+37): 砕粘粧欺詐霧柳伊佐尺哀唇塀墜如婆崖帽幣恨憎憩扇扉挿掌滴炊爽畳瞭箸胴芯虹巾煎
48: 1655 (+37): 帳蚊蛇貼辱鉢闇隙霜飢餓畜迅騎蓄尽彩憶溶耐踊賢輝脅麻灯咲培悔脇遂班塗斜殴盾穫
49: 1690 (+35): 駒紫抽誓悟拓拘礎鶴刈剛唯壇尼概浸淡煮覆謀陶隔征陛俗桑潤珠衰奨劣勘妃慌蹴
50: 1725 (+35): 峰巧邪駄唐廷鬱鰐蟹簿彰漫訂諮銘堰堤漂翻軌后奮亭仰伯偶淀墳壮把搬晶洞涯疫
51: 1761 (+36): 又偉頂召挟枯沸濯燥瓶耕肯脂膚軒軟郊隅隻邸郡釈肪喚媛貞玄苗渦慈襟蓮亮聡浦塚
52: 1796 (+35): 陥貫覇呂茨擁孤賠鎖噴祥牲秩唆膨芳恒倫陳須偏遇糧殊慢没怠遭惰猟乃綾颯隼輔
53: 1831 (+35): 寛胞浄随稿丹壌舗騰緯艇披錦准剰繊諭惨虐据徐搭蒙鯉戴緋曙胡瓜帥啓葵駿諒莉
54: 1866 (+35): 鯨荘栽拐冠勲酬紋卸欄逸尚顕粛愚庶践呈疎疾謡鎌酷叙且痴呆哺傲茎阿悠杏茜栞
55: 1902 (+36): 伏鎮奉憂朴栃惜佳悼該赴髄傍累癒郭尿賓虜憾弥粗循凝脊昌旦愉抹栓之龍遼瑛那勿
56: 1937 (+35): 拍猶宰寂縫呉凡恭錯穀陵弊舶窮悦縛轄弦窒洪摂飽紳庸靖嘉搾蝶碑尉凛匠遥智柴
57: 1970 (+33): 賊鼓旋腸槽伐漬坪紺羅峡俸醸弔乙遍衡閲喝敢膜盲胎酵堕遮烏凸凹楓哉蒼萌
58: 2004 (+34): 瑠硫赦窃慨扶戯濁奔肖朽殻享藩媒鶏嘱迭椎絹陪剖譜淑帆憤酌暁傑錠凌瑞菅璃
59: 2040 (+36): 忌遷拙峠篤叔雌堪吟甚崇漆岬紡礁屯姻擬睦閑曹詠卑侮鋳蔑胆浪禍酪憧慶亜汰梓沙
60: 2074 (+34): 款漣逝匿寡痢坑藍畔唄拷渓廉謹湧醜升殉煩劾桟婿慕罷矯某泌漸藻妄蛮倹狐冥
1 Like