本文へスキップ
App Museum
English

URL分解・クエリパラメータ解析ツール

URLをスキーム・ホスト名・ポート・パス・クエリ文字列・フラグメントに分解し、クエリパラメータをデコードして一覧にします。utm_source などの計測用パラメータを除いたURLを作れるほか、パラメータを書き換え・追加・削除してURLを組み立て直せます。ブラウザ内で完結。

「?」から後ろのクエリ文字列だけ(?q=abc&page=2)を貼り付けても、パラメータを読み取れます

正規化したURL

https://example.com:8080/docs/%E3%82%AC%E3%82%A4%E3%83%89?q=%E6%A4%9C%E7%B4%A2%20%E3%83%AF%E3%83%BC%E3%83%89&page=2&utm_source=newsletter#section-1

URLの各部分

スキーム
https
ホスト名
example.com
ポート
8080
パス
/docs/%E3%82%AC%E3%82%A4%E3%83%89
パス(デコード後)
/docs/ガイド
クエリ文字列
?q=%E6%A4%9C%E7%B4%A2%20%E3%83%AF%E3%83%BC%E3%83%89&page=2&utm_source=newsletter
フラグメント
#section-1
オリジン
https://example.com:8080

クエリパラメータ(3件)

名前値
q検索 ワード
page2
utm_sourcenewsletter

計測用パラメータを除いたURL

https://example.com:8080/docs/%E3%82%AC%E3%82%A4%E3%83%89?q=%E6%A4%9C%E7%B4%A2%20%E3%83%AF%E3%83%BC%E3%83%89&page=2#section-1

除いたパラメータ: utm_source

使い方

  1. 「URL」の欄に、調べたいURLを貼り付けます
  2. 下に、正規化したURL、URLの各部分、クエリパラメータの一覧が表示されます
  3. utm_source などの計測用パラメータが含まれているときは、それを除いたURLもいちばん下に表示されます
  4. パラメータを書き換えたいときは、「パラメータを編集」を押します。名前と値を書き換えたり、行を削除・追加したりすると、組み立て直したURLが表示されます

ボタンを押す必要はありません。入力を変えるたびに、結果がその場で変わります。ページを開いた時点では、例のURLが入っています。

「パラメータをJSONでコピー」を押すと、クエリパラメータの名前と値が JSON としてクリップボードに入ります。「このURLをコピー」は、計測用パラメータを除いたURLをコピーします。

入力できる形式

  • https://example.com/path?key=value#top — スキームから始まるURL
  • example.com/path?key=value や localhost:3000/api — スキームのないURL。先頭に https:// を補って読み取り、その旨を結果に表示します
  • ?q=abc&page=2 や q=abc&page=2 — クエリ文字列だけ。この場合はクエリパラメータの一覧だけを表示します
  • mailto:someone@example.com?subject=Hello — ホスト名を持たないURL

前後の空白と改行は無視します。

具体例

ページを開いたときに入っている次のURLを例にします。

https://example.com:8080/docs/ガイド?q=検索 ワード&page=2&utm_source=newsletter#section-1

URLの各部分は次のように表示されます。

スキーム            https
ホスト名            example.com
ポート              8080
パス                /docs/%E3%82%AC%E3%82%A4%E3%83%89
パス(デコード後)  /docs/ガイド
クエリ文字列        ?q=%E6%A4%9C%E7%B4%A2%20%E3%83%AF%E3%83%BC%E3%83%89&page=2&utm_source=newsletter
フラグメント        #section-1
オリジン            https://example.com:8080

クエリパラメータは、デコードした名前と値の一覧になります。

q            検索 ワード
page         2
utm_source   newsletter

「パラメータをJSONでコピー」でコピーされる内容です。

{
  "q": "検索 ワード",
  "page": "2",
  "utm_source": "newsletter"
}

utm_source が計測用パラメータなので、それを除いたURLも表示されます。

https://example.com:8080/docs/%E3%82%AC%E3%82%A4%E3%83%89?q=%E6%A4%9C%E7%B4%A2%20%E3%83%AF%E3%83%BC%E3%83%89&page=2#section-1

URLの各部分

  • スキーム — https や http など、先頭の : の前の部分です。通信の方法を表します
  • ユーザー名・パスワード — https://user:pass@example.com/ のように、ホスト名の前に @ で区切って書かれた部分です。URLに含まれているときだけ表示します
  • ホスト名 — example.com のような、接続先のサーバーの名前です。IPアドレスの場合もあります
  • ポート — ホスト名のあとに :8080 のように書く番号です。省略されているときは、443(https の既定のポート) のように、そのスキームの既定の番号を表示します。既定の番号は、http と ws が 80、https と wss が 443、ftp が 21 です
  • パス — ホスト名のあとの / から、? または # の手前までです。サーバーの中の場所を表します
  • クエリ文字列 — ? から # の手前までです。名前=値 を & でつないだ形で、ページに渡す条件を表します
  • フラグメント — # から後ろです。ページの中の位置などを表します。ブラウザの中だけで使われ、サーバーには送られません
  • オリジン — スキーム・ホスト名・ポートを合わせたものです。ブラウザが「同じサイトかどうか」を判断する単位で、CORS の設定などで使います

