Last deploy: 2026-03-21 16:20 JST · c97e6ef

URLエンコード・デコード

日本語URLの変換・パーセントエンコーディングをリアルタイムで処理

0 文字 / 0 bytes
0 文字 / 0 bytes

URLパーサー

URLを入力するとプロトコル・ホスト・パス・クエリパラメータなどに分解します

🔒 データはサーバーに送信されません。すべてブラウザ上で処理されます。

URLエンコードとは?

URLエンコード(パーセントエンコーディング)は、URLに直接使用できない文字を %XXの形式に変換する仕組みです。 RFC 3986で定義されており、Webブラウザやサーバー間の通信で広く使われています。

たとえば日本語の「東京」は %E6%9D%B1%E4%BA%AC に変換されます。 スペースは %20、アンパサンド(&)は %26 に変換されます。 URLに安全に含められる文字(非予約文字: A-Z, a-z, 0-9, -, _, ., ~)はエンコードされません。

encodeURIとencodeURIComponentの違い

JavaScriptには2つのURLエンコード関数があり、用途によって使い分けます。

  • encodeURIComponent — クエリパラメータの値など、URLの一部をエンコードするときに使います。 : / ? # & = もエンコード対象です。 API開発でパラメータに特殊文字を含める場合はこちらが正解です。
  • encodeURI — URL全体をエンコードするときに使います。 URLの構造文字(: / ? # など)はエンコードされません。 すでにURL形式の文字列の日本語部分だけをエンコードしたい場合に適しています。

よくあるエンコードの問題

  • 二重エンコード — すでにエンコード済みの文字列を再度エンコードすると %25 が増殖します。エンコード前に一度デコードするのが安全です。
  • スペースの扱い — URLでは %20、HTMLフォームのapplication/x-www-form-urlencodedでは + になります。用途に応じて使い分けましょう。
  • 日本語ファイル名 — ファイル名に日本語を含むURLは、サーバーやCDNの設定によってはデコードに失敗することがあります。ASCII文字のファイル名を推奨します。
  • フラグメント(#)の扱い — フラグメントはサーバーに送信されません。エンコード時にフラグメントをクエリパラメータと混同しないよう注意が必要です。

URLエンコードが必要な場面

  • APIのクエリパラメータに日本語や特殊文字を含める場合
  • リダイレクトURLをパラメータとして渡す場合(URLの中にURLを含める)
  • HTMLフォームのGETリクエストでマルチバイト文字を送信する場合
  • OGPやSNSシェアURLに日本語タイトルを含める場合