Query String Parser

入力値の整形・変換・判定をブラウザ内で実行します。入力はサーバーへ送信しません。形式差分の一次切り分けに使えます。

状態

ブラウザ内で処理します。入力はサーバーへ送信しません。まずはここで一次切り分けしてください。

使い方

URLまたはクエリ文字列を貼り付けて「解析」。必要に応じて「+ をスペース扱い」を切り替えて差分を確認します。

注意(このツール)

  • URL全体を貼り付けた場合は「?」以降のみを解析します。フラグメント(#以降)は対象外です。
  • 重複キーの採用規則(先頭/末尾/配列)はサーバー実装に依存します。

このページについて

何をするツール?

URLや「?」以降のクエリ文字列を解析し、キーと値を一覧で表示します。

重複キー(例:a=1&a=2)やエンコード文字も確認できます。

URLエンコード自体の説明は URL Encode/Decode に寄せ、このページでは「クエリ特有の落とし穴(+/%20、重複キー、二重エンコード)」を中心に扱います。

+ と %20(スペース問題)

クエリ文字列では、文脈によって「+」がスペースとして扱われる場合があります(application/x-www-form-urlencoded など)。一方、%20 はパーセントエンコードの空白です。

このツールは「+ をスペースとして扱う」オプションで両方の見え方を比較できます。

重複キー(a=1&a=2)

クエリでは同じキーが複数回出現することがあります(チェックボックス、配列表現など)。サーバ側の解釈(最初/最後/配列)やフレームワークの仕様で扱いが変わる点に注意してください。

切り分け手順(おすすめ)

  • まず元URLをそのまま貼ってキー一覧を確認
  • 想定と違う値がある場合は + as space を切り替えて再解析
  • 同名キーが複数あるかを確認し、バックエンド仕様と照合
  • 必要なら URL Encode/Decode で1段ずつ復元して二重エンコードを確認

推奨(実務)

  • クエリ設計時は同名キーの扱い(配列/先頭/末尾)をAPI仕様に明記する
  • 値に区切り文字が入る場合は必ず値単位でエンコードする
  • 運用ログには元URLとデコード済み値の両方を残す

二重エンコード(%2520 など)

  • %25 は「%」のエンコードです。%2520 は「%20」がさらにエンコードされた形です。
  • 疑ったら 1回ずつデコードして意味が通るか確認します(やり過ぎると壊れます)。

よくある失敗

  • URL全体を2回連結して ? が複数入り、想定外の解釈になる
  • 空値(a=)と未指定(a)を同一視してしまう
  • デコード失敗を無視して生値のまま処理し、不具合が遅延する

このツールでできること

  • URL/クエリ文字列の解析
  • キー・値・デコード値の表示
  • 重複キーの保持
  • + をスペース扱いする解釈切り替え

注意(運用)

  • 同じ文字列でも文脈により解釈規則が異なります。利用先仕様を優先してください。
  • 入力元での自動変換(空白、改行、URLデコード)に注意してください。

参照仕様

  • RFC 3986(URI)
  • WHATWG URL Standard(URLSearchParams / form-urlencoded)
  • application/x-www-form-urlencoded の慣例(+ が空白になる場合)

FAQ

+ はスペースになりますか?

このツールでは「+ をスペースに変換する」オプションを用意しています。用途に合わせて切り替えてください。

値に & や = が入っているとどうなりますか?

& や = は区切りとして解釈されるため、値に入れたい場合は事前にエンコードが必要です。

a= と a は同じですか?

実装次第で扱いが異なる場合があります。API仕様上は区別するかどうかを明記するのが安全です。

重複キーはどれが採用されますか?

このツールは順序を保持して表示します。最終採用値はサーバーやフレームワーク実装(先頭/末尾/配列)に依存します。

参考リンク

  1. RFC 3986(URI)
  2. WHATWG URL Standard
  3. URLSearchParams

site_map ルールに基づいて、次に確認すべきページを表示しています。

  1. UTM Builder — UTMパラメータ付きURLを生成
  2. URL Encode/Decode — URLエンコード/デコードを相互変換
  3. 文字数カウント — 改行・全角/半角を含む文字数を計測
  4. Base64 — Base64 エンコード/デコード(UTF-8)

Example

https://example.com/?a=1&a=2&q=hello%20world
q=hello+world(+ as space)
q=%2520(double-encoding)