Base64URLとBase64の違い|文字・Padding・変換方法を比較

この記事の要点

Base64とBase64URLをすぐに変換

形式とPaddingを選び、ブラウザ内で安全に変換できます。

Base64変換ツールを使う

Base64URLとBase64の違い

Base64URLは、標準Base64をURLやファイル名で安全に扱えるよう調整した形式です。データを6ビット単位で文字へ置き換える基本的な仕組みは同じですが、URLで特別な意味を持ちやすい+/を使いません。

比較項目標準Base64Base64URL
文字62+-
文字63/_
Padding=を付けるのが一般的省略する仕様が多い
主な用途メール、Data URL、一般的なデータ交換URL、JWT、ファイル名、Web API

使用文字が異なる理由

URLでは+が空白として扱われることがあり、/はパスの区切りとして使われます。そのままURLへ含めると、URLエンコードが必要になったり、受け取り側で別の意味に解釈されたりします。

Base64URLは+-へ、/_へ置き換えるため、クエリ、パス、Cookie、ファイル名などへ組み込みやすくなります。

Padding「=」の扱い

標準Base64は出力を4文字単位にそろえるため、末尾に=または==を付けます。Base64URLではURLを短くし、=の扱いによる問題を避けるため、Paddingを省略する仕様が多くあります。

省略ルールは仕様ごとに確認

Base64URLだから必ずPaddingなし、とは限りません。JWTなど対象の仕様に従い、受け取り側が省略を許容するか確認してください。

Base64とBase64URLを相互変換する方法

標準Base64からBase64URLへ

  1. +-へ置き換えます。
  2. /_へ置き換えます。
  3. 仕様に応じて末尾の=を削除します。

Base64URLから標準Base64へ

  1. -+へ置き換えます。
  2. _/へ置き換えます。
  3. 文字数が4の倍数になるまで末尾へ=を補います。
変換例

標準Base64:++//
Base64URL:--__

用途による使い分け

利用場面推奨形式理由
Data URL標準Base64一般的なData URLの形式に合わせる
メール添付標準Base64MIMEの仕様で広く利用される
JWTBase64URLURLで安全な文字とPaddingなしを使用する
URLパラメータBase64URL追加のURLエンコードを減らせる
ファイル名Base64URLパス区切りの/を含まない

よくあるエラーと確認点

よくある質問

Base64URLは標準Base64と互換性がありますか?

文字の置換とPaddingの補完を行えば相互変換できますが、そのままでは別形式として扱われる場合があります。

Base64URLではPaddingを必ず省略しますか?

必ずではありませんが、多くの仕様では末尾のPaddingを省略します。利用する仕様に従ってください。

JWTは標準Base64を使いますか?

JWTはURLで安全に扱えるBase64URLを使い、通常はPaddingを付けません。

Base64URLは暗号化ですか?

いいえ。Base64URLもエンコード方式であり、内容を秘密にする機能はありません。