言語選択

テキストをBase64にエンコード|URL安全・パディング調整対応

テキストをブラウザ内でBase64エンコード。URL安全アルファベットやパディング省略にも対応。

Mehmet Demiray 公開日 更新日
共有
URL用に - と _ を使用し、= のパディングを省略します
76文字ごとに改行を挿入します

Base64エンコードとは何か

Base64エンコードは、バイナリデータをテキスト形式に変換するための標準的な手法です。インターネット上で画像や音声などのバイナリデータを安全に送信・保存するために広く使われています。この方式では、任意のバイト列をA~Z、a~z、0~9、および記号「+」と「/」の計64文字で表現します。日本語を含むUnicodeテキストも、まずUTF-8でバイト列に変換されたうえでBase64エンコードされるため、国際的な互換性が保たれます。たとえば、「こんにちは」という文字列はUTF-8で5バイトになり、Base64エンコードすると「44GT44KT44Gr44Gh44Gv」となります。重要なのは、Base64エンコードは暗号化ではありません。元のデータを復元するのは容易であり、セキュリティ目的での使用は不適切です。このエンコード処理はブラウザ内で完結し、サーバーにデータが送信されることはありません。CallculationのBase64エンコードツールを使えば、手軽にテキストをBase64形式に変換できます。復号が必要な場合はBase64デコード機能もご活用ください。

Base64エンコードの仕組み

Base64エンコードは、3バイト(24ビット)の入力データを4つの6ビット単位に分割し、それぞれを64文字アルファベットのいずれかに対応させる仕組みです。このため、出力サイズは入力の約33.3%増加し、正確には43\frac{4}{3}倍になります。たとえば、3バイトのデータ「ABC」は「QUJD」とエンコードされます。入力データのバイト数が3の倍数でない場合、不足分はゼロで埋められ、末尾にパディングとして「=」記号が1つまたは2つ追加されます。具体的には、入力が3n+1バイトなら「==」、3n+2バイトなら「=」が付きます。これはRFC 4648で定められた標準です。日本語のようなマルチバイト文字も、UTF-8エンコード後にこのルールに従って処理されるため、一貫した結果が得られます。たとえば、「東京」(UTF-8で6バイト)は「5pel5pys」となり、パディングは不要です。一方、「渋谷」(UTF-8で6バイト)も同様にパディングなしですが、「新宿区」(9バイト)も3の倍数なので「=」は付きません。パディングの有無は入力長に完全に依存します。必要に応じてパディングを省略するオプションも提供されています。詳細はBase64デコードをご参照ください。

標準Base64とURL-safe Base64の違い

標準のBase64アルファベットには「+」と「/」が含まれますが、これらはURLやファイル名で特別な意味を持つため、そのまま使用すると問題が生じます。たとえば、「+」はURLエンコードでスペースを表すことがありますし、「/」はパス区切り文字として解釈される可能性があります。これを避けるため、RFC 4648ではURL-safeな代替アルファベットが定義されています。ここでは「+」の代わりに「-」(ハイフン)、「/」の代わりに「_」(アンダースコア)を使用します。例えば、標準Base64で「a+b/c=」となるデータは、URL-safeでは「a-b_c=」になります。この変更により、Base64文字列をクエリパラメータやJWT(JSON Web Token)の一部として安全に扱えるようになります。日本のWeb開発者も、API設計やOAuthトークン生成の際にこの形式を頻繁に利用しています。CallculationのBase64エンコードツールでは、ワンクリックでURL-safeモードを有効にできます。ただし、URL-safeであってもパディングの「=」はURLで問題になることがあるため、必要に応じてパディングを省略する設定も併用可能です。関連してURLエンコードとの違いも理解しておくと役立ちます。

Base64エンコードの主な用途

