URLエンコード・デコードツール
無料のオンラインURLエンコード・デコードツールです。テキストやアドレス全体をパーセントエンコードし、%XX を読めるテキストに戻し、URL が実際に持っているクエリパラメーターを確認できます。変換はすべてブラウザー内で行われ、何もアップロードされません。
エンコードまたはデコード
テキスト、URL、またはパーセントエンコードされた文字列を貼り付けてください。入力と同時に変換され、何もアップロード・保存されません。
上に貼り付けると変換されます。
まだ何も変換していません。
テキストは JavaScript でローカルに変換されます。サーバーに送信されることも、記録や保存されることもありません。
URL に使える文字はごく一部です。それ以外の文字、つまりスペース、日本語、絵文字、そして & や ? のように URL の構造を決める文字は、% と各 UTF-8 バイトの16進数2桁で書く必要があります。このツールは双方向に変換し、できあがった URL を部分ごとに表示します。
主なメリット
よくある用途
使い方
- 1.向きを選ぶ。 エンコードするなら テキスト → URLエンコード、デコードするなら URLエンコード → テキスト を選びます。
- 2.何をエンコードするか決める。 クエリパラメーター1つのような単一の値なら URL全体をエンコード をオフに、使える状態を保ちたい完全なアドレスならオンにします。
- 3.入力を貼り付ける。 入力と同時に変換されます。Web アドレスなら、URL の内訳にホスト、パス、デコード済みの各パラメーターが表示されます。
- 4.コピーまたは往復確認。 結果をコピーするか、入れ替え で逆向きに変換し直して元に戻ることを確認します。
パーセントエンコーディングの基本
ルールは RFC 3986 と HTML フォームの仕様で決まっています。バグの多くは、ルールを適用する場所を取り違えることから生まれます。
%20 はスペース、%2F はスラッシュ、%E3%81%82 は「あ」の UTF-8 の3バイトです。- . _ ~ はエンコード不要です。エンコードしても構いませんが意味はありません。: / ? # [ ] @ ! $ & ' ( ) * + , ; = は URL の構造を作ります。値の中ではエンコードしないと URL の意味が変わります。encodeURIComponent は予約文字をすべてエンコードし、単一の値向けです。encodeURI は予約文字を残し、アドレス全体向けです。%20 が %2520 になります。%25 の後に16進数2桁が続いていたら、エンコード済みの値が再度エンコードされています。主な機能
- エンコードとデコードの両方に対応、往復確認用の入れ替えボタン付き
- 2つのモード:単一の値(encodeURIComponent)と URL 全体(encodeURI)
- HTML フォームと同じく、スペースを + にするオプション
- URL をスキーム、ホスト、パス、フラグメント、デコード済みパラメーターに分解
- 黙って失敗せず、不正な % の位置を表示
- 二重エンコードらしい入力には警告
- 読み込み後はオフラインでも動作。アカウントもアップロードも不要
エンコードは HTML や SQL のエスケープではありません
パーセントエンコードは値を URL の中で 安全にするだけです。HTML、JavaScript、データベースのクエリの中で安全にするものではなく、それぞれに独自のエスケープ規則があります。正しく URL エンコードされた値でも、サーバーがデコードした後にインジェクション攻撃を運ぶことがあります。
そのため、行き先に合わせてエンコードしてください。URL にはパーセントエンコード、ページには HTML エスケープ、SQL にはパラメーター化クエリを使います。データを Base64 で URL に載せる場合は URL セーフなアルファベットを使いましょう。当サイトの Base64 エンコード・デコードツール はどちらにも対応しています。
よくある質問
URLエンコードとは何ですか?⌄
URLエンコード(パーセントエンコーディング)は、URL で使えない文字を、各バイトごとに % と16進数2桁で書き表す方式です。スペースは %20 に、「あ」は UTF-8 の3バイトである %E3%81%82 になります。これにより、どんなテキストでも意味を変えずに URL に載せられます。
encodeURI と encodeURIComponent の違いは?⌄
encodeURIComponent は / ? & = を含め、URL で特別な意味を持つ文字をすべてエンコードするため、クエリパラメーターのような単一の値に適しています。encodeURI はそれらを残すので、アドレス全体がそのまま使えます。値に encodeURI を使うと、値の中の & がパラメーターを2つに分けてしまいます。
スペースは %20 と + のどちらですか?⌄
場所によってどちらも正解です。HTML フォームのクエリ文字列(application/x-www-form-urlencoded)ではスペースは + です。パスやほとんどの API ではスペースは %20 で、+ はプラス記号そのものです。迷ったら %20 が常に安全です。
URL に %2520 と表示されるのはなぜ?⌄
%25 は % 記号そのものをエンコードした形なので、%2520 は %20 をもう一度エンコードしたものです。エンコード済みの値が再度エンコードされています。2回デコードすれば元に戻るので、その後エンコードが1回だけになるようコードを修正してください。
URLエンコードは暗号化ですか?⌄
いいえ。完全に元に戻せて鍵も使わないため、誰でもデコードできます。パスワード、トークン、個人情報を URL に隠す目的で使ってはいけません。URL はログ、ブラウザー履歴、Referer ヘッダーに残ります。