漢字API
漢字1字について、常用漢字かどうかと音訓、小学校の何年生で習うか、人名用漢字か(子の名前に使えるか)を返すAPIです。名づけで使える字を調べる、学年に合わせてふりがなが要る字を見つける、旧字体から今の字体を引く、といったことが手軽にできます。
- できること
- 1字ごとの 常用漢字か・音訓(音/訓・1字下げの特別な音訓・送り仮名・例・習う学校段階)・旧字体(康熙字典体)・許容字体・学年(1〜6年)・中学校で習う字か・人名用漢字か(表(一)・表(二))・コードポイント / 学年ごと・常用漢字・人名用漢字の一覧
- 収録
- 常用漢字 2136字(音訓 4388)と人名用漢字 864字の、あわせて 3000字
- 費用・登録
- 無料・登録不要・APIキー不要(提供条件は利用状況で変わることがあります)
- 出典
- 常用漢字表(平成22年内閣告示第2号)・学年別漢字配当表(平成29年文部科学省告示第63号)・戸籍法施行規則 別表第三(令和8年6月26日の「勒」の追加まで)。くわしくは出典と作り方
- 気をつけること
- 画数は入っていません(理由)。熟語の読みは取れません。名前に使えるかは目安で、最終的な判断は市区町村が行います。
データの版は /kanji/v1/meta.json で確認できます。
はじめかた(3ステップ)
- ブラウザで開いてみる: https://api.shirugear.com/kanji/v1/漢.json を開くと、「漢」の情報が返ります。URLの字を調べたい字に変えるだけです(プログラムからは字を URLエンコードして
/kanji/v1/%E6%BC%A2.jsonのように呼びます)。 - 欲しい項目を取り出す: 常用漢字なら
joyoに音訓など、学年はgrade、人名用漢字ならjinmeiに表の別が入っています。使い方の例にそのまま使えるコードがあります。 - 利用規約を確かめる: 利用規約をご確認ください。登録や申し込みは要りません。
いろいろな言語から呼ぶ
サーバー側のプログラムやコマンドからも、URLを開くだけで使えます。字は UTF-8 で URLエンコードしてください(ほとんどの言語に関数があります)。
const ch = "委";
const res = await fetch("https://api.shirugear.com/kanji/v1/" + encodeURIComponent(ch) + ".json");
const k = await res.json();
console.log(k.grade, k.joyo.kun); // 3 [ "ゆだねる" ]curl -s https://api.shirugear.com/kanji/v1/%E5%A7%94.json \
| jq '{grade, on: .joyo.on, kun: .joyo.kun}'<?php
$ch = '委';
$k = json_decode(file_get_contents('https://api.shirugear.com/kanji/v1/' . rawurlencode($ch) . '.json'), true);
echo $k['grade'], ' ', implode('・', $k['joyo']['kun']), "\n"; // 3 ゆだねるimport json
import urllib.parse
import urllib.request
ch = "委"
url = "https://api.shirugear.com/kanji/v1/" + urllib.parse.quote(ch) + ".json"
with urllib.request.urlopen(url, timeout=10) as res:
k = json.load(res)
print(k["grade"], k["joyo"]["kun"]) # 3 ['ゆだねる']その場で試す
漢字1字を調べる
試しに:
| コードポイント | |
|---|---|
| 常用漢字 | |
| 習う学年 | |
| 音(段階) | |
| 訓(段階) | |
| 旧字体(康熙字典体) | |
| 人名用漢字 | |
| 名前に |
訓の「・」の後ろが送り仮名、()は習う学校段階(小・中・高)、「特」は常用漢字表で1字下げの特別な音訓です。
応答の JSON を見る
名前に使える字か調べる
試しに:
| 字 | 名前に | 理由 |
|---|
漢字は1字ごとに漢字APIを呼んで確かめます。ひらがな・カタカナ(変体仮名を除く)と、長音記号「ー」・繰り返し記号「ゝゞヽヾ々」は使える字として扱います。読み方の決まりなど、最終的な判断は出生届を出す市区町村が行います。
学年で習う字の一覧
URLの一覧と字の書き方
どれも、URLを開く(GET)だけで JSON(UTF-8)が返ります。先頭は https://api.shirugear.com です。自分のサイトのJavaScriptから直接呼べます(CORS対応)。
| URL | 返すもの |
|---|---|
/kanji/v1/{漢字1字}.json | その字の情報。常用漢字・人名用漢字のどれでもない字は 404。例: /kanji/v1/%E6%BC%A2.json(漢) |
/kanji/v1/grade/{1〜6}.json | 学年別漢字配当表の、その学年の字の一覧(字・音・訓)。例: /kanji/v1/grade/1.json(80字) |
/kanji/v1/joyo.json | 常用漢字 2136字の一覧(字・学年・旧字体・音・訓)。約250KB(圧縮して約35KB) |
/kanji/v1/jinmei.json | 人名用漢字 864字の一覧(字・表(一)/表(二)・同じ字種の字・括弧内の常用漢字) |
/kanji/v1/meta.json | データの版・出典・件数 |
URLの字の書き方
- 字は UTF-8 で URLエンコードして入れます(「漢」なら
%E6%BC%A2)。ブラウザのアドレス欄に/kanji/v1/漢.jsonと打てば、ブラウザがエンコードします。 - 1字だけです。熟語(2字以上)やひらがな・記号は 400 になります。
- 字はそのままの文字コードで調べます。見た目が同じでも文字コードが違う字(互換漢字)は別の字です。たとえば人名用漢字の「祐」(U+7950)と「祐」(U+FA4F)は、どちらも表(一)にあり、別々に引けます。Unicode の正規化(NFC など)をかけると互換漢字が別の字に変わるので、名前の字を調べるときは正規化せずに送ってください。
- 「𠮟」(U+20B9F)のように、4バイトの文字(サロゲートペア)になる字もあります。JavaScript の
encodeURIComponentはそのまま正しく扱えます。
- 呼び出しは
GET(またはHEAD)だけです。独自のヘッダを付けずに呼んでください。
応答の例と各項目
応答の例(常用漢字)
GET https://api.shirugear.com/kanji/v1/%E5%A7%94.json
{
"kanji": "委",
"codepoint": "U+59D4",
"joyo": {
"order": 21,
"kyujitai": [],
"allowed_form": null,
"on": ["イ"],
"kun": ["ゆだねる"],
"readings": [
{ "reading": "イ", "type": "on", "special": false, "stage": "小", "examples": ["委任", "委員", "委細"] },
{ "reading": "ゆだねる", "type": "kun", "special": false, "stage": "小", "okurigana": "ねる", "examples": ["委ねる"] }
],
"jinmei_variants": []
},
"grade": 3,
"school": "小学校",
"name_ok": true,
"jinmei": null,
"data_version": "2026-11-04"
}
応答の例(人名用漢字)
GET https://api.shirugear.com/kanji/v1/%E4%BA%9E.json
{
"kanji": "亞",
"codepoint": "U+4E9E",
"joyo": null,
"grade": null,
"school": null,
"name_ok": true,
"jinmei": { "table": 2, "same_as": null, "joyo_form": "亜" },
"data_version": "2026-11-04"
}
1字の項目
1字の項目の一覧を開く(8項目)
| 項目 | 型 | 内容 |
|---|---|---|
kanji | 文字列 | 字(1文字) |
codepoint | 文字列 | Unicode のコードポイント("U+59D4") |
joyo | オブジェクト/null | 常用漢字なら下の表の情報。常用漢字でなければ null |
grade | 数値/null | 学年別漢字配当表の学年(1〜6)。配当外の字は null |
school | 文字列/null | その字を習う学校。"小学校"=学年別漢字配当表の字(1026字)、"中学校"=それ以外の常用漢字(1110字)、人名用漢字は null |
name_ok | 真偽値 | 子の名前に使える字か。このAPIが返す字(常用漢字・人名用漢字)はすべて true(無い字は 404) |
jinmei | オブジェクト/null | 人名用漢字なら table(1=表(一)・2=表(二))・same_as(表(一)で「―」で結ばれた同じ字種の字。例: 亘 ↔ 亙。無ければ null)・joyo_form(表(二)の括弧内の常用漢字。例: 亞 → 亜)。人名用漢字でなければ null |
data_version | 文字列 | データの版(データの更新) |
joyo の各項目(常用漢字)
joyo の項目の一覧を開く(14項目)
| 項目 | 型 | 内容 |
|---|---|---|
order | 数値 | 常用漢字表の並び順(1〜2136。字音の五十音順) |
kyujitai | 配列 | 表で丸括弧に入れて添えてある字(いわゆる康熙字典体・旧字体)。無ければ []。362字にあり、「弁」だけ3字(辨・瓣・辯)。「朗」の「朗」(U+F929)のように互換漢字のことがあります |
allowed_form | 文字列/null | 許容字体があれば、違う部分("辶" または "飠")。遡・遜・謎("辶")と餌・餅("飠")の5字だけ。許容字体は Unicode では同じ文字コードの字形の違いなので、字そのものは返しません |
on・kun | 配列 | 音(片仮名)と訓(平仮名)の一覧。表の順。下の readings から取り出したもの |
readings[].reading | 文字列 | 音訓("イ"・"ゆだねる") |
readings[].type | 文字列 | "on"(音)か "kun"(訓) |
readings[].special | 真偽値 | 常用漢字表で1字下げになっている音訓(「特別なものか、又は用法のごく狭いもの」。例: 遺の「ユイ」)なら true。全部で178 |
readings[].stage | 文字列 | その音訓を習う学校段階の目安。"小"・"中"・"高"(文部科学省の音訓の段階別割り振り表) |
readings[].okurigana | 文字列/null | 訓だけにある項目。送り仮名("ゆだねる" なら "ねる")。送り仮名が無い訓は ""(例: 嵐の「あらし」)。例欄から決められないものは null(決め方) |
readings[].examples | 配列 | 常用漢字表の例欄の語("委任" など)。無ければ [] |
jinmei_variants | 配列 | この字を括弧内に掲げている人名用漢字 表(二) の字。名前に使える異体字です(例: 亜 → ["亞"])。無ければ [] |
学年ごとの一覧(grade/{1〜6}.json)は {"grade", "count", "kanji": [{"kanji", "codepoint", "on", "kun"}], "data_version"}、常用漢字の一覧(joyo.json)は1件に grade・school・kyujitai も入ります。人名用漢字の一覧(jinmei.json)は1件に table・same_as・joyo_form が入ります。並びはどれも元の表の順です。
出典と作り方
データはすべて、国の告示・法令(著作権法13条により自由に使えるもの)から作っています。表の PDF から読み取る手順はスクリプトにして残し、件数が告示と合わなければ作り直しが止まるようにしています。
| 項目 | 出典 |
|---|---|
| 常用漢字・音訓・旧字体・許容字体 | 常用漢字表(平成22年内閣告示第2号)。2136字・音2352・訓2036(計4388)・1字下げ178・旧字体362字(364字体)・許容字体5字が、告示と一致することを確かめています |
| 学年(1〜6年) | 学年別漢字配当表(小学校学習指導要領 平成29年文部科学省告示第63号・令和2年度から)。字数は 80・160・200・202・193・191(計1026字)。文部科学省の学習指導要領の PDF では表が図形で描かれていて文字として取れないため、同じ告示に基づく文部科学省の音訓の小・中・高等学校段階別割り振り表(平成29年3月)の学年の数字から取りました |
| 音訓の学校段階 | 同じ割り振り表。4388の音訓すべてが常用漢字表の音訓と1つずつ一致することを確かめています |
| 人名用漢字 | 戸籍法施行規則(昭和22年司法省令第94号)の別表第三(第60条関係)。令和8年法務省令第43号(2026年6月26日施行)による「勒」の追加まで反映し、864字(表(一) 652字・表(二) 212字)。法務省の人名用漢字表の PDF から読み取りました(下の注) |
- 人名用漢字の表は、令和7年5月の改正で別表第二から別表第三に移りました。中身(字)は変わっていません。
- 人名用漢字表の PDF は字を文字コードで持っていない(字の画像)ため、字の画像を明朝体で描いた候補の字と照らし合わせて読み取り、決めきれない字は目で確かめました。候補には Unicode の文字データベース(Unihan の人名用漢字の印)を使い、表の字と1対1に対応すること・表(二)の括弧内の字が一致することを確かめています。
- 中間の表(TSV)と作り方のスクリプトは、シルギアの手元に置いています。
画数を入れていない理由
漢字の画数には、国が定めた公的な表がありません。常用漢字表にも人名用漢字の表にも画数は載っておらず、同じ字でも辞書や字形によって数え方が違うことがあります(しんにゅう・くさかんむりなど)。出典をはっきりさせられないため、このAPIには入れていません。
送り仮名(okurigana)の決め方
常用漢字表の音訓欄は「ゆだねる」のように平仮名だけで書かれていて、送り仮名の区切りは示されていません。そこで、同じ表の例欄(「委ねる」)から、字のすぐ後に続く平仮名を見て決めています。「確かだ」の「たしか」は「か」、例が字1字だけ(「嵐」)なら送り仮名なし("")です。例から決められない訓(「異にする」「異なる」の「こと」など)は null にしています。送り仮名の正式な付け方は「送り仮名の付け方」(昭和48年内閣告示第2号)をご覧ください。
「中学校」の字について
学年別漢字配当表に無い常用漢字(1110字)は school を "中学校" にしています。中学校学習指導要領では、配当表以外の常用漢字の大体を読むことになっているためです。音訓ごとの段階(stage)は別に、割り振り表の小・中・高を返します(小学校で習う字でも、特別な音訓は高校になることがあります)。
使い方の例
どの例も、ブラウザの JavaScript(フレームワーク不要)で動きます。一度取った字は覚えておき、同じ字では呼び直しません。
名づけで使える字か調べる
const API = "https://api.shirugear.com/kanji/v1/";
const cache = new Map();
// 漢字1字の情報。常用漢字・人名用漢字に無い字は null
function kanjiOf(ch) {
if (!cache.has(ch)) {
const p = fetch(API + encodeURIComponent(ch) + ".json").then((res) => {
if (res.status === 404) return null;
if (!res.ok) throw new Error("HTTP " + res.status);
return res.json();
});
p.catch(() => cache.delete(ch)); // 失敗したら次は取り直す
cache.set(ch, p);
}
return cache.get(ch);
}
// 名前の字のうち、使えない字を返す(ひらがな・カタカナ・ー・ゝゞヽヾ々 は使える)
async function unusableChars(name) {
const bad = [];
for (const ch of name) {
if (/^[ぁ-ゔァ-ヴーゝゞヽヾ々]$/.test(ch)) continue;
const k = await kanjiOf(ch);
if (!k) bad.push(ch);
}
return bad;
}
console.log(await unusableChars("凜太郎")); // []
console.log(await unusableChars("鮃太")); // ["鮃"]
「使える」は戸籍法施行規則の字の範囲に入っているかどうかです。読み方の決まりなど、最終的な判断は出生届を出す市区町村が行います。
学年に合わせて、ふりがなが要る字を見つける
その学年までに習う字を学年ごとの一覧から集め、文章の中のそれ以外の漢字に印を付けます。学年のファイルは6つだけなので、まとめて取っておけます。
// grade 年生までに習う字の集合
async function learnedUpTo(grade) {
const lists = await Promise.all(
[1, 2, 3, 4, 5, 6].filter((g) => g <= grade).map((g) =>
fetch("https://api.shirugear.com/kanji/v1/grade/" + g + ".json").then((res) => res.json())
)
);
return new Set(lists.flatMap((l) => l.kanji.map((k) => k.kanji)));
}
const learned = await learnedUpTo(3);
const text = "委員会で議論を重ねる";
const needRuby = [...text].filter((ch) => /\p{Script=Han}/u.test(ch) && !learned.has(ch));
console.log(needRuby); // ["議", "論"](議・論は4年生以降)
このAPIが返すのは1字ごとの音訓です。熟語の読み(「委員」=いいん)は返さないので、ふりがなの文字そのものは辞書などで決めてください。
旧字体から今の字体を引く
const k = await kanjiOf("惡"); // 上の例の kanjiOf
if (k && k.jinmei && k.jinmei.joyo_form) {
console.log(k.jinmei.joyo_form); // "悪"(惡 は人名用漢字 表(二)。名前にも使える)
}
表(二)に無い旧字体は 404 になります。常用漢字の側から旧字体を見るときは joyo.kyujitai(康熙字典体)を、名前に使える異体字を見るときは joyo.jinmei_variants を使ってください。
エラー
うまくいかないときは、HTTPの状態コードと、次の形の JSON を返します。code は固定の値なので、プログラムで見分けるときはこれを使ってください(message は説明文で、言い回しが変わることがあります)。
{"error":{"status":404,"code":"kanji_not_found","message":"この字は常用漢字にも人名用漢字にもありません。調べられるのは、常用漢字2136字と人名用漢字864字です。"}}
| 状態 | code | いつ |
|---|---|---|
| 400 | invalid_kanji | 漢字1字になっていない(2字以上・ひらがな・.json が無いなど)。例: /kanji/v1/%E6%BC%A2%E5%AD%97.json(漢字) |
| 404 | kanji_not_found | 漢字1字だが、常用漢字にも人名用漢字にも無い。例: /kanji/v1/%E9%AE%83.json(鮃) |
| 404 | not_found | URLが違う(学年が1〜6以外など) |
| 405 | method_not_allowed | GET / HEAD 以外で呼んだ |
通信できない・サーバーが止まっているときは、JSON が返らないことがあります。fetch の失敗(例外)も受け止めてください。
データの更新・キャッシュ・呼び出し回数
- 作り方: 告示・法令の表から前もって作った静的なファイルを返します。サーバーで組み立ててはいません。
- 中身が変わるとき: 常用漢字表・学年別漢字配当表の改定や、人名用漢字の追加(戸籍法施行規則の改正)があったときと、誤りを直したときだけです。人名用漢字は、裁判で認められた字がときどき追加されます(直近は2017年の「渾」と2026年の「勒」)。
- データの版(
data_version): 元の表が変わった日付です(例:"2026-11-04")。/kanji/v1/meta.jsonには出典と件数も入っています。 - キャッシュ: 応答は1日(エラーは1時間)キャッシュしてかまいません。中身はめったに変わらないので、アプリの中に長く持っておいてもかまいません。
ETag/Last-Modifiedに対応しているので、変わっていなければ 304 が返ります。 - 呼び出し回数の目安: 決まった上限はありませんが、1つの利用元から1秒あたり10回程度までにしてください。たくさんの字を扱うときは、1字ずつ呼ばずに一覧(
joyo.json・jinmei.json・grade/{1〜6}.json)を一度取って使い回してください。
変更の方針と更新履歴
- v1 の中では、項目を足すことはあっても、今ある項目の名前や意味は変えません。知らない項目が増えていても無視するように作ってください。
- 人名用漢字の追加や誤りの修正は、同じ v1 のまま値を直します。そのときはこのページの更新履歴でお知らせします。
- 互換性のない変更は、URLの版を分けて(
/kanji/v2/など)行います。v1 を終わらせるときは、できるかぎり6か月以上前にこのページでお知らせします。 - 提供条件(無料・登録不要・アクセス回数の上限など)は、利用状況に応じて変えることがあります(利用規約第4条)。
更新履歴
- 2026年11月
- 公開。人名用漢字は令和8年法務省令第43号(2026年6月26日施行・「勒」の追加)まで反映。
機械で読める仕様(型定義・OpenAPI)
- TypeScript の型定義:
/kanji/types.d.ts - OpenAPI 3.1:
/kanji/openapi.json(コード生成やテストに使えます)
用語の説明
用語の説明を開く(12語)
- API
- プログラムから呼び出して使う窓口のことです。このAPIは、URLを開くと結果がデータ(JSON)で返ります。
- JSON
- プログラムで扱いやすいデータの書き方です。JavaScript ではそのままオブジェクトとして使えます。
- CORS対応
- ほかのサイト(あなたのサイト)のページのJavaScriptから、このAPIを直接呼び出せるという意味です。
- URLエンコード
- URLに入れられない文字(漢字など)を、
%E6%BC%A2のような形に置き換えることです。 - 常用漢字
- 一般の社会生活で漢字を使うときの目安として、常用漢字表(平成22年内閣告示)に掲げられた2136字です。
- 音訓
- 字の読み方です。中国から伝わった読み(音。片仮名で書く)と、意味に当てた日本語の読み(訓。平仮名で書く)があります。
- 学年別漢字配当表
- 小学校の各学年で習う漢字を定めた表です(小学校学習指導要領の別表)。令和2年度からは1026字です。
- 人名用漢字
- 常用漢字のほかに、子の名前に使える漢字です。戸籍法施行規則の別表に掲げられています。
- 表(一)・表(二)
- 人名用漢字の表の2つの部分です。表(一)は常用漢字に無い字、表(二)は常用漢字の異体字(旧字体など)で、括弧内に対応する常用漢字が添えてあります。
- 康熙字典体(旧字体)
- 清の時代の字典『康熙字典』に基づく字体で、明治以来の活字とのつながりを示すため、常用漢字表で括弧に入れて添えられています。
- 許容字体
- 常用漢字表で、角括弧に入れて「使ってもよい」とされている字体です。しんにゅうが1点の「辶」や、しょくへんの「飠」の形(5字)です。
- 互換漢字
- 見た目は同じでも、ほかの規格との対応のために別の文字コードを持つ漢字です(例: 祐 U+7950 と 祐 U+FA4F)。
よくある質問
本当に無料ですか?登録は必要ですか?
現在は無料で、登録やAPIキーも要りません。個人・法人、営利・非営利を問わず使えます。ただし利用状況に応じて提供条件を変えることがあり、そのときはできるかぎりこのページでお知らせします。
画数は取れますか?
取れません。画数を定めた公的な表が無く、同じ字でも辞書によって数え方が違うため、入れていません(画数を入れていない理由)。
このAPIで「使える」と出た字なら、必ず名前に付けられますか?
字が戸籍法施行規則の範囲に入っているかどうかの目安です。名前の読み方の決まりや字形の細かな違いなど、最終的な判断は出生届を出す市区町村が行います。
旧字体(亞・惡など)は調べられますか?
人名用漢字の表(二)に入っている旧字体(212字)は調べられ、対応する常用漢字も返します。表(二)に無い旧字体は404になります。常用漢字の側の kyujitai には、常用漢字表の括弧内の字(いわゆる康熙字典体)が入っています。
熟語の読み(ふりがな)は取れますか?
取れません。返すのは1字ごとの音訓(常用漢字表の音訓)です。熟語の読みは字の音訓の組み合わせで決まらないことが多いため、ふりがなを振る字を見つける用途などにお使いください。
アクセス数に上限はありますか?
決まった上限はありませんが、目安として1つの利用元から1秒あたり10回程度までにしてください。たくさんの字を扱うときは、一覧(joyo.json・jinmei.json・学年ごとのファイル)を一度取って使い回してください。
ご利用にあたって
ご利用の前に利用規約をご確認ください。データの正確さや、止まらないことは保証していません。公式の表を確かめたいときは、文化庁の常用漢字表、法務省の人名用漢字の案内のページをご覧ください。ご質問・不具合のご連絡は、シルギアのお問い合わせ窓口から、件名に「API」と入れてお送りください。