Base64エンコーダー&デコーダー — テキストとデータをオンライン変換
テキストをBase64にエンコード、またはBase64を読めるテキストにデコード。UTF-8対応、オフライン動作、データは一切送信されません。JWTトークン、Data URI、API認証ヘッダー、メールエンコーディングに便利。
Base64が実際にやっていること
Base64はバイナリデータを64個の「安全な」ASCII文字(A-Z、a-z、0-9、+、/)とパディング用の=で表現します。RFC 4648で定義され、1990年代初頭のMIMEメール標準から使われています。
なぜ存在するのか?多くのシステム(メール、JSON、URL、XML)はテキストしか扱えないからです。PNG画像をJSONレスポンスやメール本文に入れたい場合、生のバイトをそのまま入れることはできない——まずテキストにエンコードする必要があります。Base64はそのための標準的な方法です。
トレードオフ:Base64はデータサイズを正確に33%増加させます(パディング含む)。入力3バイトが出力4文字になる。1MBの画像はBase64で約1.33MBに。だから大きなファイルをWeb配信でBase64エンコードすべきではない——通常のファイルアップロードやCDN URLを使う。しかし小さなアセット(5KB以下のアイコン、フォントサブセット)やテキスト専用チャネルを通す必要があるデータには、33%のオーバーヘッドは価値がある。
使い方
- 上部でエンコードまたはデコードモードを選択。
- テキスト(エンコード用)またはBase64文字列(デコード用)を入力に貼り付け。
- ボタンを押す——結果は即座に表示。
- 出力をコピー。Data URIの場合は自分で先頭に "data:image/png;base64," を追加。
実際に必要になる場面
JWTトークンのペイロード確認
JWTはドットで区切られた3つのBase64urlエンコード部分を持つ。中間部分(ペイロード)をここに貼り付けてデコードすれば、ユーザーID、有効期限、ロールなどのクレームが見える——JWTライブラリをインストールせずに。
インライン画像のData URI作成
CSSやHTMLに小さなアイコンを直接埋め込んで余分なHTTPリクエストを省きたい?画像ファイルをBase64にエンコードして、background-image: url(data:image/png;base64,文字列) として使う。5KB以下に抑えないとパフォーマンスに悪影響。
HTTP Basic認証ヘッダー
Basic Authは "ユーザー名:パスワード" をBase64エンコードしてAuthorizationヘッダーに入れる必要がある。"admin:secretpass" をここに貼り付けてエンコードし、APIテストツールやcurlコマンドで使う。
エンコードされたAPIペイロードのデバッグ
一部のAPIはBase64エンコードされたフィールドを返す(AWS Lambdaレスポンス、Kubernetes secrets、SAMLアサーション)。エンコード文字列をここに貼り付けて中身を確認——デコードスクリプトを書く必要なし。
知っておくべきこと
Base64は暗号化ではない
これが最大の誤解。Base64は誰でも簡単に元に戻せる——セキュリティはゼロ。パスワード、APIキー、機密データを「隠す」ために使わないこと。設定ファイルでパスワードがBase64で保存されていたら、それはセキュリティバグであってセキュリティ対策ではない。
URL-safeと標準Base64の違いに注意
標準Base64は+と/を使うがURLでは壊れる。URL-safe Base64(RFC 4648 §5)は-と_に置き換える。JWTはURL-safeを使用。ほとんどのAPIは標準を使用。デコード結果が文字化けなら、間違ったバリアントを使っている可能性。
大きなファイルをWeb用にBase64エンコードしない
100KBの画像をBase64でCSSに入れる = 133KBのテキストで、個別にキャッシュできず、遅延読み込みできず、スタイルシートを膨らませる。Base64は小さなアセットのみ(< 5KB)。それ以外はCDNから配信する通常のファイルにすべき。
UTF-8エンコーディングが重要
Base64はバイトをエンコードする、文字ではない。"Hello"はASCIIで5バイト。"こんにちは"はUTF-8で15バイト。テキストをエンコードする場合、両端で文字エンコーディングを合わせる(UTF-8が安全なデフォルト)。エンコーディング不一致 = 文字化け出力。
実例
JWTペイロードのデコード
JWTトークンの中間セクション——デコードしてユーザークレームを確認。
Input
eyJ1c2VySWQiOjQyLCJyb2xlIjoiYWRtaW4iLCJleHAiOjE3MTY5OTIwMDB9Output
{"userId":42,"role":"admin","exp":1716992000}Basic Auth用の認証情報エンコード
HTTP Basic認証はbase64("ユーザー名:パスワード")が必要。
Input
admin:my-secret-passwordOutput
YWRtaW46bXktc2VjcmV0LXBhc3N3b3Jk機能
- エンコードとデコードを1つのツールで——モード切り替えのみ
- 完全なUTF-8サポート(日本語、中国語、絵文字——すべて動作)
- 複数行入力も問題なし
- 完全にブラウザ内で動作——サーバーへの往復なし
- ブラウザのメモリ以外にサイズ制限なし
- 無料、登録不要、トラッキングなし
よくある質問
なぜBase64はファイルを33%大きくする?
Base64は入力3バイトを4つのASCII文字にマッピングする。4/3 = 33.3%増加。入力長が3で割り切れない場合、末尾に1-2個のパディング文字(=)が追加される。これはエンコーディング固有のもので回避方法はない。
このツールでJWTトークンをデコードできる?
部分的に可能。JWTはBase64urlエンコーディング(+と/の代わりに-と_)を使用。ペイロード(中間部分)は読めるJSONにデコードされる。署名(最後の部分)はバイナリの文字化けにデコードされる(暗号ハッシュだから)。このツールは標準とURL-safe両方のBase64を処理可能。
Base64は暗号化と同じ?
いいえ。絶対に違う。Base64はエンコーディング——誰でもゼロの労力で元に戻せる。セキュリティはゼロ。APIが「Base64でデータを暗号化している」と言われたら、逃げること。本当の暗号化にはAES-256などを使う。
Kubernetes secretsがBase64を使うのはなぜ?
KubernetesはYAML/JSONマニフェストでsecretをBase64で保存する。バイナリデータをYAMLに直接入れられないから。しかしこれはセキュリティではない——kubectlアクセスがある人なら誰でも即座にデコードできる。本当の保護にはsealed-secretsや外部シークレットマネージャー(Vault、AWS Secrets Manager)を使う。
Base64とURLエンコーディングの違いは?
異なる問題、異なる解決策。URLエンコーディング(パーセントエンコーディング)は個々の特殊文字を%XXに置き換えてURL安全にする。Base64は任意のバイナリデータをテキスト文字列に変換する。特殊文字を含むクエリパラメータにはURLエンコーディング。テキスト形式にバイナリデータを埋め込むにはBase64。
ヒントと関連ワークフロー
- JSONペイロードをデコードしましたか?見やすく整形するには、JSONフォーマッター.
- URL内の特殊文字をエンコードしたい場合は、URLエンコーダー.
- エンコード後のデータ整合性をハッシュで検証するには、ハッシュ生成ツール.
- Base64エンコードしたデータをQRコードに埋め込むには、QRコード生成ツール.