仕様と根拠
正規化のしかた
RFC 3986 の 6.2 に沿って、スキームとホストを小文字にし、http の 80・https の 443 などの既定ポートと空のポートを取り除き、%の後ろの 16 進を大文字にし、英数字と - . _ ~ を表す %エンコードを元の文字に戻し、./ と ../ を整理し、パスが空なら / にします。パスの大文字小文字は区別したままです。
クエリの読み方と並べ替え
クエリは WHATWG URL Standard の 5.1 のとおり、& で区切り、最初の = で名前と値に分け、+ を空白に、%エンコードを UTF-8 として戻して読みます。並べ替えは 6.2 の sort のとおり名前の文字コード順で、同じ名前の値は元の順序を保ちます。書き出しは 5.2 のとおり、空白を + に、英数字と * - . _ 以外を %エンコードにします。
指摘にする条件
正規化すると同じになるアドレスは警告、大文字小文字だけが違うパスと、末尾のスラッシュの有無だけが違うパスも警告にします。同じパスでクエリだけが違うアドレスは、内容が同じとは限らないため情報として示します。Google は URL の大文字小文字を区別し、パラメータで重複アドレスが増えると説明しています。
根拠にした仕様・資料
| 仕様・資料 | 確認日 | 使った箇所 |
|---|---|---|
| WHATWG URL Standard | 2026年10月28日 | 5.1(urlencoded の読み方)・5.2(書き出し)・6.2(sort は名前の文字コード順)・4.2(既定ポート) |
| RFC 3986 Uniform Resource Identifier (URI): Generic Syntax | 2026年10月28日 | 5.2.4(ドットセグメントの除去)・6.2.2(構文にもとづく正規化)・6.2.3(スキームにもとづく正規化) |
| Google 検索セントラル URL 構造 | 2026年10月28日 | アドレスの大文字小文字は区別される・パラメータによる重複アドレス |
指摘の段階
- エラー: 仕様に反していて、正しく読めない・処理できない入力です。
- 警告: 読めるものの、仕様の推奨に反する・矛盾する・意図と違う結果になりやすい入力です。
- 情報: 誤りではありませんが、知っておくとよい扱い(読み飛ばした部分や解釈)です。
入力の扱い(送信しない仕組み)
処理はすべてお使いのブラウザの中で行います。処理の本体はこのサイトから配信する小さなスクリプト(/app.js)で、外部のサービスやライブラリを読み込みません。ページはブラウザに通信を禁止させる設定(Content-Security-Policy の connect-src)つきで配信しており、入力した内容がサーバーや第三者へ送られることはありません。ファイルを選んだ場合も、端末の中で読み込むだけです。
このツールでできないこと(制約)
- アドレスへアクセスして内容を確かめることはしません。表記が違うアドレスが実際に同じページかどうかは、サイト側の設定を確認してください。
- RFC 3986 の正規化にもとづくもので、ブラウザの URL の解析(WHATWG URL の全規則)とは細部が異なります。国際化ドメイン名の変換や IPv6 の表記ゆれの統一は行いません。
- 同じ名前のパラメータの順序は保ちますが、同じ名前を 1 つにまとめることや、特定のパラメータ(utm_ など)を取り除くことはしません。
- 絶対のアドレス(スキームとホストがあるもの)だけを扱います。相対のアドレスは、別の「相対アドレスを絶対に変換する」ツールで解決してください。
ご利用にあたって
- 正規化後のアドレスは書き方の整理であり、実際のリダイレクトや canonical の設定は別に確認してください。
- 大量のアドレスを貼り付けると、お使いの端末の性能によって処理に時間がかかることがあります。