Data & API
All data is free to use — including commercially — under CC BY-SA 4.0, with attribution to Kotowa, OpenJLPT and the upstream sources.
Download
| Level | Vocabulary | Kanji | Grammar |
|---|---|---|---|
| N5 | JSON · CSV | JSON · CSV | JSON · CSV |
| N4 | JSON · CSV | JSON · CSV | JSON · CSV |
| N3 | JSON · CSV | JSON · CSV | JSON · CSV |
| N2 | JSON · CSV | JSON · CSV | JSON · CSV |
| N1 | JSON · CSV | JSON · CSV | JSON · CSV |
Spreadsheet or pandas? Every CSV loads straight from the CDN: pd.read_csv("https://kotowa.neofintrix.com/dataset/csv/vocab-n5.csv")
Anki decks
Ready-made Anki decks with furigana, example sentences and text-to-speech. Re-importing a newer version updates your cards and keeps your review history.
⬇ Everything in one deck (N5–N1)
Yomitan dictionary
See the JLPT level of any word or kanji right in the Yomitan ⬇ openjlpt-yomitan.zip, then import it in Yomitan settings → Dictionaries. When data is refreshed, use Dictionaries → Check for updates.
CDN (no install)
Fetch the dataset directly from this deployment:
const n5 = await fetch('https://kotowa.neofintrix.com/dataset/json/vocab/n5.json').then(r => r.json());
JavaScript / TypeScript
npm install git+https://github.com/AntaresGG/kotowa.git#main
import { getVocab, findWord, findKanji, searchVocab, getGrammar } from 'kotowa';
getVocab('N5'); // 674 words, fully typed
findKanji('日'); // { strokes: 4, radical: '日', onyomi: ['ニチ','ジツ'], words: [...] }
searchVocab('taberu'); // kanji, kana, romaji or English
getGrammar('N3'); // 101 grammar points
kotowa 食べる # command-line lookup (also: kanji, grammar, quiz, random)
Python
uv pip install "git+https://github.com/AntaresGG/kotowa.git@main"
from openjlpt import get_vocab, find_word, search_vocab, query
find_word("食べる").meanings # ['to eat']
query("SELECT word, reading FROM vocab WHERE level = 'N5' LIMIT 5")
SQLite
-- full-text search over words, readings, romaji and meanings
SELECT v.word, v.reading, v.level
FROM vocab_fts f JOIN vocab v ON v.rowid = f.rowid
WHERE vocab_fts MATCH 'weather';
Schema
Every file is validated in CI against JSON Schemas. See the README for field-by-field documentation.