Base64urlエンコード・デコード
「hello world」はBase64urlでaGVsbG8gd29ybGQになります。RFC 4648の5節で定められたURLセーフな形式で、+と/の代わりに-と_を使い、「=」の埋め文字も付けないため、トークンがリンクの中でもそのまま届きます。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- テキスト
- hello world
- 計算モード
- Encode
- 結果
- aGVsbG8gd29ybGQ
- エンコーディング
- base64url
- 入力バイト数
- 11
- 出力バイト数
- 15
このBase64urlエンコードツールは、RFC 4648セクション5のアルファベットを用いて、平文をURLセーフなBase64に変換し、Base64url文字列をUTF-8テキストに復号します。エンジンは完全に決定的です。同じ入力とモードは常に同じ結果を生み、ネットワーク通信もランダムなソルトも日付依存の近道もありません。よくある検証例として、hello worldのエンコードはaGVsbG8gd29ybGQになり、その文字列のデコードは元のフレーズに戻ります。
Base64urlとは何か、そしてこのツールが返す内容
Base64urlは、RFC 4648セクション5で定義された古典的なBase64のURLセーフな兄弟版です。
どちらの方式も、入力の3バイトごとを64文字のアルファベットから成る4つの6ビットシンボルにマッピングしますが、Base64urlはプラス記号とスラッシュ記号をマイナス記号とアンダースコアに置き換え、バイト長が3の倍数でないときに標準のBase64が追加するイコール記号のパディングを省略します。
このわずかなアルファベットの変更こそ、IDトークン、OAuthのstateパラメータ、署名付きクッキーのフラグメント、コンテンツのハッシュが、パーセントエンコーディングなしにURLやHTML属性の中をきれいに移動できる理由です。このページは常にそのパディングなしURLセーフなアルファベットを使います。
エンコードモードはテキストをUTF-8エンコードしてバイトを詰め込み、AからZ、aからz、0から9、マイナス記号、アンダースコアのみを返します。デコードモードはその処理を逆にし、標準のBase64文字、空白、不完全な最後の量子を拒否します。ストリーミング経路も、古典的なアルファベットへのサイレントなフォールバックもありません。
テキストとモードの読み取り方法と結果を再現可能に保つ仕組み
modeは既定でencodeとなり、decodeを明示的に受け付けます。op、direction、actionといった別名は、すでにそれらの名前を使っているスクリプトのために同じスイッチにマッピングされます。
エンコードは任意のUnicode文字列を受け付け、プラットフォームのTextEncoderでUTF-8バイトに変換した上で、パディングなしのBase64urlを出力します。デコードは純粋なBase64url文字列を要求します。
長さを4で割った余りが1の場合、バイト数の整数を表現できないため拒否され、URLセーフなアルファベット外の文字は、標準のBase64のプラス記号、スラッシュ、イコール記号が現れたときにそれを指し示す明確なメッセージとともに失敗します。バイトが復元された後、致命的なUTF-8デコードにより、バイナリのごみが文字化けしたテキストにならないことが保証されます。
Base64urlがリンクやトークンで役立つ場面
開発者は、JWTのセグメントを調べるとき、OAuthのstateやnonceの値を作成するとき、小さなバイナリセーフなクレームをクエリパラメータに埋め込むとき、あるいはテキストのみの設定ファイルに不透明な識別子を保存するときにBase64urlに出会います。
フロントエンドチームは、誤ってプラス記号やスラッシュを再導入してしまう場当たり的なスクリプトにデータを貼り付けることなく、統合デバッグ中にURLセーフなトークンをデコードします。バックエンドサービスは、標準のBase64だと壊れてしまうリダイレクトURLに入れる前に、設定のスニペットや短いバイナリダイジェストをエンコードします。
品質エンジニアは、Base64url対応を主張するミドルウェアがアルファベットをサイレントに切り替えられないよう、契約テストのために決定的なエンコード・デコードのペアを生成します。教育者は、MIMEのBase64と、現代の認証スタックが標準としているURLセーフなバリアントの違いを教えるときに同じツールを使います。
このページでの計算はすべてブラウザ内で完結します。
活用例
JWTとOAuthトークンの練習
標準のBase64のパディングや+/文字なしに、JWT、OAuthのstate、nonceの値で使われるURLセーフなセグメントをエンコード・デコードします。
よくある質問
Base64urlは標準のBase64とどう違いますか?
Base64urlは+と/の代わりに-と_を使い、このツールは=のパディングを出力も受け付けもしません。+、/、=を含む標準のBase64はデコード時に拒否されます。
+や=を含む標準のBase64を貼り付けるとどうなりますか?
+を-に、/を_に置き換え、パディングを取り除くか、代わりに標準のBase64ツールをご利用ください。
結果は決定的ですか?
はい。 同じテキストとモードは、ネットワーク、乱数、日付依存の挙動なしに常に同じ結果を生みます。
Base64urlの結果の末尾に「=」が付かないのはなぜですか?
Base64urlは標準のBase64が付ける埋め文字を省くためです。「hello world」は後ろに何も付かないaGVsbG8gd29ybGQになります。デコード時、4文字の組で1文字だけ余る長さは、バイトにならないため拒否されます。
JWTの一部分をこのツールでデコードできますか?
できます。JWTの各部分はBase64urlなので、区切りの点を除いて1つずつ貼り付け、デコードを選ぶとテキストが読めます。点や+は字母にないため受け付けません。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/enc/base64url \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"hello world"}'const res = await fetch("https://api.kit.forhosting.com/enc/base64url", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "hello world"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/base64url",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "hello world"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/base64url", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"hello world"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"hello world"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/base64url", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"text": "hello world"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.base64url",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
標準のBase64とは異なり、出力にプラス記号やスラッシュが含まれることは決してなく、イコール記号のパディングで終わることもないため、トークンは追加のエスケープなしにクエリ文字列、パスセグメント、JSONを生き延びます。メッセージ、クレームセット、設定文字列をコンパクトなBase64urlペイロードに変換するにはエンコードを、すでに保持しているURLセーフなトークンから元のテキストを復元するにはデコードを選んでください。JWTの練習、OAuthのstate値、APIフィクスチャにはブラウザで無料にご利用いただき、パイプラインがCIやバックエンドサービスで再現可能なBase64urlの変換を必要とする場合は、成功したリクエストごとに$0.002のAPIをご利用ください。
Base64urlとは何か、そしてこのツールが返す内容
JSONレスポンスには、変換された文字列を表すresult、encodeまたはdecodeをエコーするmode、base64urlに固定されたencoding、テストでサイズをアサートできるようinput_bytesとoutput_bytesが含まれます。文字列が有効なBase64urlテキストであるか、そうでなければinvalid_inputでリクエストが失敗するかのいずれかです。プラス記号とスラッシュを持つパディング付きの標準Base64が必要な場合は専用の標準Base64エンドポイントをご利用ください。このランディングページは、JWTや多くの現代的なAPIがすでに想定しているURLセーフでパディングなしの契約専用です。
テキストとモードの読み取り方法と結果を再現可能に保つ仕組み
優先されるペイロードフィールドはtextで、input、value、sといった別名を受け付けるため、フォーム、クエリ文字列、SDKクライアントは列名を変えずに同じ契約を再利用できます。自動化されたパイプライン内でBase64urlのテーブルを自前で再実装することなく同一の数学的結果が必要な場合は、このページの無料ブラウザ実行と有料APIを組み合わせてご利用ください。無効な入力はinvalid_inputを返し課金されないため、検証は安価なままであり、成功した変換は固定の項目価格のままです。
Base64urlがトークン・API・テストフィクスチャで役立つ場面
API経由では成功した検索1件につき$0.002がかかり、検証に失敗したリクエストは課金されず、レスポンスが返された後は何も保存されません。この無料のインタラクティブな探索と、同一結果を返す有料APIという分割は、KITのtier-Aカタログの他のツールと同様であり、教室でのデモから自動化パイプラインへ、エンコードされた結果を変えることなく移行できます。関連する暗号系のステップが必要なときはJWTやハッシュのヘルパーと、無料で決定的なテキストツールの小さなラボを構築する際は他の符号化系エンドポイントと組み合わせてご利用ください。
連携の活用例
クエリ文字列セーフなペイロード
短いテキストをBase64urlに変換し、パーセントエンコーディングの思わぬ落とし穴なしにクエリパラメータやパスセグメントを生き延びさせます。
決定的なCIフィクスチャ
サービスをまたいで、ユニットテスト、ゴールデンファイル、契約チェック向けに再現可能なBase64url文字列を生成できます。
技術的な質問
Base64urlエンコードツールの料金はいくらですか?
このページのブラウザ版は無料です。API経由では成功したリクエストごとに$0.002がかかり、無効な入力には課金されません。
どのモードに対応していますか?
mode=encode(既定)は平文をBase64urlに変換します。mode=decodeはBase64url文字列をUTF-8テキストに戻します。