Base64
テキストと Base64 を相互に変換します。URL セーフな変種にも対応しています。
ここに結果が表示されます
Base64 とは何か、なぜ存在するのか
Base64 は、任意のバイナリデータを 64 種類の素の印字可能な文字だけで表す方法です: A–Z、a–z、0–9、それに 2 つの記号です。多くのシステムが生のバイトではなくテキストを運ぶために作られたため、存在します。メール本文・URL・JSON 文字列・HTML 属性・HTTP ヘッダーは、任意のバイナリ内容で壊れることがありますが、Base64 のテキストはそのまま無事に通します。Base64 に符号化することで、バイナリデータをそうしたテキスト専用の経路に安全に埋め込めます。
引き換えになるのはサイズです。Base64 は 3 バイトごとを 4 文字で表すため、符号化後は元より約 33% 大きくなります。トークン・小さな画像・鍵のような小さなペイロードなら問題なく、大きなファイルが実際にはめったに Base64 符号化されないのはこのためです。
これは符号化であって暗号化ではない
Base64 について理解すべき最も重要な点はこれです: 一切のセキュリティを提供しません。誰でも Base64 を即座にデコードできます — このツールも同じです。何も隠さず、何も守りません。データを秘密にしたいなら暗号化してください。Base64 はデータを転送に安全にするだけで、パスワードや API キーを符号化しても隠したことにはなりません。
標準 Base64 と URL セーフ Base64
標準 Base64 は最後の 2 文字に + と / を使い、末尾を = 記号で埋めます。これらの文字は URL やファイル名の中で特別な意味を持つため、URL セーフな変種は + と / を - と _ に置き換え、たいていパディングを省きます。符号化した値が Web アドレス・クエリパラメータ・Cookie・ファイル名に現れる場合は、URL セーフの選択肢を使ってください。例えば JSON Web Token は、まさにこの理由で URL セーフ Base64 を使います。
UTF-8 と非 ASCII テキスト
ブラウザ組み込みの btoa と atob 関数は Latin-1 しか扱えず、ヘブライ語・アラビア語・中国語・絵文字のような文字では例外を投げます。このツールはテキストを先に UTF-8 として符号化するため、どんな文字も正しく往復します。つまり שלום や 😀 も壊れずにエンコード・デコードでき、開発者が生のブラウザ関数に手を出したときによく起きる「文字化け」を避けられます。
- エンコード: 読めるテキストを入力または貼り付けて、その Base64 形式を得ます。
- デコード: Base64 (標準でも URL セーフでも、パディングの有無を問わず) を貼り付けて、元のテキストを取り戻します。
よくある質問
- Base64 は安全ですか、暗号化されていますか?
- いいえ。Base64 は可逆な符号化であって暗号化ではありません。誰でも即座にデコードできるため、パスワード・鍵・個人データを守るのに使ってはいけません。
- ヘブライ語・アラビア語・絵文字に対応していますか?
- はい。テキストは Base64 の前に UTF-8 として符号化されるため、שלום や 😀 のような文字も、ブラウザ組み込みの btoa 関数と違って壊れずにエンコード・デコードできます。
- URL セーフ Base64 とは何ですか?
- + と / の文字を - と _ に置き換え、末尾のパディングを省いたものです。URL・クエリ文字列・Cookie・ファイル名、そして JWT のようなトークンの中でも安全に使えます。
- デコード結果が空だったり誤っていたりするのはなぜですか?
- たいていは入力が有効な Base64 でないためです — 途中で切れている、別の文字セットの文字を含んでいる、あるいは実は素のテキストである、といった場合です。このツールは標準と URL セーフの両方を受け付け、パディングの欠落にも寛容ですが、テキストとして表示するにはバイト列が有効な UTF-8 でなければなりません。
- 符号化した文字列が元より長いのはなぜですか?
- Base64 は 3 バイトごとを 4 文字で符号化するため、出力は入力より約 3 分の 1 大きくなります。このオーバーヘッドは形式に固有のものです。
- パディング文字 (=) は必要ですか?
- パディングは長さを 4 の倍数にするもので、厳格なデコーダーでは必須ですが、このツールは有無どちらの入力も受け付けます。URL セーフ Base64 はたいていパディングを省きます。
- 入力はサーバーに送られますか?
- いいえ。エンコードもデコードも完全にブラウザ内で動きます。貼り付けた内容が端末の外に出ることはありません。