このツールとは?
Base64は、バイナリデータやテキストデータを、64種類の安全なASCII文字(A–Z、a–z、0–9、+、/)のセットに変換するエンコード方式です。 これは、HTML/CSSへの画像の埋め込み、HTTP Basic認証ヘッダー、電子メールの添付ファイル(MIME)、JSON Web Token、およびテキストのみの通信経路を通過する必要があるAPIペイロードなど、ソフトウェアのあらゆる場面で使用されています。
重要:Base64はエンコーディングであり、暗号化ではありません。誰でも復号することができます。その目的は、テキストしか理解できないシステムを通じてデータを安全に送信できるようにすることであり、データを秘密に保つことではありません。
なぜこれを使うのか?
- APIトークン、JWTセグメント、認証ヘッダーをデコードして、その内容を把握します。
- データURI、設定ファイル、またはHTTPヘッダー用のテキストをエンコードします。
- UTF-8 対応:絵文字や非ラテン文字も正しくエンコードおよびデコードされます。
- 100% プライベート — 変換はブラウザ内で行われ、何もアップロードされません。
- 無料、ログイン不要、サイズ制限なし。
使い方
- 入力ボックスにコンテンツを入力または貼り付けてください。
- 「エンコード」をクリックするとテキストがBase64に変換され、「デコード」をクリックするとBase64がテキストに戻ります。
- デコードに失敗した場合は、入力が有効なBase64形式ではありません。文字の欠落や余分な空白がないか確認してください。
- 「コピー」をクリックして結果をコピーしてください。
例
入力
Hello, CodeKitHub! 你好 👋出力
SGVsbG8sIENvZGVLaXRIdWIhIOS9oOWlvSDwn5GL漢字や絵文字が往復の過程でもそのまま保持されている点に注目してください。これこそが、UTF-8の安全な部分なのです。
実用的なヒント
- JWTトークンは、ドットで区切られた3つのBase64セグメントで構成されています。最初の2つ(ヘッダーとペイロード)は個別にデコードして読み取ってください。3つ目はバイナリ署名であり、ノイズのように見えます。
- JWTセグメントのデコードに失敗した場合は、そのセグメントがbase64urlエンコーディングされている可能性があります。まず、- を + に、_ を / に置き換えてください(標準的なツールでは +/ の文字列形式が想定されています)。
- Base64文字列内の空白や改行は、通常、電子メールやログから残った無害なものです。しかし、末尾の「=」パディングが欠落している場合は、多くの場合問題があります。データが破損していると決めつける前に、長さを確認してください。
- Base64はデータを約33%分肥大化させます。ペイロードが小さい場合は問題ありませんが、数KBを超える画像の場合、データURIよりも実際のファイルを使うほうがほぼ常に適しています。
実際の利用シーン
毎日、人々がここを訪れるきっかけとなる3つのケースは、AuthorizationヘッダーやJWTの内容を読み取る場合、Base64エンコードされた状態で届いたWebhookやAPIのペイロードフィールドをデコードする場合(多くの場合JSONであるため、デコード後にフォーマットする必要がある)、そしてデバッグ中に手動でデータURIやBasic-Auth文字列を作成する場合です。
バイナリデータ(画像、ファイル)については、テキストとしてデコードすると文字化けが発生することに注意してください。データ自体は完全に有効であっても、単なるテキストではないのです。バイナリデータのエンコード/デコードはコード内で行うべきであり、このツールはテキストの処理に特化して最適化されています。
デコードエラーの診断方法
Base64のデコードに失敗する原因は、ほぼ必ず以下の3つのいずれかに帰着します(発生頻度の高い順に):入力が実際にはbase64url(JWTやURLセーフなコンテキストで一般的な、標準の「+」や「/」の代わりに「-」や「_」を使用するもの)であり、標準のデコードで処理できるようになるには、これらの文字を元に戻す必要がある場合; 処理の途中で文字列が切り詰められた(コピー&ペーストの際に末尾の数文字が欠落した、あるいはログ行が切り捨てられたなど)。これは、パディングを考慮した有効なBase64文字列の長さが常に4の倍数であるため、検出可能です; あるいは、コピー中に不要な文字(余分な空白、不要な改行、誤って重複した文字など)が混入した可能性があります。そのため、手入力するよりも、生のソースから直接貼り付ける方が常に安全です。
よくある質問
Base64は暗号化ですか?
いいえ。Base64は誰でも復号できる可逆エンコーディングであり、セキュリティ上の効果はまったくありません。データを保護する必要がある場合は、AESのような本格的な暗号化を使用してください。Base64は、テキストとしてデータを安全に転送するためのみに使用されるものです。
なぜデコードされた出力が文字化けしているのでしょうか?
入力が実際にはBase64ではないか、切り捨てられているか、あるいは元のデータがテキストではなくバイナリ(画像など)だったかのいずれかです。バイナリデータは、読み取れる文字として表示されません。
末尾にある「=」記号は何ですか?
パディング。Base64は、入力3バイトごとに4文字を出力するブロック単位で処理されます。入力の長さが3で割り切れない場合、最後のブロックには1文字または2文字の=がパディングとして追加されます。
このツールは絵文字や漢字にも対応していますか?
はい。まずテキストをUTF-8バイトとしてエンコードしますが、これは標準的な手法です。btoa()を直接使用する単純なツールでは、Latin-1以外の文字があると処理に失敗しますが、このツールではそのようなことはありません。
私のデータはどこかにアップロードされていますか?
いいえ。エンコードとデコードは、すべてブラウザ上でJavaScriptを使用して実行されます。データが端末の外に出ることは一切ありません。