本文へスキップ
App Museum
English

URLエンコード・デコードツール

URLに含める文字列をパーセントエンコード、またはエンコード済み文字列をデコード。: / ? & = を残すURL全体の変換と、空白を + で表すフォーム形式にも対応。ブラウザ内で完結。

変換の対象

使い方

  1. 上のテキストエリアに、変換したい文字列またはエンコード済みの文字列を入力します
  2. 「エンコード」を押すと、パーセントエンコードした結果が表示されます
  3. 「デコード」を押すと、%E3%81%82 のような表記を元の文字に戻します
  4. 結果の見出しの横にある「コピー」で、結果をクリップボードへコピーできます

結果の下の「入力との対応」には、入力を1文字(デコードでは %XX の1文字分)ずつ区切り、上に入力、下に変換後を並べます。変わらなかった部分はまとめて薄く表示し(長いときは前後の10文字ずつ)、空白・改行・タブは「空白」「改行」「タブ」と書きます。入力が長いときは最初の500文字までを並べます。

ボタンを押す前に、「変換の対象」で変換のしかたを選びます。

  • 「URLの部品(クエリの値など)」: 最初に選ばれています。:、/、?、&、= も含めて変換します。クエリの値やパスの1区間に使います
  • 「URL全体(: / ? & = などを残す)」: URLの区切りになる記号を残し、日本語や空白などを変換します。まだエンコードしていないURLを、リンクとして使える形にするときに選びます。エンコード済みの部分やIPv6アドレスを含むURLには向きません(「URL全体を変換する」の制限を参照)
  • 「フォーム形式(空白を + で表す)」: 空白を + で表す形式で変換します

入力を編集するか、「変換の対象」を選び直すと、前の結果は消えます。そのあとでもう一度ボタンを押してください。

具体例

「変換の対象」が最初の「URLの部品」のままの例です。

入力:

検索 ワード

「エンコード」の出力:

%E6%A4%9C%E7%B4%A2%20%E3%83%AF%E3%83%BC%E3%83%89

この文字列を入力して「デコード」を押すと、元の「検索 ワード」に戻ります。記号を含む例も挙げます。

  • a+b=c&d → a%2Bb%3Dc%26d
  • 東京 カフェ&バー → %E6%9D%B1%E4%BA%AC%20%E3%82%AB%E3%83%95%E3%82%A7%26%E3%83%90%E3%83%BC
  • 😀 → %F0%9F%98%80

エンコードされる文字・されない文字

「URLの部品」を選んでいるとき、このアプリはJavaScriptの encodeURIComponent と decodeURIComponent をそのまま使います。エンコードでは、次の文字だけがそのまま残ります。

  • 半角の英字と数字
  • -、_、.、~
  • !、*、'、(、)

それ以外の文字は、UTF-8のバイト列にしたうえで、1バイトごとに % と2桁の16進数(大文字)で表します。ひらがなや漢字の多くは1文字が3バイトになるため、%XX が3つ並びます。半角空白は %20、改行は %0A です。

URLの中で区切りの役割を持つ :、/、?、#、&、=、+ もすべてエンコードされます。そのため、この選択肢は、クエリの値やパスの1区間など、URLの「部品」に対して使います。リンクとして使うURLをまるごと変換するときは「URL全体」を選びます。

フォーム形式

「フォーム形式(空白を + で表す)」を選ぶと、HTMLのフォームが送信するときの形式(application/x-www-form-urlencoded)で変換します。「URLの部品」との違いは次のとおりです。

  • 半角空白: 「URLの部品」では %20、フォーム形式では +
  • +: どちらも %2B
  • !、'、(、): 「URLの部品」ではそのまま、フォーム形式では %21、%27、%28、%29
  • ~: 「URLの部品」ではそのまま、フォーム形式では %7E
  • *、-、.、_: どちらもそのまま

東京 cafe bar+1 をフォーム形式でエンコードすると %E6%9D%B1%E4%BA%AC+cafe+bar%2B1 になります。そのまま残る文字は、半角の英字と数字、*、-、.、_ だけです。これはJavaScriptの URLSearchParams が値を書き出すときの結果と同じです。

デコードでは、+ を空白として読んでから、%XX を元の文字に戻します。%E6%9D%B1%E4%BA%AC+cafe%20bar%2B1 は 東京 cafe bar+1 になります。%20 も空白として読むので、両方の表記が混ざっていても問題ありません。

