RevealTheme logo

Base64エンコーダー&デコーダー

文字列をBase64にエンコードしたり、Base64をテキストにデコードしたりします。あなたのプライバシーを尊重し、すべてブラウザ内で実行されます。

Base64とは何か、そしてなぜどこにでもあるのか?

Base64は、暗号化ではなくエンコーディングの方式であり、任意のバイナリデータを64個の印字可能なASCII文字(A〜Z、a〜z、0〜9、加えて+、/、そしてパディング用の=)だけを使って表現します。多くの転送プロトコル、ファイル形式、APIがテキストのみを扱うか、特定のバイトを特別に処理するために、Base64は存在します。電子メール(SMTPは7ビットASCII向けに設計されました)、JSON(生のバイトを含められません)、URL(予約文字があります)、HTTPヘッダー(行指向のテキスト)、HTML属性のいずれもが、バイナリデータをテキストのチャネルで運ぶ手段を必要とします。Base64は、入力バイトを3つ(24ビット)ずつのグループにまとめ、各グループを4つのBase64文字(それぞれ6ビット)として再エンコードすることで、これを解決します。サイズの増加は正確に33%です。3バイトごとに4文字になります。このツールは、UTF-8のテキストまたはBase64文字列をどちらの方向にも、完全にブラウザ内で変換します。atob/btoaを直接使う素朴なBase64実装が壊してしまう、マルチバイトのUTF-8文字(絵文字、非ラテン文字の表記体系)も正しく処理します。

よくある活用例

  • 小さな画像をdata: URLとしてCSSに直接埋め込む(小さなアイコンのHTTPリクエストを1つ削減できます)。

  • JWTやBasic認証ヘッダーのペイロードをデコードして、中身を確認する。

  • バイナリファイルの内容をエンコードして、JSONフィールドや環境変数に入れる。

  • 任意のバイト列を保持できないシステム(メール、コピー&ペースト)を通してバイナリデータを移動する。

  • デバッグ中にbase64エンコードされたAPI応答やWebhookのペイロードをデコードする。

  • 運用の引き継ぎのために、バイナリの認証情報をコピー&ペースト可能な形式に変換する。

よくある質問

Base64は暗号化ですか?
いいえ。Base64は可逆的なエンコーディングであり、鍵がなくても誰でも即座にデコードできます。秘匿性が必要な場合は、本物の暗号化(AES-256、RSA、または当サイトのAES暗号化ツール)を使ってください。Base64をセキュリティとして扱うのは、最もよくある誤解です。
なぜBase64はサイズが約33%増えるのですか?
エンコーディングは、入力の3バイト(24ビット)を4文字(各Base64文字が6ビットを表すため24ビット)に対応させます。このサイズのオーバーヘッドは本質的なものであり、避けられません。より小さなバイナリ表現が必要な場合は、Base85を使うか、チャネルが対応しているなら生のバイナリを送ってください。
URLセーフなBase64とは何ですか?
RFC 4648で定義されたバリアントで、+を-に、/を_に置き換えるため、パーセントエンコーディングなしでもURLのパスやファイル名に安全に含められます。JWTはURLセーフなBase64を使用します。多くのAPIはどちらのバリアントも受け付けます。
なぜ末尾に「=」が表示されるのですか?
それはパディング文字です。Base64は出力を4文字のグループ単位で出します。入力が3バイトの倍数でない場合、最後のグループは4文字になるまで「=」で埋められます。一部のBase64バリアントはパディングを省略しますが、どちらも同じようにデコードされます。
絵文字や非ラテン文字のテキストは扱えますか?
はい。このツールはまずテキストをUTF-8のバイト列に変換し、次にそのバイトをBase64にエンコードします。これにより、btoa()が非Latin1文字で失敗するという、よくあるJavaScriptのバグを回避できます。
Base64は実際のアプリのどこで見かけますか?
あらゆる場所です。CSS内の画像のdata: URL、Authorization: Basicヘッダー、JWTのセグメント、署名付きURLの署名、S3の署名付きURL、PKCS証明書(PEM形式)、メールの添付ファイル(MIME)、QRコードのペイロード、そして最新のデプロイプラットフォームの.env形式のシークレットなどです。

関連ツール