utilduck
Home · 開発 · URLエンコード/デコード

URLエンコード/デコード

テキストまたはURLコンポーネントを貼り付け、エンコードまたはデコードを選ぶと結果がすぐに出ます。

結果
-

URLエンコードとは

URLに使える文字は限られたASCII文字だけです。スペース・アンパサンド・非ASCII文字はパーセントエンコードが必要で、パーセント記号と2桁の16進数に置き換えられます。例えばスペースは%20、äは%C3%A4になります。

このツールは文字・数字および- _ . ! ~ * ( )以外のすべてをエンコードするencodeURIComponentを使います。URL全体ではなくクエリパラメータ値やパスセグメントをエンコードする際に適切な関数です。

URLコンポーネントをパーセントエンコードする方法

URLで使うテキストをパーセントエンコードするには、非予約文字(英数字・- _ . ! ~ * ' ( ))以外のすべての文字を、UTF-8バイト値を表すパーセント記号と16進数2桁に置き換えます。例: 「hello world」は「hello%20world」、「café」は「caf%C3%A9」になります。

URLコンポーネントをパーセントエンコード・デコードする手順

  1. 入力テキストをUTF-8バイトに変換します。非ASCII文字は複数バイトで表されることがあります。
  2. 各バイトを調べ、非予約文字(A-Z, a-z, 0-9, - _ . ! ~ * ' ( ))に該当すればそのままにします。
  3. それ以外のバイトはパーセント記号と大文字16進数2桁に置き換えます。例えば空白(0x20)は%20になります。
  4. 結果をつなげると、元のテキストのパーセントエンコードされたURLセーフな表現が完成します。
  5. デコードするときは%の後の16進数2桁を探して各バイト値に戻し、UTF-8バイトを再構成して元のテキストを復元します。

パーセントエンコードのルール

予約・非安全バイト -> %XX(XXはそのバイト値を表す大文字16進数2桁)
  • 非予約文字 = A-Z, a-z, 0-9, - _ . ! ~ * ' ( ) — エンコードしない
  • %XX = 元の文字のUTF-8エンコーディングのうち1バイトを表すパーセント記号+16進数2桁

エンコード結果の例

テキストエンコード結果
hello worldhello%20world
a=b&c=da%3Db%26c%3Dd
cafécaf%C3%A9
100% off!100%25%20off!
user@example.comuser%40example.com

よくある質問

encodeURIComponentはなぜ! ~ * ' ( )をエンコードしないのですか?

これらの文字は、英数字や- _ .と共にURIコンポーネント内でそのまま使っても安全で特別な意味を持たないと定義されているため、JavaScriptのencodeURIComponentはそのまま残します。encodeURIのような関数はコンポーネント1つではなくURL全体をエンコードするためのものなので、より広い予約文字の集合を別に扱います。

URLコンポーネントのエンコードとURL全体のエンコードはどう違いますか?

クエリパラメータの値のようなコンポーネント1つだけをエンコードするときは、&や=のようなURL構造と誤解されうる文字をエスケープする必要があります。URL全体をエンコードするときは:, /, ?, &のような構造文字をそのまま残さないとURLが正しくパースされないため、encodeURIComponentとencodeURIは異なる動作をします。

空白がある時は%20、ある時は+になるのはなぜですか?

%20はURLパスやencodeURIComponentの出力で使われる一般的な空白のパーセントエンコードです。+で空白を表す方式は、HTMLフォーム送信やクエリ文字列で使われるapplication/x-www-form-urlencoded形式特有の慣習であり、一般的なURLエンコードのルールではありません。

一部の入力をデコードするとエラーになるのはなぜですか?

%の後に有効な16進数2桁が続かない場合や、デコードされたバイトが有効なUTF-8を形成しない場合にエラーになります。例えば%E2%9のように最後のバイトが欠けた不完全なパーセントシーケンスを貼り付けると失敗します。入力が完全で正しくパーセントエンコードされているか確認してください。

このツールはJavaScriptのencodeURIComponent・decodeURIComponentでテキスト値を1つエンコード・デコードし、RFC 3986の非予約文字基準に従います。URL全体の構造(スキーム・ホスト・パス・クエリ)を要素ごとにパース・検証することはしません。

Sources: RFC 3986 - 統一資源識別子(URI)汎用構文

プライバシーと安全性

  • ブラウザ内で計算 — 入力した値はお使いの端末内だけで計算され、utilduckのサーバーへ送信されません。
  • 暗号化された通信 — すべてのページはHTTPSで配信され、通信経路で内容を読み取られません。
  • 第三者へ渡しません — 入力内容は解析・広告サービスへ渡されません。
  • 保存しません — 計算結果をサーバーに保存せず、アカウント登録も不要です。

最終更新: 2026-08-17