Base64エンコーダー & デコーダー — 無料オンラインツール
Base64文字列のエンコード・デコードを即座に実行。UTF-8テキストとデータURLに対応。すべての処理は100%クライアントサイド — データがブラウザの外に出ることはありません。
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エンコーディングはバイナリデータをASCIIテキストに変換し、テキスト専用のチャネルでの安全な送信を可能にします。概念的にはシンプルですが、Base64を正しく使用するタイミングと方法を理解することで、一般的なパフォーマンスとセキュリティの間違いを防げます。
Base64を使うべき場合(と使うべきでない場合)
- 使用する場合: HTML/CSSへの小さな画像の埋め込み(データURI)、JSONペイロードでのバイナリデータのエンコード、メール添付ファイル(MIMEエンコーディング)、テキスト専用データベースや環境変数でのバイナリデータの保存。
- 使用しない場合: 大きなファイル(Base64はサイズを約33%増加させる)、暗号化やセキュリティ(Base64はエンコーディングであり暗号化ではない — 誰でもデコードできる)、バイナリ転送が利用可能な場合(ファイルアップロードのmultipart/form-dataなど)。
知っておくべきBase64の種類
- 標準Base64(RFC 4648): A-Z、a-z、0-9、+、/を使用し、=でパディング。ほとんどの言語でデフォルト。
- URLセーフBase64: +を-に、/を_に置換。URLやファイル名、クッキーで+と/が特別な意味を持つ場合に不可欠。JWTで使用。
- パディングなしBase64: 末尾の=文字を省略。JWTや一部のAPIで一般的。ほとんどのデコーダーはパディングなしの入力を適切に処理します。
パフォーマンスの考慮事項
Base64エンコーディングはデータサイズを約33%増加させます(3バイトごとに4文字になる)。CSSのインライン画像の場合、10KBの画像が約13.3KBのCSSテキストになります。2KB未満の画像では、節約されるHTTPリクエストと比較してオーバーヘッドは無視できます。より大きなアセットの場合は、適切なキャッシュヘッダーを使用して別ファイルとして配信してください。
よくある質問
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はページサイズを増加させ、含まれるドキュメントから独立してブラウザがキャッシュすることはできません。
関連する開発者ツール
- JWTデコーダー & インスペクター — JSON Web Tokenをデコードし、ヘッダー、ペイロード、有効期限を検査
- ハッシュジェネレーター — MD5、SHA-1、SHA-256、SHA-512のハッシュを任意の文字列から生成
- URLエンコーダー & デコーダー — URLコンポーネントとクエリ文字列のパーセントエンコード・デコード
- .ENVファイルインスペクター — 環境ファイルで公開されたAPIキーとシークレットを検出