プライバシー保証: このツールはブラウザ上で完全に動作します。ネットワークリクエストは一切行われません。入力データはデバイスに留まります。
0 文字
0 文字
クイックアクション: URL安全Base64 データURL (image/png) データURL (text/plain)

Base64エンコーディングとは?

Base64は、任意のバイナリデータを64種類の印刷可能なASCII文字(大文字A-Z、小文字a-z、数字0-9、プラス+、スラッシュ/)のシーケンスに変換するバイナリからテキストへのエンコーディング方式です。出力の長さが4の倍数になるよう、等号=でパディングされます。

「Base64」という名前は、データを表現するために正確に64種類の異なる文字を使用することに由来しています。入力の3バイトごとに4つのBase64文字に変換されるため、エンコードされた出力は元のバイナリより約33%大きくなります。

Base64を使うタイミング

  • HTML/CSSへの画像埋め込み — データURL(data:image/png;base64,...)を使って、追加のHTTPリクエストなしに小さな画像をインライン化
  • JSONペイロード — JSONはテキストのみサポート。Base64でファイル内容や画像などのバイナリデータをJSONフィールドに含めることが可能
  • メール添付ファイル — MIME標準はプレーンテキストメールでバイナリ添付ファイルをエンコードするためにBase64を使用
  • HTTPヘッダーとクエリパラメータ — ASCIIのみ受け入れるチャネルでバイナリ値を安全に渡す
  • JWTトークン — JSON Web TokenのヘッダーとペイロードはBase64URLエンコードされている
  • テキストデータベースへのバイナリBlob格納 — VARCHARやTEXTカラムに格納するための小さなバイナリ値のエンコード
  • Basic認証 — HTTP Basic AuthはクレデンシャルをBase64でエンコード(username:password

JavaScriptでのBase64

モダンブラウザはBase64のエンコードとデコード用に2つの組み込み関数を提供しています。Unicodeテキストの場合、マルチバイト文字を明示的に処理する必要があります:

// プレーンASCII文字列のエンコード
const encoded = btoa('Hello, world!');
// → "SGVsbG8sIHdvcmxkIQ=="

// Base64文字列のデコード
const decoded = atob('SGVsbG8sIHdvcmxkIQ==');
// → "Hello, world!"

// UTF-8文字列のエンコード(絵文字、非ASCIIに対応)
function encodeUTF8(str) {
  const bytes = new TextEncoder().encode(str);
  const binStr = Array.from(bytes, b => String.fromCharCode(b)).join('');
  return btoa(binStr);
}

// UTF-8 Base64文字列のデコード
function decodeUTF8(b64) {
  const binStr = atob(b64);
  const bytes = Uint8Array.from(binStr, c => c.charCodeAt(0));
  return new TextDecoder().decode(bytes);
}

// URL安全Base64(+ を - に、/ を _ に置換)
function encodeURLSafe(str) {
  return encodeUTF8(str).replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '');
}

// Node.js(サーバーサイド)
const encoded = Buffer.from('Hello').toString('base64');
const decoded = Buffer.from('SGVsbG8=', 'base64').toString('utf8');

// 文字列からデータURLを生成
function toDataURL(content, mimeType = 'text/plain') {
  return `data:${mimeType};base64,${encodeUTF8(content)}`;
}

よくある質問

Base64エンコーディングとは?

Base64は、バイナリデータを64種類の印刷可能なASCII文字で表現するバイナリからテキストへのエンコーディング方式です。JSON、XML、メール、URLなどのテキストのみを扱うチャネルで、画像、ファイル、任意のバイトなどのバイナリコンテンツを安全に転送するために使用されます。Base64はデータを圧縮しません。エンコードされた出力は入力より約33%大きくなります。

Base64エンコーディングはいつ使うべき?

テキストのみのコンテキストにバイナリデータを埋め込む必要がある場合にBase64を使用します:HTMLやCSSにデータURLとして画像をインライン化する場合、JSON APIペイロードのバイナリフィールド、メールのファイル添付(MIME)、HTTP Basic Authヘッダーのクレデンシャル、テキストデータベースカラムに格納する小さなバイナリBlobなど。大きなファイルの場合は、Base64エンコーディングよりも直接アップロードを推奨します。サイズオーバーヘッドが急速に増加します。

Base64は暗号化の一種?

いいえ — Base64は純粋なエンコーディング方式であり、暗号化ではありません。セキュリティや機密性はゼロです。誰でも鍵やパスワードなしで即座にBase64文字列をデコードできます。パスワード、APIキー、個人情報などの機密データを隠すためにBase64を使用しないでください。機密性が必要な場合は、AES-256(対称)やRSA(非対称)などの適切な暗号化を使用してください。

Base64データURLとは?

データURLは、Base64エンコーディングを使用してファイルコンテンツをURI内に直接埋め込みます。形式は data:[mime-type];base64,[encoded-data] です。例:data:image/png;base64,iVBORw0KGgo...。データURLを使うと、別のファイルリクエストなしに小さな画像やファイルをHTML、CSS、JSONに直接埋め込めます。小さなアセット(数キロバイト以下)に最適で、大きなデータURLはページサイズを増加させ、含まれるドキュメントから独立してブラウザがキャッシュすることはできません。

関連する開発者ツール