Base64エンコードとは?
Base64は、64個の印刷可能なASCII文字のセットを使用してバイナリデータを表す、バイナリからテキストへのエンコードスキームです。メール(MIME)、HTTPヘッダー、XMLなど、テキストのみを扱うシステムを通じてバイナリデータを安全に転送するために設計されました。「Base64」という名前は、エンコードアルファベットに使用される64文字に由来します。
エンコードは、3バイトの入力(24ビット)を4つの6ビットグループに分割することで動作します。各6ビット値はBase64アルファベットの1文字にマッピングされます。入力の長さが3の倍数でない場合、出力が4の倍数になるようにパディング文字(=)が追加されます。結果として得られる文字列は元のデータより約33%大きくなりますが、プレーンテキストとして安全に送信できます。
このツールを使う理由
このエンコーダーはUnicodeテキストを正しく処理し、標準とURL-safeの両方のバリアントをサポートし、完全にブラウザ内でエンコードします — データがマシンを離れることはありません。
⚡即時エンコード
入力と同時に結果が表示されます。ボタンをクリックする必要も、サーバーの応答を待つ必要もありません。
🔗URL-safeトグル
ワンクリックで標準(+/)とURL-safe(-_)エンコードを切り替えます。URL-safeバリアントのパディングは自動的に削除されます。
🔒完全クライアントサイド
すべてのエンコードは、ネイティブのbtoa APIとTextEncoderを使用してブラウザでローカルに行われます。サーバーには何も送信されません。
🎛️Unicodeサポート
エンコード前にencodeURIComponentを使用することで、絵文字、CJK文字、あらゆるUTF-8テキストを含む完全なUnicodeを正しく処理します。
このオンライン Base64 エンコーダーの使い方
アカウント不要・インストール不要・アップロード不要 — テキストを貼り付けると、エンコードされた結果が即座に表示されます。
- 1
テキストを貼り付けるか入力する
入力フィールドをクリックして、任意のテキストを貼り付けてください — プレーンな文字列、JSON ペイロード、API キー、メールアドレス、または任意の UTF-8 コンテンツ。入力しながらリアルタイムでエンコードが更新されます。
- 2
バリアントを選択する
MIME、HTTP Basic Auth、一般的な用途には「標準(RFC 4648)」を選択してください。JWT トークン、クエリ文字列パラメータ、ファイル名、+ や / が URL の解析を壊すコンテキストには「URL セーフ」を選択してください。
- 3
出力をコピーする
「コピー」をクリックすると、ワンクリックで Base64 文字列がクリップボードに送られます。出力はコード、設定ファイル、または API リクエストにそのまま貼り付けられます。
- 4
アプリケーションで使用する
エンコードされた文字列を必要な場所に貼り付けてください — Authorization ヘッダー、データ URI、JSON フィールド、環境変数、または Kubernetes シークレット。URL セーフ出力の場合、パディングはすでに除去されています。
Base64アルファベット
Base64は64文字を使用します:大文字A–Z(値0–25)、小文字a–z(26–51)、数字0–9(52–61)、および値62と63の2つの特殊文字。標準RFC 4648バリアントは+と/を使用します;URL-safeバリアントはURLやファイル名での競合を避けるために-と_に置き換えます。
| A–Z | 0–25 | ABCDEFGHIJKLMNOPQRSTUVWXYZ |
| a–z | 26–51 | abcdefghijklmnopqrstuvwxyz |
| 0–9 | 52–61 | 0123456789 |
| +, / | 62–63 | 標準RFC 4648 — URLやファイル名では避ける |
| -, _ | 62–63 | URL-safeバリアント(RFC 4648 §5)— URLやファイル名で安全 |
標準Base64 vs URL-safe
標準Base64アルファベットはURLやファイルパスで特殊文字となる+と/を使用します。URL-safeバリアントはこれらを-と_に置き換え、通常パディング文字=を省略します。JWTトークン、クエリ文字列のデータ、ファイル名、+や/が誤解される可能性のある文脈ではURL-safeエンコードを使用してください。
| 入力 | 標準 | URL-safe |
|---|
| Man | TWFu | TWFu |
| Hello | SGVsbG8= | SGVsbG8 |
| A | QQ== | QQ |
| 1+1=2 | MSsxPTI= | MSsxPTI |
一般的なユースケース
メール添付ファイル(MIME)
SMTPは7ビットASCIIテキスト用に設計されました。Base64エンコードはMIME標準によって、バイナリ添付ファイル(画像、PDF、実行ファイル)をメールメッセージに安全に埋め込むために使用されます。
Data URI
Data URIを使用して画像、フォント、その他のアセットをHTMLやCSSに直接埋め込みます:data:image/png;base64,... — 小さなリソースへの余分なHTTPリクエストを排除します。
APIペイロード
REST APIでは、JSONにバイナリフィールド(ファイルアップロード、暗号化キー、証明書)を埋め込む際にBase64エンコードが必要なことが多く、これはJSONにバイナリ型がないためです。
設定ファイル
Kubernetesシークレット、環境変数、CI/CD設定では、エスケープの問題を避けるためにバイナリシークレットや証明書をBase64文字列として保存するのが一般的です。
HTTP Basic Auth
HTTP Authorization: BasicヘッダーはBase64(ユーザー名:パスワード)として認証情報をエンコードします。これは暗号化ではなく、ヘッダーでの転送のためのエンコードのみを提供します。
JWTトークン
JSON Web TokensはURL-safe Base64(base64url)を使用してヘッダーとペイロードセグメントをエンコードし、エスケープなしにURLやHTTPヘッダーで安全に使用できるトークンを作成します。
Base64 を使うべきでない場面
Base64 はトランスポートエンコーディングであり、セキュリティメカニズムではありません。本番環境で実際の問題を引き起こす最も一般的な誤用を紹介します:
✕セキュリティや暗号化には使わない
Base64 は容易に逆変換できます — デコードにキーやパスワードは不要です。Base64 文字列を見た人は誰でも数秒でデコードできます。Base64 を暗号化、ハッシュ化、またはアクセス制御の代わりに使用しないでください。
✕圧縮には使わない
Base64 は出力サイズを約 33% 増加させます。これは圧縮の逆です。ペイロードサイズを削減するために使わないでください — 代わりに gzip、Brotli、または zstd を使用してください。
✕バイナリファイルの保存には使わない
データベースや JSON API に大きなバイナリファイルを Base64 で保存すると、ストレージとメモリが大幅に無駄になります。オブジェクトストレージ(S3、R2、Cloudflare)を使用し、バイナリを直接配信してください。
コード例
一般的な言語と環境でBase64に文字列をエンコードする方法:
JavaScript (browser)
// Standard Base64
const encoded = btoa(unescape(encodeURIComponent(text)))
// URL-safe Base64 (no padding)
const urlSafe = btoa(unescape(encodeURIComponent(text)))
.replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '')
Node.js
// Standard
const encoded = Buffer.from(text).toString('base64')
// URL-safe
const urlSafe = Buffer.from(text).toString('base64url')Python
import base64
# Standard
encoded = base64.b64encode(text.encode()).decode()
# URL-safe (no padding)
url_safe = base64.urlsafe_b64encode(text.encode()).decode().rstrip('=')CLI (bash)
# Standard
echo -n "Hello, World!" | base64
# URL-safe (requires sed)
echo -n "Hello, World!" | base64 | tr '+/' '-_' | tr -d '='
オンライン Base64 エンコーダー vs. 他のツール
オンラインの Base64 エンコーダーはいくつか存在します。開発者の日常使用における主な差別化要因は、プライバシー、正確性、バリアントサポートです。
完全プライベート — サーバーなし
このエンコーダーはネイティブの btoa API と TextEncoder を使用して、完全にブラウザ内で動作します。テキストはいかなるサーバーにも送信されません — API キー、トークン、シークレットに安全です。
Unicode を正確にエンコード
多くのオンライン Base64 ツールは、非 ASCII 入力を静かに破損させます。このツールは、まず UTF-8 バイトにエンコードすることで、絵文字・CJK・アラビア語・すべての UTF-8 テキストを含む完全な Unicode を正確に処理します。
両方のバリアントを一か所で
多くのツールは標準 Base64 のみを提供しています。このエンコーダーは、自動パディング処理付きで標準(+/)と URL セーフ(-_)の両バリアントを提供します — 手動での文字置換は不要です。
よくある質問
Base64は暗号化と同じですか?
いいえ。Base64はエンコードスキームであり、暗号化ではありません。誰でも簡単に逆変換できます — デコードにキーやパスワードは不要です。機密データの保護にBase64を使用しないでください。そのためには適切な暗号化(AES、RSA)を使用してください。
Base64の出力が=または==で終わるのはなぜですか?
Base64は3バイト(24ビット)のグループで動作し、4つのBase64文字を生成します。入力長が3の倍数でない場合、出力長が4の倍数になるようにパディング文字(=)が追加されます。=が1つは最後のグループに2バイトあったことを意味し、==は1バイトだったことを意味します。
URL-safe Base64とは何ですか?
URL-safe Base64(RFC 4648 §5で定義)は+を-に、/を_に置き換えることで、エンコードされた文字列をパーセントエンコードなしにURL、ファイル名、HTTPヘッダーで使用できるようにします。通常、パディング文字=も省略されます。
Base64はファイルサイズをどれくらい増加させますか?
Base64エンコードはサイズを約33%増加させます。3バイトの入力ごとに4文字の出力になります。1MBのファイルの場合、Base64出力は約1.37MBになります。
このツールでバイナリファイルをエンコードできますか?
このツールはテキスト文字列(UTF-8バイトとして扱われます)をエンコードします。任意のバイナリファイル(画像、PDF、実行ファイル)をエンコードするには、生のバイトを読み取る言語ライブラリやCLIツールを使用してください。
btoa()とBuffer.from().toString('base64')の違いは何ですか?
btoa()はLatin-1文字列で動作するブラウザ組み込み関数で、非ASCII文字では(encodeURIComponentを使ってUTF-8バイトに先にエンコードしない限り)エラーが発生します。Node.jsのBuffer.from(text).toString('base64')はUTF-8文字列を直接処理し、サーバーサイドでは推奨される方法です。
Base64 はバイナリファイルで使えますか?
このツールはテキスト文字列を UTF-8 バイトとして Base64 にエンコードします。バイナリファイル(画像、PDF、実行ファイル)の場合は、生バイトを読み取る CLI ツールや言語ライブラリを使用してください。ブラウザでは、Base64 エンコードされたバイナリコンテンツを含むデータ URI を返す FileReader.readAsDataURL() を使用してください。
エンコードのサイズ制限はありますか?
このツールはサーバー側の制限なく、完全にブラウザ内で動作します。実際の制限はブラウザのメモリに依存します。非常に大きな入力(数 MB 以上)の場合、CLI ツール(Linux/macOS の base64 または Windows の certutil -encode)の方が効率的です。