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 の互換性を処理済みです。
データは安全ですか?
はい。本ツールは完全にブラウザ内で動作し、ネットワークリクエストは一切発生しません。データがデバイスから外部に送信されることはありませんので、安心して機密テキストをテストに使用できます。