Base64 と URL エンコードの違い

Base64 はバイト列をテキストとして表し、URL エンコードは URL の特定部分で文字を安全に扱うための仕組みです。

Base64 と URL エンコードはどちらも「エンコード」ですが、置き換え可能なものではありません。Base64 はバイト列をテキストとして表します。URL エンコードは、URL の特定部分で文字を安全に扱えるようにします。

間違った方式を使うと、値は一見エンコードされているように見えても、置いた場所で壊れます。

Base64 はバイト列を表す

Base64 はバイナリデータをテキストの alphabet に変換します。テキストしか扱えない場所へバイト列を運びたいときに便利です。

よくある例:

  • 小さなバイナリ値を JSON に入れる
  • Base64URL を使う token segment を確認する
  • テキスト中心の経路でバイト列を運ぶ
  • 小さな asset を data URL にする

質問が「この Base64 値はどんなバイト列や文字列を表しているか」なら、Base64 のデコードが適しています。

URL エンコードは URL の文脈を守る

URL エンコードは、URL の中で構造上の意味を持つ文字をデータとして扱えるようにします。たとえば query value に & を含めたい場合、そのままでは別の parameter 区切りとして解釈される可能性があります。

この場合は Base64 ではなく、query value として percent-encoding する必要があります。

使い分け

  • バイト列をテキスト化したい: Base64
  • URL の一部に安全に文字列を入れたい: URL エンコード
  • JWT の segment を読む: 多くの場合 Base64URL
  • OAuth redirect_uri を query value に入れる: URL エンコード

両方が同時に出てくることもあります。たとえば Base64URL で表された token を URL に入れる場合、値の意味と URL 内での位置を分けて考えると安全です。

関連ツール

この記事で使うツール

Base64 Encoder / Decoder 日本語ツールbase64 / encode / decodeURL Encoder / Decoder 日本語ツールurl / uri / encode

関連コース

Base64 Course 日本語ガイド日本語の base64 ガイド: Learn Base64 encoding from first principles: binary-to-text, padding, URLs, and common pitfalls.URL Encoding Course 日本語ガイド日本語の url encoding ガイド: Understand percent-encoding, query strings, and the difference between encodeURI and encodeURIComponent.

記事一覧へ戻る