IMEIチェックディジット
14桁の49015420323751のチェックディジットは8で、完全なIMEIは490154203237518になります。ラベルやデータベース用に端末番号を完成させたり、お客様から届いた15桁のIMEIを保存前に確認したりできます。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- 数
- 49015420323751
- 計算モード
- Compute
- 入力
- 49015420323751
- チェックディジット
- 8
- チェックディジット付き
- 490154203237518
すべての携帯電話と多くのセルラーモジュールには、15桁の国際移動体装置識別番号(IMEI)が付与されています。先頭14桁は型式割当コードとシリアルを示し、15桁目はLuhnチェックディジットで、1桁の入力ミスや隣接桁の入れ替えの多くを、番号の保存・箱への印字・通信事業者ポータルへの送信前に検出します。本機能はIMEI専用の標準Luhn規則のみを実装します。validateモードは完全な15桁IMEIを受け取り、末尾桁が再計算した期待値と一致するかを報告します。
IMEIのLuhnチェックディジットの計算方法
IMEIはGSM・UMTS・LTE・5G機器で使われる3GPP番号計画のもと、常に15桁の十進数字です。先頭8桁が型式割当コード(TAC)、続く6桁がそのTAC内のメーカーシリアル、15桁目がチェックディジットです。2倍した結果が9を超える場合は9を引きます(積の十の位と一の位を足すのと同等)。
14個の加重値をすべて加算し、チェックディジットは (10 − (合計 modulo 10)) modulo 10 とし、完成した15桁のLuhn合計が10で割り切れるようにします。検証は先頭14文字から期待桁を再計算して15桁目と比較するもので、15桁全体にLuhn合計を取るのと同じです。
アルゴリズムは決定的でローカルであり、TACレジストリ呼び出し・時計・乱数はありません。本ツールはTACをブランド名に展開せず、MEIDの16進形式も扱わず、所有権やブラックリスト状態も証明しません。IMEI Luhn規則のもとで数字列が整形式であることだけを示します。
一般的なカードLuhn検証と比べ、ここでの検索意図は狭いです。
入力契約、モード、エラー時の振る舞い
computeモードが既定です。桁数不一致はモードと送信桁数を明示するエラーです(computeは14、validateは15)。クライアントフォームは推測せず「14桁が必要」と表示できます。
空文字・number欠落・無効なmodeはLuhn合計の前に失敗し、課金されません。ラベルやDB向けに端末番号を生成・完成させるときはcompute、ユーザー・パートナーCSV・スキャナからの完全IMEIで照会・交換・取込をゲートするときはvalidateを選んでください。形が不正で拒否される検証タスクは課金されません。
15桁として整形式でもチェックディジットだけが違う場合は例外を投げず valid false を返します。
IMEIチェックディジットが実際の業務で活きる場面
端末メーカーとODMは内部の14桁シリアルを受け取り、箱・SIMトレイ・規制ラベルにIMEIを印字する前に公式のLuhnチェックディジットを付与する必要があります。通信事業者やMVNOのポータルはアクティベーション時に15桁IMEIを検証し、1回の桁入れ替えで幽霊端末やプロビジョニング失敗が起きないようにします。
資産管理とMDMはCSVエクスポートの各IMEI列を走査し、validateモードを呼び、valid が false の行を隔離します。人手編集とジェネレータのオフバイワンの両方を拾えます。どの業務でも契約は同じです。
IMEI検査通過を本物・SIMロック解除・事業者ブラックリスト外の証明とみなさないでください。
活用例
端末在庫のIMEI列を監査する
MDM・ERP・RMAのCSVにある15桁IMEIを一括検証し、チェックディジットが再計算した期待値と一致しなくなった行を隔離します。
よくある質問
IMEIチェックディジットとは何ですか?
IMEIの15桁目であり、先頭14桁に対するLuhnアルゴリズムで求められ、手入力やスキャンの1桁ミスを保存・印字前に多く検出します。
IMEIの各桁は何を表していますか?
最初の8桁は型式割当コード(TAC)、続く6桁はそのコード内でのメーカーのシリアル番号、15桁目は残りの14桁から計算されるチェックディジットです。
チェックディジットはどう計算しますか?
14桁を右から見て、いちばん右の桁から1つおきに2倍し、9を超えたら9を引きます。すべてを合計し、10からその合計を10で割った余りを引いた数がチェックディジットで、10の場合は0です。
正しいIMEIなら端末は登録済みやロック解除済みですか?
いいえ。チェックディジットが合っていても、15桁が矛盾なく入力されていると分かるだけです。メーカーの名簿などは照会しないため、登録やロック解除の状態は分かりません。
チェックディジットでどんな誤りが見つかりますか?
1桁だけの打ち間違いはすべて、隣り合う2桁の入れ替わりも大半を見つけられます。番号を保存したり箱に印刷したり、通信会社の窓口に送ったりする前に誤りに気づけます。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/enc/imei \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"number":"49015420323751"}'const res = await fetch("https://api.kit.forhosting.com/enc/imei", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"number": "49015420323751"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/imei",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"number": "49015420323751"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/imei", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"number":"49015420323751"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"number":"49015420323751"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/imei", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"number": "49015420323751"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.imei",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
computeモードはちょうど14桁のペイロードを受け取り、チェックディジットと完全な15桁文字列を返します。非数値入力や桁数不一致は黙って切り詰めず invalid_input で失敗するため、中途半端に整形した識別子を残しません。同じ純粋な算術がブラウザでは無料、公開API価格でも動き、メーカーDBへのネットワーク照会はなく、チェックサムが通っただけで登録済みやSIMロック解除済みとは主張しません。
IMEIのLuhnチェックディジットの計算方法
計算するには14桁のペイロードを取り、右からLuhnアルゴリズムを適用します。チェックディジットが右から1番目になるとき、ペイロード右端は右から2番目の位置にあるため、ペイロード右端から始めて1つおきに2倍します。14桁ペイロード用のIMEIチェックディジット計算や15桁モバイルIMEI検査を求める人向けであり、決済カード用ツールではありません。
入力契約、モード、エラー時の振る舞い
numberフィールドには0から9の文字だけを送ってください。空白・ハイフン・文字・小数点は非数値として invalid_input で拒否され、黙って切り詰めた値が保存に届きません。エンジンはちょうど14桁を要求し、check_digit を1文字の文字列で、with_check を印刷や永続化できる15桁IMEIとして返します。validateモードはちょうど15桁を要求し、末尾桁が再計算した expected_check_digit と一致すれば valid は true となり、常に payload(先頭14桁)、check_digit、expected_check_digit、length 15 を含みます。digits・imei・code などのエイリアスも同じペイロード欄として受け付けるため、「imei」と呼ぶ既存連携の改名は不要です。時計・乱数・ネットワークのない純粋なparse経路のため、同一のJSON本体は無料ブラウザと成功リクエストあたり $0.002 のAPIで常に同じJSON結果になります。
IMEIチェックディジットが実際の業務で活きる場面
修理店とRMA窓口は、顧客が電話で番号を読み上げるときに expected_check_digit を再計算し、誤った端末へのチケット発行前に誤入力を捕まえます。統合テストは 490154203237518 のような既知フィクスチャで with_check を固定し、バーコードライブラリ・ラベルプリンタ・本APIのずれを防ぎます。モバイル機器識別の標準重みのもとでLuhn桁がペイロードと一致することだけを示します。
連携の活用例
ラベル用に14桁の端末番号を完成させる
14桁のペイロードでcomputeモードを呼び、with_check を保存し、包装・SIMトレイ・規制ラベルに15桁IMEIを印字します。
入力時に手入力・スキャンしたIMEIを検証する
フォーム・スキャナ・パートナーファイルが15桁を送ったらvalidateモードを呼び、valid が false のとき照会を止め、expected_check_digit を示して1桁の誤入力修正を助けます。
技術的な質問
このAPIでIMEIチェックディジットを計算するには?
number をちょうど14桁にし mode compute(または mode 省略)でPOSTします。応答に check_digit と with_check(完全な15桁IMEI)が含まれます。
完全な15桁IMEIを検証するには?
15桁の文字列と mode validate でPOSTします。応答に valid、check_digit、expected_check_digit、payload(末尾以外の桁)が含まれます。
桁数違い・文字・ハイフンではどうなりますか?
非数値入力、および compute で14以外・validate で15以外の桁数は invalid_input で拒否されます。失敗した検証タスクは課金されません。
IMEIチェックディジットツールは無料ですか?
ブラウザツールは無料でローカル実行です。API呼び出しは公開された基本価格 $0.002 の前払いKIT残高を使い、無効入力は課金されません。