URLエンコード・デコード
%E3%81%82 のような URL を読みたいとき、日本語を含むパラメータを作りたいとき、長い URL のどこに何が入っているか確認したいときに。
🔒 入力内容はお使いのブラウザ内だけで処理され、サーバーには送信されません。
文字列か URL を入力して、ボタンを押してください。
URL を部品に分解
| スキーム | |
|---|---|
| ユーザー情報 | |
| ホスト | |
| ポート | |
| パス | |
| パス(デコード) | |
| クエリ | |
| フラグメント |
| 名前 | 値(デコード済み) |
|---|
使い方
- 上の欄に、エンコードしたい文字列(日本語の検索語など)か、デコードしたい URL を入れます。
- 方式を選びます。パラメータの値を作るなら「encodeURIComponent」、URL 全体をまとめて扱うなら「encodeURI」、フォーム送信やスペースが
+になっている URL なら「フォーム形式」です。 - 「エンコード」または「デコード」を押すと結果が出ます。「結果を入力欄へ」で、結果をさらに変換することもできます。
- 長い URL の中身を確認したいときは、下の「URL を部品に分解」に URL を入れて「分解する」を押します。パラメータを表で編集して「URL を組み立て直す」と、新しい URL ができます。
変換の決まり
| 方式 | エンコードしない文字 | スペース | 用途 |
|---|---|---|---|
| encodeURIComponent | A-Z a-z 0-9 - _ . ! ~ * ' ( ) |
%20 |
クエリパラメータの値、パスの一部 |
| encodeURI | 上に加えて ; , / ? : @ & = + $ # |
%20 |
URL 全体(すでに構造が決まっているもの) |
| フォーム形式 | A-Z a-z 0-9 - _ . * |
+ |
HTML フォームの送信データ、検索エンジンのクエリ |
- 文字コードは UTF-8 です。「あ」は
%E3%81%82になります。 - デコードは3方式とも
%XXを UTF-8 として戻します。「フォーム形式」のときだけ+をスペースに戻します。 %の後ろが16進数2桁でない場合や、UTF-8 として正しくないバイト列はエラーとして位置を表示します。- URL の分解はブラウザの URL 解析(WHATWG URL)に従います。スキームのない入力は
https://を補って解釈します。
こんな時に
- アクセス解析やサーバーログに記録された
%E6%9D%B1%E4%BA%ACのような URL が何を表しているか知りたいとき - 検索フォームやリンクに日本語のパラメータを埋め込みたいとき
- 広告用の長い URL(utm_ パラメータなど)の中身を確認し、一部だけ書き換えたいとき
- API に渡す値に
&や=が含まれていて、正しくエンコードされているか確かめたいとき
注意
パスワードやトークンを含む URL を分解するときは、作業後に「クリア」を押してください。このツールはブラウザ内だけで処理し、入力した URL をサーバーへ送ることはありませんが、画面に表示されたままになります。
よくある質問
encodeURIComponent と encodeURI はどう使い分けますか?
パラメータの値(?q= の後ろなど)に入れる文字列は encodeURIComponent です。/ ? & = もすべてエンコードするため、値の中にこれらが含まれても壊れません。URL 全体をまとめてエンコードしたいときだけ encodeURI を使います。こちらは / ? & = : # などをそのまま残します。
デコードしたら文字化けしました
このツールは UTF-8 として復元します。古いサイトやシステムでは Shift_JIS や EUC-JP でエンコードされた URL(%82%A0 のような2バイトの並び)があり、それらは UTF-8 では正しく戻せません。% の後ろが不正な並びの場合はエラーを表示します。
スペースは %20 と + のどちらが正しいですか?
URL のパスやパラメータでは %20 が標準です。+ は HTML フォームの送信形式(application/x-www-form-urlencoded)でスペースを表す書き方で、クエリ文字列(? の後ろ)でだけ通用します。フォーム送信や検索エンジンの URL を扱うなら「フォーム形式」を選んでください。
URL を分解したときにパラメータの順番は変わりますか?
変わりません。入力した順番のまま表にし、組み立て直すときも同じ順番にします。同じ名前のパラメータが複数ある場合も、すべて別の行として扱います。