Base64エンコードは、バイナリデータをテキストベースのプロトコルで扱う必要がある場面で広く活用されています。代表例の一つがData URIです。HTMLやCSS内で画像を直接埋め込む際、data:image/png;base64,...のように記述することで、外部ファイルへのHTTPリクエストを減らし、ページ読み込みを高速化できます。特に日本のモバイルサイトでは、接続の不安定さを考慮してこの手法が好まれることがあります。もう一つの用途はHTTP Basic認証です。ユーザー名とパスワードを「user:pass」の形式で連結し、Base64エンコードしてAuthorization: Basic ...ヘッダーに含めます。ただし、これは暗号化ではないため、HTTPSとの併用が必須です。メール添付(MIME)でも、バイナリファイルをテキストメールに埋め込むためにBase64が使われます。さらに、JSON APIでバイナリデータ(例:サムネイル画像)を送信する際も、Base64エンコードが一般的です。これらの用途では、文字セットの互換性と改行の影響を避けるため、Base64が理想的です。ファイル全体をエンコードしたい場合はファイルをBase64に変換機能をご利用ください。逆変換が必要な場合はBase64をファイルに変換も参照してください。

よくある質問:Base64エンコードについて

Base64エンコードは暗号化ですか?いいえ、Base64エンコードはデータの可読性を下げるものではなく、暗号化でもありません。誰でも簡単に元のデータを復元できるため、機密情報の保護には使えません。Unicodeテキスト(例:日本語)を安全にエンコードするには?UTF-8でバイト列に変換してからBase64化するのが標準的で、Callculationのツールは自動的にこの処理を行います。「東京」や「令和6年」などの文字も正しく処理されます。URL-safeバリアントはいつ使うべきですか?URLのクエリパラメータ、JWT、ファイル名などにBase64文字列を含める場合に使用します。特にAPI連携やOAuth 2.0の実装では必須となることが多いです。出力の末尾に「=」や「==」が付くのはなぜですか?これはパディングで、入力バイト数が3の倍数でない場合にアルゴリズムの整合性を保つために追加されます。1バイト余りなら「==」、2バイト余りなら「=」が付きます。必要に応じてツールのオプションでパディングを省略できますが、互換性に注意が必要です。復号についてはBase64デコードをご覧ください。

最もよくいただく質問

Base64エンコードは暗号化と同じですか?

いいえ、Base64エンコードは暗号化ではありません。これはバイナリデータをテキスト形式に変換するためのエンコーディング方式で、誰でも簡単に元のデータに戻せます。機密情報を守る目的には向かず、Base64デコードで即座に復元可能です。

日本語などのUnicodeテキストを安全にBase64エンコードできますか?

はい、問題なくエンコードできます。このツールは入力されたテキストをUTF-8でまずバイト列に変換し、その後Base64エンコードします。そのため、日本語や絵文字なども正しく処理され、デコード時に元の文字が再現されます。

URL-safeなBase64を使うべきタイミングはいつですか?

URLやファイル名にBase64文字列を含める場合にURL-safeモードをご利用ください。標準のBase64では「+」と「/」が使われますが、これらはURLで特別な意味を持つため、代わりに「-」と「_」を使うURL-safeアルファベット(RFC 4648準拠)が推奨されます。

出力結果の末尾に「=」が1つまたは2つ付くのはなぜですか?

Base64は3バイトの入力を4文字に変換します。入力データのバイト長が3で割り切れない場合、不足分を補うためにパディングとして「=」が末尾に追加されます。1バイト不足なら「=」が2つ、2バイト不足なら「=」が1つ付きます。必要に応じてパディングを省略することも可能です。

Base64エンコード後のデータサイズはどのくらい増えますか?

Base64エンコードすると、元のデータサイズの約33.3%増しになります。正確には、3バイトが4文字になるため、サイズは133.3%(つまり[frac=4,3]倍)になります。たとえば、300 byteのテキストはエンコード後400 byte程度になります。

ブラウザ上でエンコードしたデータは外部に送信されますか?

いいえ、一切送信されません。このBase64エンコードツールはすべての処理をブラウザ内で完結させ、サーバーへの通信や外部送信は行いません。プライバシーとセキュリティを重視して設計されており、機密性の高いデータも安心してお使いいただけます。

Base64エンコードとURLエンコードの違いは何ですか?

Base64エンコードはバイナリデータをテキストに変換するのに対し、URLエンコード(パーセントエンコーディング)はURL内で使用できない文字を「%」記号付きの16進数に置き換えます。用途が異なり、Base64はデータ埋め込み(例:Data URI)に、URLエンコードはクエリパラメータの安全な伝達に使われます。詳細はURLエンコードをご参照ください。