読み取れない入力の扱いは、ブラウザやJavaScriptの URLSearchParams と異なります。それらは %ZZ をそのまま残し、途中で切れたUTF-8のバイト列を「�」(U+FFFD)に置き換えて処理を続けますが、このアプリはほかの選択肢と同じくエラーを表示します。たとえば 100%+off は、URLSearchParams では 100% off になり、このアプリではエラーになります。

フォーム形式でも、変換するのはクエリの名前や値といった「部品」です。name=value&name2=value2 のような全体を入力すると、エンコードでは = と & も %3D と %26 に変換されます。

改行は、どの選択肢でも %0A になります。ブラウザがフォームを送信するときは改行を %0D%0A にそろえますが、このアプリは入力にない文字を足しません。

URL全体を変換する

「URL全体」を選ぶと、このアプリはJavaScriptの encodeURI と decodeURI をそのまま使います。https://example.com/?q=検索 ワード をエンコードすると、次の結果になります。

https://example.com/?q=%E6%A4%9C%E7%B4%A2%20%E3%83%AF%E3%83%BC%E3%83%89

エンコードでは、「URLの部品」で残る文字に加えて、URLの区切りになる次の記号もそのまま残ります。

  • ;、/、?、:、@、&、=、+、$、,、#

同じURLを「URLの部品」でエンコードすると、次のように :// や ?、= まで変換され、リンクとして開けなくなります。

https%3A%2F%2Fexample.com%2F%3Fq%3D%E6%A4%9C%E7%B4%A2%20%E3%83%AF%E3%83%BC%E3%83%89

https:// のように、スキームと // で始まる文字列を「URLの部品」または「フォーム形式」でエンコードしたときは、結果の下に、リンクとして開けないことを知らせる注記が出ます。別のURLをクエリの値として渡す場合(リダイレクト先の指定など)は、URL全体を「URLの部品」でエンコードするのが正しい使い方です。その場合は、注記が出ていても結果をそのまま使ってください。

「URL全体」のエンコードには、次の制限があります。

  • 値の中にある &、=、+、# は、区切りの記号と見分けられないので変換されません。Q&A のように値が記号を含むときは、値だけを「URLの部品」でエンコードしてから、URLにつなげてください
  • % は %25 になります。https://example.com/%E6%9D%B1 のようにエンコード済みの部分があるURLは、https://example.com/%25E6%259D%25B1 と二重にエンコードされます
  • [ と ] は %5B と %5D になります。http://[::1]/ のようにIPv6アドレスを含むURLは http://%5B::1%5D/ になり、開けなくなります
  • ホスト名の日本語もパーセントエンコードされ、https://日本語.jp/ は https://%E6%97%A5%E6%9C%AC%E8%AA%9E.jp/ になります。xn-- で始まる表記(Punycode)にはなりません。URLの標準(WHATWG URL)に従って読む側は、この表記を xn--wgv71a119e.jp に直して扱うので、リンクとしては使えます

「URL全体」のデコードは、区切りの記号を表す %3B、%2F、%3F、%3A、%40、%26、%3D、%2B、%24、%2C、%23 を元の記号に戻さず、そのまま残します。https://example.com/search?q=%E6%9D%B1%E4%BA%AC%26%E5%A4%A7%E9%98%AA&lang=ja をデコードした結果は、選択肢によって次のように変わります。

  • 「URL全体」: https://example.com/search?q=東京%26大阪&lang=ja
  • 「URLの部品」: https://example.com/search?q=東京&大阪&lang=ja

「URLの部品」の結果では、値の中の & と、項目を区切る & の見分けがつきません。URLを読める形にしたいときは「URL全体」を選びます。値を1つだけ入力して元の文字列に戻したいときは「URLの部品」を選びます。

フォーム形式のデコードは、入力にあるすべての + を空白として読みます。URL全体を入力すると、パスにある + まで空白になり、https://example.com/a+b?q=x+y は https://example.com/a b?q=x y になります。フォーム形式でデコードするときは、クエリの名前や値を1つずつ入力してください。

記号ごとの扱いは、ガイド「URLエンコードで特殊文字を正しく扱う方法」で詳しく説明しています。

デコードでエラーになる場合

