Menu
日本語

Base64 エンコーダ / デコーダ

Base64 文字列やファイルを即座にエンコード / デコード。

最終更新

モード
テキストテキストを貼り付けて開始
Base64
エンコードまたはデコードされた出力がここに表示されます — すべてローカルで実行。

Base64 とは?

Base64 は、バイナリデータを 64 種類の印字可能な文字で表現するためのエンコード方式です。テキストしか扱えない経路にバイト列を載せたいときに登場します。HTML に直接埋め込む小さな画像、各種トークン、メールの添付ファイル、data URL、ログに貼り付けたい値、JSON フィールドに入れるバイナリなど、用途は幅広いです。

Base64 はあくまで「エンコード」であって「暗号化」ではありません。Base64 文字列はデコーダーに通せばすぐに元の内容に戻せるため、セキュリティの境界として扱ってはいけません。Base64 の中身は実質的に公開情報だと思っておきましょう。秘匿が必要な場合は、エンコードする *前に* 暗号化しておく必要があります。

仕組みとしては、3 バイト(24 ビット)ごとに区切り、それを 64 文字の固定アルファベット(AZaz09+/)から 4 文字に書き直しています。入力の長さが 3 の倍数でないときは、末尾に = が 1 個または 2 個付いてパディングされます。Base64 文字列が = で終わっていることが多いのはこのためです。

Base64 を触りながら身につくこと

  • エンコードはあくまで「表現の置き換え」であり、データを隠したり守ったりはしない(誰でも復号できる)。
  • Base64 後のサイズは元のバイト列のおよそ 4/3 倍になる。便利だが、サイズ効率は良くない。
  • 末尾の = は最後の 4 文字グループを揃えるためのパディングで、ごく普通に現れるもの。

Base64 をエンコード/デコードする手順

  1. 向きを決める

    プレーンテキストやファイルを Base64 にしたいなら「Encode」を、Base64 文字列を元に戻したいなら「Decode」を選びます。

  2. 入力を貼り付け、またはファイルをドロップ

    テキスト欄に文字列を貼り付けるか、画像・PDF などのファイルをドロップゾーンにドラッグします。ファイルは HTML や CSS にそのまま埋め込める data: URL の形に変換されます。

  3. 出力を確認する

    エンコード時の出力は Base64 文字列です。デコード時はもとのテキストが表示され、入力がファイルだった場合は復元されたバイト列がダウンロードリンクとして得られます。

  4. 結果をコピーする

    コピーボタンを押せば結果がクリップボードに入ります。処理はすべてブラウザ内で完結するので、入力した内容が外部に送信されることはありません。

Base64 早見表

Base64 を扱い始めると何度も出てくる用語のまとめ。仕様は RFC 4648 で定義されています。

要素意味
アルファベット標準 Base64 で使う 64 文字A–Za–z0–9+/
URL セーフ版JWT や URL で使われる文字集合A–Za–z0–9-_
パディング長さが 3 の倍数でないときに末尾を埋める文字= または ==
グループサイズ1 ブロックあたりのバイト数 → 出力文字数3 バイト → 4 文字
サイズ増加出力は入力比でおよそ 33% 増える100 B → 136 文字
data URLHTML/CSS にファイルを直接埋め込む形式data:image/png;base64,...

試してみたい Base64 の例

シンプルな単語をデコードする

エンコード後

SGVsbG8gV29ybGQ=

デコード後

Hello World

末尾の = はパディングです。Hello World は 11 バイトで 3 の倍数ではないため付きます。デコード時には自動的に取り除かれます。

小さな JSON をエンコードする

もとのデータ
{"role":"student","active":true}
Base64

eyJyb2xlIjoic3R1ZGVudCIsImFjdGl2ZSI6dHJ1ZX0=

JWT の各セグメントもまさにこの方式でエンコードされています。JWT のペイロード部分が大抵 eyJ で始まるのは、これが {" の Base64 表現だからです。

data URL を見分ける

data URL

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNgAAIAAAUAAen8GVAAAAAASUVORK5CYII=

プレフィックスでメディアタイプ(image/png)とエンコード方式(base64)を宣言しています。カンマ以降がファイル本体です。ページと同時に読み込みたい極小の画像などに便利です。

標準版と URL セーフ版を比べる

標準

Pj4/Pyc+Pg==

URL セーフ

Pj4_Pyc-Pg

URL セーフ版では +- に、/_ に置き換えます。これにより、追加のエスケープなしに URL の中にそのまま入れられます。JWT もこの形式です。

Base64 でよくあるミス

  • Base64 を「暗号化されている」と勘違いする。実際にはパスワードも鍵もなく誰でも復号できる。
  • Unicode 文字列をそのままエンコードしてしまう。Base64 にかける *前* に UTF-8 のバイト列に変換しておかないと、非 ASCII 文字が往復で壊れる。
  • 末尾の = パディングを手で削った文字列を、パディングを必須とする厳格なデコーダーに渡してしまう(URL セーフのデコーダーは欠落に寛容なことが多いが、標準デコーダーは受け付けないことがある)。

Base64 のよくある質問

Base64 エンコーディングとは何ですか?
Base64 はバイナリデータを 64 文字のアルファベットで表現する印字可能なテキスト形式のエンコーディングです。API、JSON、JWT、メール、data URL など、テキスト経路でバイトをやり取りしたい場面で広く使われています。
Base64 はどう動いているの?
Base64 は入力 3 バイト(24 ビット)を 6 ビットずつ 4 つに分割し、各 6 ビットを 64 文字のうちの 1 文字に対応付けます。入力が 3 バイトの倍数でない場合、長さ調整のために = が 1 個または 2 個付加されます。
Base64 文字列はどうやって復号する?
Base64 デコーダーに貼り付ければ、もとのテキストやファイルが得られます。コードから扱う場合、たいていの言語に組み込みがあります。ブラウザなら atob()、Node.js なら Buffer.from(str, 'base64')、Python なら base64.b64decode() です。
Base64 は安全?
いいえ。Base64 は暗号化ではなくエンコーディングです。設計目的は秘匿ではなく「表現と転送」です。機密性が必要なら、まず暗号化してから、その暗号文を Base64 でエンコードしてください。
Base64 の末尾に = が付くのはなぜ?
= はパディングです。Base64 は入力 3 バイトごとに 4 文字を出力します。入力長が 3 の倍数でないとき、出力長を 4 の倍数に揃えるために = が 1 〜 2 個付け足されます。
Base64 で画像もエンコードできる?
できます。画像のバイト列を Base64 にして data:image/png;base64,... 形式の URL にすれば、別途のリクエストなしに画像を HTML、CSS、JSON へ直接埋め込めます。

その他の開発者ツール

Coddyでコードを学ぼう

始める