URLにない部分は「なし」と表示します。

パスとフラグメントにパーセントエンコード(%E3%82%AC のような表記)が含まれていて、デコードすると別の文字になるときは、「パス(デコード後)」「フラグメント(デコード後)」の行が増えます。パスの中の %2F(/)、%3F(?)、%23(#)は、区切りの記号と見分けがつかなくなるので、デコード後の行でもそのまま残します。

クエリパラメータの読み取り方

  • & で区切り、それぞれを最初の = で名前と値に分けます。token=abc== の値は abc== です
  • + は空白として読みます。フォームの送信や検索ページのURLでは、空白を + で書くためです。文字としての + は %2B と書かれています
  • パーセントエンコードは UTF-8 としてデコードします。%E6%9D%B1%E4%BA%AC は 東京 になります
  • 同じ名前が複数あるときは、出てきた順にすべて表示します。JSON でコピーするときは、その名前の値が配列になります("tag": ["a", "b"])
  • debug のように = のない名前や、a= のように値が空のものは、値を「(空)」と表示します
  • %E3%81 のように途中で切れているものや、Shift_JIS・EUC-JP でエンコードされたもの(%93%8C%8B%9E など)は、UTF-8 としてデコードできません。その場合は元の表記のまま表示し、その旨を値の下に出します

値そのものをエンコード・デコードしたいときは、URLエンコード・デコードツールを使ってください。記号ごとの扱いは、ガイド「URLエンコードで特殊文字を正しく扱う方法」で説明しています。

計測用パラメータを除いたURL

広告やメールマガジンのリンクには、どこから来たかを集計するためのパラメータが付いていることがあります。次の名前のパラメータが含まれているときに、それを除いたURLを表示します。大文字と小文字は区別しません。

  • utm_ で始まるもの(utm_source、utm_medium、utm_campaign、utm_term、utm_content など)
  • gclid、gclsrc、dclid、gbraid、wbraid(Google 広告など)
  • fbclid、igshid(Facebook、Instagram)
  • msclkid(Microsoft 広告)、yclid、twclid、ttclid、li_fat_id
  • mc_cid、mc_eid(Mailchimp)、_hsenc、_hsmi(HubSpot)
  • _ga、_gl(Google アナリティクス)

残すパラメータは、元のURLに書かれていた表記のまま、順番も変えずに残します。除いたあとにパラメータが1つも残らないときは、? も付けません。

これらのパラメータは集計のためのもので、除いても同じページが開くのがふつうです。ただし、サイトがこの名前を別の目的に使っている場合は、表示が変わることがあります。共有する前に、除いたURLを一度開いて確かめてください。

パラメータを編集してURLを作り直す

「クエリパラメータ」の見出しの横にある「パラメータを編集」を押すと、パラメータの一覧が、名前と値を書き換えられる欄に変わります。

  • 名前と値の欄を書き換えると、下の「編集したURL」がその場で変わります
  • 行の右の「×」で、そのパラメータを削除します
  • 「パラメータを追加」で、いちばん下に空の行を足します。名前と値を入れると、URLのクエリ文字列の最後に付きます
  • 「元に戻す」で、入力したURLのパラメータに戻します
  • 「編集したURLをコピー」で、組み立て直したURLをコピーします。編集中の「パラメータをJSONでコピー」は、編集したあとのパラメータをコピーします

パラメータのないURLで押すと、空の行が1つある状態で始まります。utm_source などを付けた共有用のURLを作るときにも使えます。

ページを開いたときの例のURLで、page の値を 3 に書き換え、utm_source の行を削除し、名前が sort、値が new & hot の行を追加すると、編集したURLは次のようになります。

https://example.com:8080/docs/%E3%82%AC%E3%82%A4%E3%83%89?q=%E6%A4%9C%E7%B4%A2%20%E3%83%AF%E3%83%BC%E3%83%89&page=3&sort=new%20%26%20hot#section-1

URLの組み立て方

  • 書き換えていないパラメータは、元のURLに書かれていた表記のまま、順番も変えずに残します。書き換えたあとで元の名前と値に戻した行も、元の表記に戻ります
  • 書き換えた行と追加した行は、名前と値を UTF-8 でパーセントエンコードし、名前=値 の形で書きます。空白は %20 に、& = + # % は %26 %3D %2B %23 %25 になるので、どれも値の一部として読まれます
  • 書き換えた行と追加した行で値が空のものは、debug= のように = を付けて書きます。元のURLに debug と書かれていて書き換えていない行は、debug のまま残します。名前も値も空の行は、元のURLに = だけで書かれていたものも含めて、URLに入れません
  • パラメータが1つも残らないときは、? も付けません
  • スキーム・ホスト名・パス・フラグメントは、正規化したURLのものをそのまま使います。a=1&&b=2 のような空の区切りは詰めて a=1&b=2 にします
  • クエリ文字列だけを入力したときは、URLの代わりに ? から始まるクエリ文字列を組み立てます
  • デコードできない名前や値(「元の表記のまま表示しています」と出るもの)がある行を書き換えると、その行の名前と値は、欄に見えている文字そのものとしてエンコードします。% も %25 になります
  • 名前と値の欄では、Enter を押しても改行は入りません

編集は、入力欄のURLや、上の「URLの各部分」には反映しません。入力欄のURLを変えると編集は消え、新しいURLのパラメータで始め直します。「パラメータを編集」をもう一度押して編集をやめたときも、編集は消えます。残したいURLは、やめる前にコピーしてください。

正規化したURL

いちばん上の「正規化したURL」は、ブラウザがURLを読み取ったあとの形です。入力したURLと、次の点で違うことがあります。

  • スキームとホスト名は小文字になります(HTTPS://EXAMPLE.com → https://example.com)
  • スキームの既定のポートは省かれます(https://example.com:443/ → https://example.com/)
  • パスの . と .. は解決されます(/a/../b/./c → /b/c)
  • 日本語や空白は、パーセントエンコードされます
  • 日本語などを含むホスト名は、xn-- で始まる表記(Punycode)になります。日本語.jp は xn--wgv71a119e.jp です。このときは「ホスト名(国際化ドメイン名の表記)」の行に、元の文字での表記も表示します

エラーが表示されるとき

「URLとして読み取れません」と表示されるのは、次のような入力です。

  • not a url のように、ホスト名の位置に空白がある
  • https:// のように、スキームのあとにホスト名がない
  • https://example.com:99999/ のように、ポートが 65535 を超えている

エラーの間、結果は表示されず、入力を促す案内だけが出ます。入力を直すと、エラーは消えて結果が表示されます。

このアプリは、URLの書き方を読み取るだけです。そのURLのページが実際にあるかどうかは調べません。

FAQ

クエリパラメータとは何ですか?

URLの ? から後ろに、名前=値 の形で書かれた情報です。複数あるときは & でつなぎます。https://example.com/search?q=abc&page=2 なら、q が abc、page が 2 です。検索語、ページ番号、並び順など、ページに渡す条件に使われます。

同じ名前のパラメータが2つあるときは、どうなりますか?

一覧には、出てきた順にどちらも表示します。?tag=a&tag=b は tag が2行になります。どちらの値を使うか、両方を使うかは、URLを受け取るサーバーやプログラムによって違います。

値の中の + が空白になるのはなぜですか?

クエリ文字列では、空白を + で書く決まり(フォーム送信の形式)が広く使われているためです。JavaScript の URLSearchParams も同じ読み方をします。文字としての + を値に入れたいときは、%2B と書きます。

入力したURLと「正規化したURL」が違うのはなぜですか?

ブラウザは、URLを読み取るときに表記をそろえます。大文字のホスト名を小文字にし、日本語をパーセントエンコードし、既定のポートを省きます。どちらのURLも同じ場所を指します。

xn-- で始まるホスト名は何ですか?

日本語などのアルファベット以外の文字を含むドメイン名(国際化ドメイン名)を、アルファベットと数字とハイフンだけで表したものです。この変換の方式を Punycode といいます。このアプリは、xn-- で始まるホスト名を元の文字に戻した表記も表示します。見た目のよく似た別の文字を使ったドメイン名を見分けるときにも、xn-- の表記が手がかりになります。

フラグメント(# から後ろ)はサーバーに送られますか?

送られません。ブラウザは、# の手前までをサーバーに送り、フラグメントはページを表示したあとにブラウザの中で使います。ページ内の見出しへ移動するためや、JavaScript で画面を切り替えるために使われます。

URLにパスワードが入っていても、入力して大丈夫ですか?

入力したURLは、ブラウザの中で読み取るだけで、外部には送信しません。ただし、パスワードや認証用のトークンを含むURLは、画面を人に見せるときや、結果をコピーして共有するときに、そのまま伝わります。共有する前に、その部分を消してください。

パラメータを付け足したURLを作れますか?

作れます。「パラメータを編集」を押し、「パラメータを追加」で行を足して名前と値を入れると、そのパラメータを最後に付けたURLが表示されます。値に & や日本語が入っていても、パーセントエンコードして入れます。

入力したURLにアクセスしたり、保存したりしますか?

どちらもしません。URLの文字列をブラウザの中で分解するだけで、そのURLへの通信は行いません。入力を記録する仕組みもなく、再読み込みすると例のURLに戻ります。

種別
ユーティリティ
カテゴリ
開発者向け
タグ
url
query
parameters
parse
decode
builder
developer
  • Punycode変換ツール(日本語ドメイン⇔xn--)

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

    ユーティリティ開発者向けpunycodeidndomainurlemailconverterdevelopersecurity
  • Base64エンコード・デコードツール

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

    ユーティリティ開発者向けbase64base64urldata-urlimagefileencodedecodedeveloperconverter