次の入力はデコードできず、ブラウザが返すエラーメッセージ(英語)が赤字で表示されます。「変換の対象」でどれを選んでいても同じです。

  • % のあとに2桁の16進数が続いていない。100% や %ZZ が該当します。文字としての % は %25 と書きます
  • %E3%81 のように、UTF-8の1文字分のバイト列が途中で切れている
  • Shift_JISやEUC-JPでエンコードされている。%93%8C%8B%9E はShift_JISの「東京」ですが、UTF-8としては読み取れません

%e3%81%82 のように16進数が小文字でもデコードできます。

注意点

  • 「URLの部品」と「URL全体」のデコードでは + を空白に変換しません。%E6%9D%B1%E4%BA%AC+cafe%20bar%2B1 を「URLの部品」でデコードすると 東京+cafe bar+1 になります。フォーム送信の形式で空白が + になっている文字列は、「フォーム形式」を選んでデコードしてください
  • 受け取る側がどちらの形式で読むかを確かめてから選んでください。URLのパスでは + は空白として読まれないので、パスに入れる文字列は「URLの部品」でエンコードします
  • エンコード済みの文字列をもう一度エンコードすると、どの選択肢でも % が %25 になります。%E3%81%82 は %25E3%2581%2582 になり、1回のデコードでは元の文字に戻りません。二重にエンコードしていないかを確認してください
  • 入力した文字列やURLは、ブラウザの中で変換されるだけです。入力したURLへアクセスすることも、外部へ送信することもありません

FAQ

スペースが %20 になります。+ にできますか?

できます。「フォーム形式(空白を + で表す)」を選んでからエンコードしてください。+ はフォーム送信(application/x-www-form-urlencoded)で使われる表記で、「URLの部品」と「URL全体」では %20 になります。

+ が空白に戻りません

「URLの部品」と「URL全体」のデコードは、+ をプラス記号のまま残します。検索ページのURLのように空白が + で書かれている文字列は、「フォーム形式」を選んでデコードしてください。

+ をエンコードするとどうなりますか?

「URLの部品」と「フォーム形式」では %2B になります。「URL全体」では + のまま残ります。クエリの値に + をそのまま書くと受け取る側で空白として扱われることがあるため、値に含まれる + はエンコードしておくと安全です。

URL全体をエンコードしても大丈夫ですか?

「URL全体」を選べば、:// や ?、&、= を残したまま、日本語や空白などを変換できます。「URLの部品」のままエンコードすると、これらの記号も変換されて、リンクとして開けなくなります。

encodeURI と encodeURIComponent のどちらと同じですか?

「URLの部品」が encodeURIComponent、「URL全体」が encodeURI と同じ結果になります。デコードも、それぞれ decodeURIComponent と decodeURI です。

日本語のURLをコピーすると %E3%81... になるのはなぜですか?

URLに使える文字が限られているため、ブラウザが日本語の部分をパーセントエンコードした形でコピーするからです。このアプリで「URL全体」を選んでデコードすると、読める形に戻せます。

Shift_JISでエンコードされたURLをデコードできますか?

できません。UTF-8のバイト列だけを扱います。

入力したデータは保存されますか?

いいえ。入力したURLや文字列を記録する仕組みはありません。再読み込みすると入力欄は空に戻ります。

種別
ユーティリティ
カテゴリ
開発者向け
タグ
url
encode
decode
developer
converter
  • URLエンコードで特殊文字を正しく扱う方法

    URL全体とクエリ値を区別し、空白、プラス、パーセントなどを二重エンコードせず安全に変換・確認する手順を解説します。

    開発者向けurlpercent-encodingquery-parameterencodedecode
  • Base64エンコード・デコードツール

    テキストやファイル(画像など)をBase64にエンコード、Base64をテキストやファイルにデコード。data URLとURLセーフ形式(Base64URL)にも対応。UTF-8対応でブラウザ内処理。

    ユーティリティ開発者向けbase64base64urldata-urlimagefileencodedecodedeveloperconverter
  • Punycode変換ツール(日本語ドメイン⇔xn--)

    日本語ドメイン名と「xn--」で始まるPunycodeの表記を、どちら向きでも1行ずつ変換。URLやメールアドレスはドメイン名だけを変換し、全角・大文字の整理、使えない文字、文字種の混在によるなりすましの疑いも表示します。

    ユーティリティ開発者向けpunycodeidndomainurlemailconverterdevelopersecurity