本文へ移動
ZEKILO Dev

URLエンコード・デコード

URLやクエリの値を貼り付けると、すぐにパーセントエンコードまたはデコードします。

入力はブラウザの外に出ませんRFC 3986WHATWG URL基準日 2026.10.03

入力

Escを押してからTabを押すと、入力欄から移動できます。

出力

URLエンコード・デコードの使い方

  1. 1入力欄にURLやテキストを貼り付けるか、「例を入れる」を押します。
  2. 2方向(エンコード・デコード)、範囲(コンポーネント・URL全体・フォーム)、文字コードを選ぶと、結果がすぐに変わります。
  3. 3「コピー」で結果をコピーするか、「ダウンロード」で .txt ファイルとして保存します。「入れ替え」は結果を入力に移して方向を逆にします。

URLエンコード・デコードのオプション

方向
エンコードは文字を %XX に変換し、デコードは %XX を文字に戻します。既定はエンコードです。「入れ替え」を押すと結果が入力に移り、方向が逆になります。
範囲
コンポーネント(既定)は encodeURIComponent と同じく値をまるごとエンコードし、/ ? & = も変換します。URL全体は encodeURI と同じくURLの区切り文字を残します。フォームは application/x-www-form-urlencoded の規則で空白を + と書き、デコードでは + を空白として読みます。
文字コード
UTF-8(既定)、EUC-KR(CP949)、Shift_JIS(CP932)から選びます。後の2つは、URLにUTF-8を使わない古い日本・韓国のシステム向けです。
URL分解表
入力が https:// などのスキームで始まる完全なURLのとき、プロトコル・ホスト・パスとクエリのキー・値をデコードした値で表に表示します。既定はオンです。

パーセントエンコーディングとこのツールの動作

URLに使える文字は決められたASCII文字だけです。それ以外の文字は、バイトごとに % と16進数2桁で表します。これが RFC 3986 のパーセントエンコーディングです。このツールはJavaScriptの encodeURIComponent・encodeURI と同じ結果を出します。コンポーネントの範囲では英数字と - _ . ! ~ * ' ( ) だけをそのまま残し、URL全体の範囲では ; / ? : @ & = + $ , # も残します。

フォームの範囲は WHATWG URL Standard の application/x-www-form-urlencoded の規則に従います。英数字と * - . _ だけを残し、空白は + と書きます。

URL全体の範囲でデコードするときは、%2F や %3F のように区切り文字を表すエスケープを展開せず、書かれたとおりに残します。decodeURI と同じ動作で、デコードしてもURLの構造は変わりません。

日本語URLとShift_JIS

パーセントエンコードされた文字のバイト列は、文字コードによって変わります。ゼ はUTF-8では %E3%82%BC、Shift_JISでは %83%5B です。現在はほとんどがUTF-8ですが、古い日本や韓国のシステムのURLにはShift_JISやEUC-KRが残っています。ここでのShift_JISはCP932、EUC-KRはCP949を指し、ブラウザが使う WHATWG Encoding Standard と同じ基準です。

これらの文字コードでは、文字の2バイト目がASCII文字になることがあります。たとえば キ はShift_JISで2バイトの 83 4C で、%83L と書かれます。デコードではこのようなシーケンスも正しく読み取ります。

URLエンコード・デコードの例

  • クエリの値をエンコード(既定:エンコード、コンポーネント、UTF-8)

    値の中の & と = もエンコードされるので、クエリの区切り文字と混ざりません。

    入力

    제킬로 dev&tools=1

    出力

    %EC%A0%9C%ED%82%AC%EB%A1%9C%20dev%26tools%3D1
  • URL全体をエンコード(範囲:URL全体)

    ://、/、?、= などの区切り文字はそのままにして、ハングルと空白だけを変換します。

    入力

    https://dev.zekilo.com/ko/검색?q=a b

    出力

    https://dev.zekilo.com/ko/%EA%B2%80%EC%83%89?q=a%20b
  • フォームのエンコード(範囲:フォーム)

    空白は + になります。

    入力

    a b&c=제

    出力

    a+b%26c%3D%EC%A0%9C
  • EUC-KRでエンコード(文字コード:EUC-KR)

    同じ文字はUTF-8では %EC%A0%9C%ED%82%AC%EB%A1%9C です。

    入力

    제킬로

    出力

    %C1%A6%C5%B3%B7%CE
  • 変換されない記号(コンポーネント)

    入力

    !'()*~

    出力

    !'()*~
  • 途中で切れたシーケンス(方向:デコード)

    エラーとともに、切れたシーケンスが始まる位置(1行 1列)を表示します。

    入力

    %E0%A4%A

    出力

    E_URI_MALFORMED

例は、このツールを検証している基準ケースの値です。

URLエンコード・デコードのよくある質問

入力したデータはサーバーに送信されますか?

いいえ。入力と結果はこのブラウザ内だけで処理され、保存もしません。再読み込みすると消えます。

コンポーネントとURL全体は何が違いますか?

コンポーネントは入力を1つの値として扱うので、/ ? & = # のようにURLで意味を持つ文字もエンコードします。クエリの値やパスの一部を作るときに使います。URL全体は入力を完全なURLとして扱い、区切り文字を残すので、結果もそのまま開けるURLになります。

空白が %20 になるときと + になるときの違いは何ですか?

コンポーネントとURL全体の範囲では %20 になります。フォームの範囲では + になり、HTMLフォームや多くのクエリ文字列はこの書き方です。デコードで + を空白として読むのもフォームの範囲だけです。

%8C%9F%8D%F5 のようにデコードすると文字化けするURLはどう読みますか?

UTF-8ではなくShift_JISでエンコードされたURLの可能性が高いです。方向をデコードにして、文字コードをShift_JIS(CP932)に変えてみてください。古い韓国のサイトのURLならEUC-KR(CP949)を選びます。

「不正なパーセントエンコード」のエラーはなぜ出ますか?

% の後には16進数が2桁必要で、取り出したバイト列が選んだ文字コードで正しい文字になっている必要があります。エラーには、切れたシーケンスが始まる行と列が表示されます。コピーの途中でテキストが切れたときによく起こります。

Shift_JISやEUC-KRで表現できない文字はどうなりますか?

該当する文字の数をお知らせし、文字ごとに 😀 のような数値参照をパーセントエンコードした形で出力します。ブラウザがレガシーな文字コードのページからフォームを送るときと同じ方式です。

処理方法・標準

  • 処理する場所:このブラウザ(お使いの端末)。送信も保存もしません。
  • 標準: RFC 3986 · WHATWG URL
  • エンジン: ZEKILO Dev URLエンコーダー・デコーダー (自社実装) · EUC-KR・Shift_JISの変換表(WHATWG Encoding の index から生成) (BSD 3-Clause (WHATWG))
  • レガシーな文字コードは、ブラウザの TextDecoder でデコードし、WHATWG Encoding の index から作った表でエンコードします。
  • 対になっていないサロゲートは U+FFFD(%EF%BF%BD)としてエンコードします。
  • 空の入力はエラーではありません。出力が空になるだけです。
  • 基準日 2026.10.03
  • 変更履歴: 2026.10.03 公開
オープンソースライセンス →
結果がおかしい場合は、エラーを報告する(入力内容は添付されません)