Base64 エンコード / デコード/ クライアント処理
テキストと Base64 の相互変換。Unicode、日本語、絵文字、URL セーフモードに対応。データはサーバーに送信されません。
プレーンテキスト
Base64 出力
出力結果がここに表示されます…
入力0 文字
出力0 文字
このツールは役に立ちましたか?
Base64エンコーディングとは
Base64は、64個の印刷可能なASCII文字を使用してバイナリデータを表現するエンコーディング方式です。3バイト(24ビット)ごとに4文字にエンコードし、出力にはA-Z、a-z、0-9、+、/の64文字と=パディング文字のみが含まれます。Base64は暗号化アルゴリズムではなく、誰でも簡単にデコードできるエンコーディング形式であり、セキュリティは何も提供しません。
Base64の一般的な用途
メール添付ファイル:MIMEプロトコルはバイナリ添付ファイルにBase64を使用します。Data URL:画像やフォントなどのリソースをCSSやHTMLに直接埋め込み、HTTPリクエストを削減。API通信:JSONでバイナリデータ(画像、PDFなど)を転送する際にBase64エンコード。JWTトークン:JWTのヘッダーとペイロード部分はBase64エンコードされたJSONです。ベーシック認証:HTTP Basic Authはユーザー名とパスワードをBase64エンコードして転送します。
Base64エンコードによるサイズ増加はどれくらいか
Base64エンコーディングによりデータサイズは約33%増加します。3バイトの元データが4文字にエンコードされるため、エンコード後のサイズ = ceil(元サイズ / 3) × 4となります。したがって、大きなファイルではバイナリを直接転送する方が効率的です。ただし、JSON、XML、URLなどのテキスト専用チャネルでバイナリデータを転送する必要がある場合、Base64は標準的なソリューションです。
コード例
JavaScript (Browser)
// Encode (ASCII only)
const encoded = btoa("Hello, World!");
// Decode
const decoded = atob(encoded);
// Encode Unicode (CJK, emoji, etc.)
function b64Encode(str) {
const bytes = new TextEncoder().encode(str);
const bin = String.fromCharCode(...bytes);
return btoa(bin);
}
function b64Decode(b64) {
const bin = atob(b64);
const bytes = Uint8Array.from(bin, c => c.charCodeAt(0));
return new TextDecoder().decode(bytes);
}Python
import base64
# Encode
text = "Hello, 世界 🌏"
encoded = base64.b64encode(text.encode("utf-8")).decode()
print(encoded)
# Decode
decoded = base64.b64decode(encoded).decode("utf-8")
print(decoded)
# URL-safe variant
url_safe = base64.urlsafe_b64encode(
text.encode("utf-8")
).decode().rstrip("=")Go
import "encoding/base64"
// Encode
encoded := base64.StdEncoding.
EncodeToString([]byte("Hello, World!"))
// Decode
decoded, err := base64.StdEncoding.
DecodeString(encoded)
// URL-safe
urlSafe := base64.URLEncoding.
EncodeToString([]byte("Hello, World!"))Shell (curl / openssl)
# Encode echo -n "Hello, World!" | base64 # Decode echo "SGVsbG8sIFdvcmxkIQ==" | base64 -d # URL-safe encode (GNU coreutils) echo -n "Hello" | base64 | tr '+/' '-_' | tr -d '='
よくある質問
Base64 とは何ですか?
Base64 はバイナリデータを ASCII 文字列にエンコードする方式で、A–Z、a–z、0–9、+、/ の 64 文字を使用します。HTTP、メール、JSON などのテキストプロトコルでバイナリデータ(画像、ファイル)を転送する際に広く利用されています。
Base64 エンコードは暗号化ですか?
いいえ。Base64 はエンコードであり、暗号化ではありません。誰でも簡単にデコードでき、鍵の概念はありません。データの安全性を確保するには、AES や RSA などの暗号化アルゴリズムを使用してください。
base64url と標準 Base64 の違いは何ですか?
標準 Base64 は + と / を使用し、URL ではエスケープが必要です(%2B と %2F になる)。また末尾に = パディングがあります。base64url は + を - に、/ を _ に置き換え、末尾の = を除去するため、URL やファイル名にそのまま使用できます。JWT のヘッダーとペイロードは base64url エンコードを使用しています。
なぜ Base64 エンコード後にデータサイズが増加するのですか?
Base64 は 3 バイトのバイナリデータを 4 つの ASCII 文字で表現するため、エンコード後のサイズは元のデータの約 133%(約 1/3 増加)になります。これはバイナリデータをプレーンテキストで転送するためのコストです。
JavaScript で Base64 をエンコード・デコードするには?
ブラウザには btoa()(エンコード)と atob()(デコード)が組み込まれています。ただし、これらは Unicode をネイティブにサポートしていないため、日本語などの非ラテン文字を扱う場合は、まず TextEncoder で UTF-8 バイト配列に変換してからエンコードする必要があります。本ツールは Unicode の互換性を処理済みです。
データは安全ですか?
はい。本ツールは完全にブラウザ内で動作し、ネットワークリクエストは一切発生しません。データがデバイスから外部に送信されることはありませんので、安心して機密テキストをテストに使用できます。