相対輝度計算ツール
WCAGの式で色の明るさを測ります。中間グレーの#808080は0.215860500114で、黒が0、白が1の尺度で表されます。RGBの各チャンネルと線形化した値も表示されるので、数値を確かめられます。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- 色
- #808080
- 相対輝度
- 0.2158605001
相対輝度計算ツールは、sRGBの16進カラーをWCAGのコントラスト計算で使う光の尺度へ変換します。必要に応じて短縮表記を展開し、各桁を検証して赤・緑・青のチャンネルを正規化します。さらに標準の区分式でsRGBガンマを除去し、線形値を公式係数で合成します。結果は黒の0から白の1までです。正規化済みの16進値、整数のRGBチャンネル、3つの線形化チャンネルも返すため、すべての工程を確認して再現できます。
正確なsRGBカラーを入力してください
先頭の番号記号の有無を問わず、3桁または6桁の16進数で色を指定してください。たとえば#09Cは計算前に#0099CCへ展開され、4A90D9は受理されて#4A90D9に正規化されます。本ツールが受け付けるのは、この明確なsRGBの16進形式だけです。
色名を推測したり、CSS関数を解析したり、アルファ値を破棄したり、不正なチャンネル値を黙って範囲内へ丸めたりはしません。この厳密な境界により、自動化されたデザインシステム、アクセシビリティ検査、ビルドスクリプト、テストデータで信頼できる検証が可能です。不正なデータには、もっともらしい誤値ではなく入力エラーを返します。
英字の大小は計算に影響せず、前後の空白は除去しますが、内部の空白、余分な桁、未対応の記号、空値は拒否します。返されるRGBオブジェクトには0から255までの整数チャンネルが入り、元の文字列がどのように解釈されたかをすぐ確認できます。短縮表記と完全表記が混在していても、ログ、スナップショット、後続計算に統一表現が必要な場合に便利です。
WCAGの計算方法をご確認ください
相対輝度は赤・緑・青の単純平均ではなく、HSLの明度成分とも異なります。まず8ビットの各sRGBチャンネルを255で割ります。正規化した値が0.04045以下なら12.92で割り、それより大きければ((チャンネル + 0.055) / 1.055)を2.4乗します。
これによりsRGBの伝達曲線を取り除き、線形光のチャンネル値を得ます。続いて標準係数を適用します。赤は0.2126、緑は0.7152、青は0.0722です。
人の視覚は緑への感度が高いため緑の重みが最大で、青は最小です。重み付き合計が相対輝度となり、黒の0から白の1までに収まります。すべての演算と係数が固定されているため、同じ有効な入力からは、ネットワーク、保存状態、モデル推論を使わず常に同じ結果が得られます。
アクセシビリティ工程でご利用ください
1つの相対輝度値が表すのは1色だけであり、それだけで文字がアクセシブルだとは判定できません。コントラストを評価するには、前景色と背景色の輝度を計算し、明るい値をL1、暗い値をL2として、(L1 + 0.05) / (L2 + 0.05)を使用します。その比率を、コンテンツ、文字サイズ、目標適合レベルに対応するWCAGしきい値と比較してください。
輝度を独立した機能として扱うと、独自のコントラスト方針を持つパイプライン、正規化した測定値の保存、中間値を確認するデバッグで役立ちます。透明度がある場合は、実際の背景に合成してから計算してください。アルファ付き16進値は背景なしでは輝度が定まらないため拒否されます。
活用例
デザイントークンを検査する
プロジェクトのコントラスト方針を適用する前に、不透明な各sRGBカラートークンの相対輝度を計算して保存します。
コントラスト計算を調査する
正規化RGBと線形光チャンネルを確認し、別実装の解析ミスやガンマ補正ミスを特定します。
アクセシビリティ試験を作成する
自動WCAGコントラスト検証で使う前景色と背景色について、決定論的な輝度値を生成します。
よくある質問
相対輝度の範囲はいくつですか?
sRGBの黒を0、白を1として、両端を含む範囲の結果を返します。
どのカラーフォーマットに対応していますか?
先頭の#の有無を問わず、3桁または6桁のsRGB 16進カラーに対応します。色名、RGB関数、アルファ値は拒否します。
相対輝度はHSLの明度と同じですか?
いいえ。 WCAG相対輝度はsRGBチャンネルを線形化して重み付けしますが、HSLの明度は別の幾何学的定義を使います。
この値だけでWCAG適合を証明できますか?
いいえ。 適合判定には2色のコントラスト比と、コンテンツおよび目標レベルに適したしきい値が必要です。
中間グレーの#808080がなぜ半分よりかなり低いのですか?
先にsRGBのガンマカーブを取り除くためです。128の各チャンネルは線形の光で0.215860500114になり、赤・緑・青が等しいので、その値がそのまま相対輝度になります。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/color/relative-luminance \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"color":"#4A90D9"}'const res = await fetch("https://api.kit.forhosting.com/color/relative-luminance", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"color": "#4A90D9"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/color/relative-luminance",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"color": "#4A90D9"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/color/relative-luminance", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"color":"#4A90D9"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"color":"#4A90D9"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/color/relative-luminance", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"color": "#4A90D9"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "color.relative_luminance",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
WCAGの計算方法をご確認ください
安定したJSONを得ながら実用上のアクセシビリティ判定を変えないよう、線形チャンネルと最終値は小数第12位までに丸めます。
アクセシビリティ工程でご利用ください
APIは1項目あたり$0.002で、ブラウザーでは同じ決定論的な計算を無料ですぐに実行できます。
技術的な質問
APIの料金はいくらですか?
1項目あたり$0.002です。ブラウザーでは無料でも計算できます。