Base64 エンコード/デコード

テキストやファイルを Base64 に変換、または Base64 を元に戻します。日本語・URLセーフ・データURIに対応し、すべてこのブラウザ内で処理します。

入力

変換の方向

変換結果

※ 日本語などのマルチバイト文字にも対応しています(UTF-8として処理)。デコード時に不正な Base64 を入力した場合は、その旨を表示します。

解説

Base64は、あらゆるデータを「A〜Z・a〜z・0〜9・+・/」の64種類の文字(と長さ調整用の詰め物「=」)だけで表す変換方式です。画像などのバイナリや日本語を含むテキストを、本来は文字しか通せないメール本文・JSON・データURIといった場所でも壊れずに運べるようにするために使われます。

仕組みは、元データを8ビットずつではなく6ビットずつに区切り直し、その6ビット(0〜63の値)を1文字に対応させるというものです。6ビット=1文字なので、3バイト(24ビット)がちょうど4文字に変換されます。元データが3の倍数でないときは末尾を「=」で埋めて長さを4文字単位に揃えます。この性質から、Base64にすると文字数はおおよそ元の約1.33倍に増えます。

具体例として、英字「Man」(3バイト)はちょうど割り切れて「TWFu」(4文字・=なし)になります。「Hello」(5バイト)は「SGVsbG8=」と末尾に「=」が1つ付きます。日本語の「あ」はUTF-8では3バイトのため、エンコードすると「44GC」になります。

このツールは日本語などのマルチバイト文字に対応しており、内部では文字列をいったんUTF-8のバイト列に変換してから処理します(encodeURIComponent と btoa を組み合わせる方式)。そのためエンコードした結果を再びデコードすれば、元の日本語が正確に復元されます(UTF-8往復)。

デコード時は、入力に含まれる空白や改行を自動で取り除いてから処理するため、複数行に折り返されたBase64もそのまま貼り付けられます。一方で、Base64として使えない文字(全角や「-」「_」など)が含まれている場合は「正しいBase64文字列ではありません」と案内し、変換を中止します。

重要な注意点として、Base64は誰でも元に戻せる可逆な「変換(エンコード)」であり、暗号化ではありません。中身を秘密にする効果はないため、パスワードなど機密情報の保護目的には使えません。なお変換はすべてお使いのブラウザ内(JavaScript)で完結し、入力内容がサーバーへ送信されることはありません。

よくある質問

Base64とは何ですか?

データを64種類の文字(A〜Z・a〜z・0〜9・+・/)と詰め物の=だけで表す変換方式です。元データを6ビットずつに区切って1文字に対応させ、3バイトを4文字に変換します。文字しか扱えないメールやJSONでバイナリや多言語テキストを運ぶために使われます。

Base64にすると暗号化されますか?

いいえ。Base64は誰でも元に戻せる可逆な変換であり、暗号化ではありません。中身を秘密にする効果はないため、機密情報の保護目的には使えません。

末尾の「=」は何ですか?

長さ調整のための詰め物(パディング)です。Base64は4文字単位で出力するため、元データのバイト数が3の倍数でないときに末尾を=で埋めて長さを揃えます。たとえば「Hello」は「SGVsbG8=」と=が1つ付きます。

日本語も正しく変換できますか?

はい。内部でUTF-8のバイト列を経由して処理するため、日本語の「あ」は「44GC」のように変換でき、デコードすれば元の日本語へ正確に戻せます。

URLセーフなBase64(-や_を使う形式)に対応していますか?

対応しています。「URLセーフ」にチェックを入れると、+を-、/を_に置き換え、末尾の=を省いた base64url 形式で出力します。デコード時は標準・URLセーフのどちらの形式でも自動で判別して元に戻します。

改行が入ったBase64も貼り付けられますか?

はい。デコード時は入力中の空白や改行を自動で取り除いてから処理するため、複数行に折り返されたBase64もそのまま貼り付けてデコードできます。

入力した内容はサーバーに送られますか?

送られません。エンコード/デコードはすべてブラウザ内で処理され、入力はどこにも送信されません。

画像などのファイルもBase64にできますか?

できます。「ファイルをBase64に変換」から画像やPDFなどを選ぶと、その内容をBase64(または data:...;base64, のデータURI)で出力します。逆に、デコード時は「ファイルとして保存」でバイナリを復元して保存できます。処理は端末内で完結し、ファイルは送信されません。