Base64 文字列のデコード方法(および JWT ペイロード)
Base64 は可逆エンコーディングであり、暗号化ではありません。1 ステップでデコードし、Unicode を正しく扱い、Base64url を使う JWT セクションを読み取ります。
Base64 とは結局なに
Base64 はバイナリデータを 64 個の印字可能な ASCII 文字に対応づけます。鍵を使わずに完全に可逆なので、暗号化ではなくエンコードです —— 秘密を「隠す」用途には絶対に使わないでください。
エンコードとデコード
ブラウザでは btoa でエンコード、atob でデコードします。非 ASCII テキストの場合は UTF-8 を経由してラウンドトリップしてください。そうしないと é・ü・你 のような文字が壊れたバイト列になります。
JWT を読む
JWT はピリオドで連結された 3 つの Base64url セクション(header、payload、signature)から成ります。前者の 2 つをデコードすれば claim を読めます。signature はバイナリで、人間が読むことを想定したものではありません。
Base64 と Base64url の違い
標準の Base64 は + と /、そして = によるパディングを使います。URL セーフな Base64url はそれを - と _ に置き換え、パディングを省くので、その値を URL や JWT の中に安全に入れられます。
デコードは検証ではない
JWT をデコードすると claim は見えますが、真正性は何も保証しません。誰でも payload に "role":"admin" と書かれた token を偽造できます。token が本物だと示せるのは発行者の鍵で検証された署名だけです。未検証の token に基づいて信頼判断を下してはいけません。
よくある JWT クレームとその意味
iss は発行者、sub は主体(ユーザー ID)、aud は想定オーディエンス、exp は有効期限(Unix 秒)、iat は発行時刻、nbf は「not before」、jti は一意な ID です。カスタム claim はこれらと並びます。exp と aud は必ずクライアントだけでなくサーバー側でも検証してください。
パディングと URL セーフ版
Base64url はしばしば = パディングなしで届きます。コードでデコードするときは、= を足して長さを 4 の倍数にしたうえで、- を +、_ を / に戻してから、通常の Base64 デコーダにかけます。ブラウザの atob は Base64url を直接受け取れないので、その変換を先に済ませる必要があります。
JSON 修復ガイド
トピックハブ
- JSON Parse Errors: Read the Message, Jump to the Fix
- Fix Invalid JSON: From 'What's Wrong' to a Clean File
- JSON Formatter, Validator, Viewer: Pick the Right Tool
- Repair LLM JSON Output: Handling Almost-JSON from AI
- Privacy: JSON Tools That Don't Leave Your Browser
- JSON Interop: YAML, CSV, XML, JWT, Schema
個別ガイド
- URL エ ンコーディング:クエリパラメータとパスをパーセントエンコードする
- YAML を JSON に変換(インデントエラーを避ける)
- JSON を CSV に変換:オブジェクト配列をフラット化
- JSON を XML に変換:ルート要素・属性・配列
- JSON を文字列リテラルとしてエスケープ(二重エンコードされた JSON のデコード)
- JSON の末尾カンマを修正
- JSON のシングルクォートを修正
- JSON の引用符なしキーを修正
- LLM が出力した JSON を修復する
- JSON 解析エラー「Expected Property Name」を修正
- JSON と JavaScript オブジェクトリテラルの違い
- API リクエスト前に JSON を検証する
- JSON フォーマッタ vs JSON Repair
- JSON の Unexpected Token エラーを修正
- JSON から JavaScript オブジェクトへの変換ツール