URLエンコードとBase64の変換
【ご注意】このページの計算結果・情報は参考値です。正確性・最新性は保証できません。税務・法務・お金・設計・施工・安全などに関わる判断は、公式の資料と専門家の確認のうえ、ご自身の責任で行ってください。免責事項
文字列をURLエンコードとBase64の両方に変換し、逆にエンコード済みの文字列を元に戻すこともできます。変換後の長さの増え方、エンコードする記号の範囲の違いも同時に表示します。入力した文字はブラウザの中だけで処理されます。
URLエンコードとBase64の変換ツール
2つの変換の違い
URLエンコード(パーセントエンコード)は、URLで使えない文字を「%」と16進数2桁に置き換える方式です。日本語は UTF-8 のバイトごとに変換されるため、1文字が「%E6%97%A5」のように9文字になります。英数字と一部の記号はそのまま残るので、日本語を含まない文字列ならほとんど長さが変わりません。
Base64 は、あらゆるバイト列を64種類の英数字と記号だけで表す方式です。3バイトを4文字に変換するため、長さは必ず約1.33倍になります。日本語も英数字も同じ比率で増えます。画像やファイルをテキストとして埋め込むときや、メールの添付に使われます。暗号化ではありません。誰でも元に戻せるので、秘密の情報を隠す用途には使えません。
2つの方式の比較
| 項目 | URLエンコード | Base64 |
|---|---|---|
| 使う文字 | 英数字と % と一部の記号 | A-Z a-z 0-9 + / = |
| 日本語1文字 | 9文字(%XX×3) | 4文字(3バイト→4文字) |
| 英字1文字 | 1文字(そのまま) | 約1.33文字 |
| 長さの増え方 | 内容により0〜3倍 | 常に約1.33倍 |
| 主な用途 | URLのパラメータ・検索キーワード | データの埋め込み・メール添付 |
| 元に戻せるか | 戻せる | 戻せる |
| 秘匿性 | 無い | 無い(暗号化ではない) |
URLエンコードの範囲の違い
| 文字 | 厳しめ(値として使う) | ゆるめ(URL全体) |
|---|---|---|
| A-Z a-z 0-9 - _ . ! ~ * ' ( ) | そのまま | そのまま |
| : / ? # [ ] @ | %3A %2F など に変換 | そのまま(URLの区切りとして必要) |
| & = + | %26 %3D %2B に変換 | そのまま |
| 半角スペース | %20 | %20 |
| 日本語 | %XX の並び | %XX の並び |
よく見る変換の例
| 元 | URLエンコード | Base64 |
|---|---|---|
| A | A | QQ== |
| あ | %E3%81%82 | 44GC |
| 日本 | %E6%97%A5%E6%9C%AC | 5pel5pys |
| 半角スペース | %20 | IA== |
| & | %26 | Jg== |
| a=1&b=2 | a%3D1%26b%3D2 | YT0xJmI9Mg== |
※入力した文字列はお使いのブラウザの中だけで処理され、サーバーには送信されません。変換結果は参考です。正式な書類やシステムへの登録には、提出先が定める表記規則をご確認ください。
URLエンコードとBase64の変換の詳しい解説
URLエンコードは、インターネットの住所に使えない文字を安全に運ぶための仕組みです。URLで使える文字は英数字と一部の記号に限られており、日本語や空白、「&」のような区切り記号をそのまま入れると、意味が変わったり途中で切れたりします。そこで、使えない文字をいったんバイトに分解し、それぞれを「%」と16進数2桁で表します。日本語は UTF-8 で1文字が3バイトなので、「日」は「%E6%97%A5」という9文字になります。検索結果のURLが異様に長くなるのはこのためです。
エンコードする範囲には2種類あります。URL全体を扱うときは「:」「/」「?」「#」といった区切り記号を残さなければ構造が壊れるので、これらは変換しません。一方、パラメータの値として文字列を埋め込むときは、これらの記号も変換しないと区切りと誤解されます。「a=1&b=2」という文字列をひとつの値として渡したいのに「&」を残すと、2つのパラメータに分かれてしまいます。このツールは両方の範囲を選べるようにしてあり、迷ったら「厳しめ」を選んでおけば安全です。
Base64 はまったく別の目的の仕組みです。あらゆるバイト列を、A〜Z、a〜z、0〜9、「+」「/」の64種類だけで表現します。3バイトを24ビットとみなし、6ビットずつ4つに切って1文字ずつに割り当てるため、長さは必ず3分の4、およそ1.33倍になります。末尾が3バイトで割り切れないときは「=」で埋めます。もともとはメールでバイナリファイルを送るために作られた方式で、現在もWebページに小さな画像を直接埋め込むときなどに使われています。
よくある誤解が、Base64 を暗号化だと思い込むことです。Base64 は誰でも元に戻せる単純な変換であり、秘密を守る機能は一切ありません。パスワードや個人情報を Base64 にして「見えなくなった」と考えるのは危険です。実際、設定ファイルに Base64 で書かれた認証情報が漏洩する事故は繰り返し起きています。秘匿が必要なら暗号化を使い、鍵を別に管理してください。
デコードするときは形式の見分けが要ります。「%」が含まれていればURLエンコード、英数字と「+」「/」「=」だけで構成されていれば Base64 の可能性が高いといえます。このツールは両方を順に試し、成功したほうを表示します。ただし、URLエンコードの「%」の後ろが16進数2桁になっていない、Base64 の長さが4の倍数でない、といった壊れた文字列はデコードできません。その場合は元のデータを確認してください。
業界・現場での使い方
URLのパラメータ作成
検索キーワードやIDをURLに埋め込むときに、正しくエンコードしてから組み立てます。
APIへのリクエスト作成
クエリ文字列の値をエンコードし、区切り記号との衝突を防ぎます。
ログ・アクセス解析の読み取り
ログに残った %E6%97%A5 のような文字列を元の日本語に戻して確認します。
データの埋め込み
小さな画像や証明書をBase64でテキスト化し、設定ファイルやHTMLに含めます。
よくある間違い・注意点
- Base64 を暗号化だと思う — 誰でも元に戻せます。秘密の情報を隠す用途には使えません。
- URL全体を厳しめでエンコードする — 「/」や「?」まで変換されてURLの構造が壊れます。値だけを厳しめにします。
- 値の中の & をそのまま残す — パラメータの区切りと誤解され、値が途中で切れます。
- 二重にエンコードする — 「%」が「%25」になります。すでにエンコード済みかを確認します。
- Shift_JIS のままエンコードする — 現在の標準は UTF-8 です。受け取る側と食い違うと文字化けします。
関連する規格・公的資料
- Unicode コンソーシアム — Unicode の規格と文字の定義
- W3C(World Wide Web Consortium) — Web の文字コードとエンコードの標準
- WHATWG Encoding Standard — ブラウザが扱う文字エンコードの仕様
- IETF(RFC の発行元) — RFC 3986(URI)・RFC 4648(Base64)などの規格
- 日本産業標準調査会(JISC) — JIS X 0208・JIS X 0213 など日本語文字集合の規格
- 日本規格協会(JSA) — JIS 規格票の発行
- 情報処理推進機構(IPA) — 文字情報基盤と文字コードの解説
- 文化庁 — 常用漢字表・国語施策
- 外務省 — パスポートのヘボン式ローマ字表記
- 国立国語研究所 — 日本語表記の研究
- e-Gov 法令検索 — ローマ字のつづり方(昭和29年内閣告示)など
- MDN Web Docs — encodeURIComponent・TextDecoder などの仕様解説
- RFC 3986(URI の一般構文) — パーセントエンコードの規定
- RFC 4648(Base16・Base32・Base64) — Base64 の規定
- MDN encodeURIComponent — エンコード範囲の違いの解説
※本ツールは公的基準に基づく参考計算です。医療・法務・税務の判断は最新の告示・規格および専門家の判断に従ってください。
よくある質問(FAQ)
URLエンコードとは何ですか?
URLで使えない文字を「%」と16進数2桁に置き換える仕組みです。日本語1文字は %XX が3つ並んだ9文字になります。
Base64 は暗号化ですか?
違います。誰でも元に戻せる単純な変換で、秘匿性はありません。
厳しめとゆるめの違いは?
厳しめは「/」「?」「&」なども変換します。値として埋め込むときに使います。ゆるめはURL全体を扱うときです。
Base64 はどれくらい長くなりますか?
常に約1.33倍です。3バイトを4文字に変換するためです。
末尾の = は何ですか?
3バイトで割り切れないときの埋め文字です。1つまたは2つ付きます。
デコードできないのはなぜですか?
%の後ろが16進数2桁でない、Base64の長さが4の倍数でない、といった壊れた形式の可能性があります。
二重エンコードを見分けるには?
「%25」が含まれていたら、すでにエンコードされた「%」が再度変換されています。
入力した文字列は送信されますか?
送信されません。すべてブラウザの中だけで処理しています。
ログの %E6%97%A5 を日本語に戻せますか?
戻せます。向きを「エンコード済み → 文字列」にして貼り付けてください。