短縮hex展開
省略形をブラウザが使う長い形に直します。各桁を二回重ねるので#f0aは#ff00aaになり、大文字の#FF00AAと、チャンネル値255、0、170も得られます。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- Hex
- #f0a
- Hex
- #ff00aa
- # なしの Hex
- ff00aa
- 大文字
- #FF00AA
- 短縮形
- #f0a
CSSやデザインツールでは、完全な6桁の#ff00aaではなく、#f0aのような3桁の短縮表記で色を書くことがよくあります。ブラウザは各16進桁を倍にして各チャネルを1バイトにすることで、その短縮形を展開します。この短縮hexカラー展開ツールは、先頭のハッシュの有無を問わず3桁コードを受け取り、各文字が16進桁であることを検証し、決定的な6桁展開と対応する赤・緑・青のチャネル整数を返します。フロントエンド開発者は、デザイントークンが短いコードで届き、スタイルシートやスナップショット、デザインシステムが長い形式を必要とするときに使います。学生やQAスクリプトは、手書きのパレットがCSS Color Moduleの規則とバイト単位で一致するか確認するために使います。
3桁短縮の意味と展開の仕組み
CSSでは、任意のハッシュの後に3桁で16進カラーを書けます。赤・緑・青にそれぞれ1ニブルです。公式の展開規則は単純かつ絶対で、各桁を一度繰り返して3文字を6文字にします。
例えば#abcは#aabbccに、#f0aは#ff00aaに、#000は6つのゼロに展開されます。これはヒューリスティックでも知覚的な近似でもなく、ブラウザがスタイルシートを解析するときに適用するのと同じ写像です。この計算機はその写像をそのまま符号化します。
3桁の短縮形を渡すと、エンジンは安定した正規形のために桁を小文字化し、各ニブルを倍にし、ハッシュ付きの完全な文字列、ハッシュなしの6桁、大文字A–Fを好むスタイルガイド向けの大文字形、ハッシュあり・なしの正規化3桁短縮、入力に先頭ハッシュがあったかを示す真偽値、および0から255の整数チャネルr・g・bを返し、同じ色を2回目の変換なしでRGBツールに渡せます。
第4チャネルを作ったり、アルファを保持したり、0x接頭辞を有効なCSSカラーとして扱う経路はありません。すでに6桁がありチャネル番号だけが必要なときは専用のhex→RGBや多形式変換を使い、入力が意図的に短く、明確な検証契約のもとで長形式を得ることが仕事のときはこのページを使ってください。
短縮hex展開が役立つ場面
デザインシステムは、古いスタイルガイドやFigmaプラグイン、手書きメモからブランド色を3桁コードで受け取ることが多い一方、現代のトークンパイプラインとCSSカスタムプロパティは、grepやスナップショット差分、1対1のチャネル対応のために6桁ハッシュを好みます。
境界で一度だけ短縮形を展開すれば、各チームが倍加規則を微妙に違う実装をするのを避け、下流のすべての消費者が長形式を共有できます。Web開発の教材は入力しやすい3桁色を早期に紹介し、その後に展開を説明させます。決定的なツールがあれば、#fffが白であること、#f0aが欠けた桁を捏造したものと同じではないことを示せます。
QAやアクセシビリティのパイプラインは色を混在形式で保存することがあり、コントラスト検査の前に短いコードを6桁へ正規化すれば、一方が短縮形でもう一方が長形式のときの誤不一致を避けられます。
他の色空間が必要なときはRGBやHSL変換と組み合わせ、すでに長いコードや不正文字を推測せず拒否する厳しい検証契約のもとで3桁から6桁だけが仕事のときは、このページに集中してください。
活用例
デザイントークンとCSS正規化
ブランドの#RGB短縮形を、テーマファイル、カスタムプロパティ、デザインシステムのトークンパイプライン向けの#RRGGBB文字列に変換します。
決定的なCIフィクスチャ
単体テストとスナップショット基準線に展開済みhex結果を固定し、短いパレットコードが環境間でずれないようにします。
授業と宿題の確認
CSSのニブル倍加規則を学生に示し、不透明な計算機アプリなしで手展開した色を検証します。
よくある質問
#RGBはどのように#RRGGBBへ展開されますか?
3つの16進桁がそれぞれ倍になります。#abcは#aabbccに、#f0aは#ff00aaになります。これはCSSブラウザが短縮色に使うのと同じ規則です。
6桁hexを入力として受け付けますか?
いいえ。 このツールは3桁の短縮形のみを展開します。長形式からチャネルが必要なときはhex→RGBツールを使ってください。
どの文字が許可されますか?
任意の先頭#に加え、ちょうど3つの16進桁0–9とA–F/a-fのみです。空白、0x接頭辞、空文字列、非hex文字は拒否されます。
#f0aを六桁にするとどうなりますか?
#ff00aaになります。三つの桁をそれぞれ二回書き、fはff、0は00、aはaaとなります。赤は255、緑は0、青は170です。
先頭の#は入力が必要ですか?
必要ありません。#f0aでもf0aでも結果は同じです。入力に#が付いていたかどうかも結果に記録されます。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/color/hex3-hex6 \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"hex":"#f0a"}'const res = await fetch("https://api.kit.forhosting.com/color/hex3-hex6", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"hex": "#f0a"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/color/hex3-hex6",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"hex": "#f0a"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/color/hex3-hex6", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"hex":"#f0a"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"hex":"#f0a"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/color/hex3-hex6", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"hex": "#f0a"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "color.hex3_hex6",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
エンジンはネットワークを呼ばず、乱数を使わず、時計にも依存しないため、無料のブラウザ実行と成功リクエストあたり$0.002のAPI呼び出しは、常に同じ#RRGGBB文字列で一致します。
3桁短縮の意味と展開の仕組み
すでに展開済みの6桁コードを含む誤った長さは、黙って通さずinvalid_inputで拒否します。このページの検索意図は展開そのものであり、多形式の色往復ではありません。
入力契約、検証、再現可能な出力形
値は文字列である必要があります。外側の空白は取り除かれます。任意のハッシュの後、本体は0–9とA–F(大文字小文字いずれか)からちょうど3文字でなければなりません。本体内の空白、空の本体、4桁や8桁の形、16進以外の文字は検証に失敗します。推奨フィールド名はhexですが、フォームやクエリ文字列、表計算が列名を変えずに同じ契約を使えるよう、color・value・text・input・code・shorthandの別名も受け付けます。先頭ゼロや桁長がカラーコードでは重要で、JSONの数値ではその詳細を保てないため、裸の数値は拒否されます。先頭の単一ハッシュは任意でhad_hashに記録され、0xや0Xの接頭辞はCSS短縮ではなく明確なメッセージで失敗します。成功時の応答には、主展開値としての小文字ハッシュ付きhex、裸の桁を保存するトークン向けのhex_no_hash、大文字規約向けのuppercase、正規化3桁入力のshorthandとshorthand_no_hash、展開ペアから導いたチャネル整数r・g・b、メソッドタグhex3_to_hex6、各ニブルdがd dになることを述べる短い式文字列が常に含まれます。検証失敗は課金されず、成功したAPI呼び出しは公開されている基本料金がかかります。
短縮hex展開が役立つ場面
実装は純粋なparseのティアAなので、成功呼び出しはモデルトークンも外向きネットワークもなく$0.002で、無効入力は残高を消費せず、応答後に何も保存しません。
技術的な質問
先頭の#は必須ですか?
いいえ。#f0aとf0aの両方を受け付けます。応答のhad_hashで入力にハッシュがあったかが分かり、hexは常にハッシュ付き6桁文字列を返します。
短縮hexカラー展開の料金は?
ブラウザツールは無料です。APIリクエストは成功呼び出しあたり$0.002の前払いKIT残高を使い、無効入力は課金されません。