Base64 エンコーダー / デコーダー

Base64、Base64URL、Base32、16 進数のエンコードとデコード——テキストは入力と同時に変換、ファイルはドラッグ&ドロップ——を、不正な文字の正確な位置まで教えてくれる厳密さで。肩をすくめるだけのデコーダーとは違います。すべてブラウザ内で実行されます。デコードされる文字列はトークンやシークレットであることがあまりに多いため、それをサーバーに送ったり、ログの残る AI チャットに貼り付けたりすることは、デコーダーが決して求めてはならないことなのです。

ファイル

このボックスの任意の場所にファイルをドロップすると、上で選んだ形式でエンコードされ、エンコード済みテキストとそのまま使える data URL が得られます。またはエンコード済みテキストをここに貼り付け、デコードされたバイト列をファイルとしてダウンロードできます。

4 つの文字集合、仕事はひとつ

4 つの形式はすべて同じことをします——任意のバイト列を、安全で印字可能な文字だけで書き表す——ただし相手が異なります。標準の Base64 は、メール添付、設定ファイル、そして無数の API のデフォルトです。Base64URL は URL を壊す 2 文字(+ と /)を - と _ に置き換え、パディングを落としたもので、すべての JSON Web Token の内部で使われている文字集合です——JWT デコーダーで 1 つデコードすれば、3 つのセグメントすべてがこの形式です。Base32 はより小さい、大文字小文字を区別しない文字集合を使い、声に出して読み上げても手で打ち直しても耐えるため、TOTP 認証シークレットはこの形式で発行されます。Hex はサイズを 2 倍にする代わりに完全な透明性を買います。1 バイト=2 文字、隠れるものは何もありません——ハッシュの形式であり、ハッシュ生成ツールが生成し、ハッシュ識別ツールが見分けます。

この厳密さは意図的なものであり、デコーダーとデバッグツールの違いです。atob() のようなブラウザ組み込み関数は、4 文字目にタイプミスのある文字列に対しても、そもそも Base64 ではない文字列に対しても、同じ総称的なエラーを 1 つ投げるだけです。このデコーダーは 1 文字ずつ検証し、最初に失敗する位置を報告します——JSON から引きずってきた引用符、URL セーフな文字集合であるべき場所にある +、途中に取り残されたパディング、あるいは剰余ビットがゼロでない最後の文字(エンコード後に文字列が編集された証拠)です。「デコードできない」謎の 9 割は、誰かがその 1 位置を指さした瞬間に見えるようになります。そしてこの作業には資格情報が関わることがあまりに多い——Kubernetes のシークレットは Base64 です(エンコーディングであって、決して暗号化ではありません)、トークンのペイロード、設定ファイル内の鍵——ため、変換全体がローカルで完結します。これは .env バリデーターと同じ規則です。機密性の高い入力は決して送信されません。関連記事 Base64 は暗号化ではない では、この区別がなぜ重要なのかをより長く論じています。

よくある質問

Base64 は暗号化の一種ですか?

いいえ。Base64 はエンコーディングです——鍵も秘匿性もない、可逆な衣装替えにすぎません。Base64 文字列を見た人は誰でも即座にデコードできるため、「API キーが設定ファイル内で Base64 エンコードされている」とは、API キーが事実上平文で設定ファイル内にあるという意味です。記事 Base64 は暗号化ではない では、エンコーディング、暗号化、ハッシュの違いと、それぞれの混同が生む間違いを解きほぐしています。

このデコーダーはなぜエラーの正確な位置を教えてくれるのですか?

位置のない「不正な文字」は、総称的なデコーダーがあなたの午後を無駄にするやり方だからです。貼り付けられた文字列が失敗する原因は通常 3 つのうちの 1 つです。周囲のテキストから紛れ込んだ余分な文字(引用符、カンマ、ログの 1 行)、文字集合の取り違え(URL セーフな文字列を標準デコーダーに与えた)、コピーの途切れです。ここでは最初の問題文字がそのインデックスとともに示されるので、その正確な場所を見て、3 つのうちどれが起きたのか分かります。

Base64 と Base64URL の違いは何ですか?

文字集合です。標準 Base64 は + と / を使いますが、これらは URL の構造文字であるため、URL セーフな Base64 はそれらを - と _ に置き換え、通常 = のパディングを落とします。これがすべての JWT の内部で使われている変種です。一方の変種を他方のデコーダーに与えることが、最初の + や / の位置でのデコード失敗の最も一般的な原因です——このツールはモードを分離しているため、エラーメッセージがまさにそれが起きたことを伝えられます。

ここでトークンやシークレットをデコードしても安全ですか?

はい——変換はあなたのブラウザ内、このページで実行され、貼り付けた内容が送信されたり保存されたりすることはありません。それが重要なのは、デコードされるものが資格情報であることがあまりに多いからです。設定ファイル内の Base64 ブロック、Kubernetes のシークレット(それは Base64 であって暗号化ではありません——上の質問を参照)、トークンのペイロードです。同じ文字列を AI チャットに貼り付ければ、ログの残る第三者のシステムにコピーが送られます。チャットボットにシークレットを扱わせてはいけないを参照してください。

ファイルが「有効な UTF-8 ではない」とデコードされたのはなぜですか?

それがバイナリだからです——画像、アーカイブ、コンパイルされた何か——そしてバイナリはテキストではありません。テキストデコーダーは、文字化けを渡す代わりに拒否します。テキストボックスの下にあるファイルセクションを使ってください。Base64 をそこに貼り付け、バイト列が無事なまま再構築されたファイルをダウンロードできます。