Method · tested URL handling

What the Mapper normalises — and what it refuses to decide.

The Legacy URL Mapper is deliberately conservative. These are its exact grouping rules, the examples covered by the repository tests, and the decisions it leaves to a human.

Tested proof assetThe analysis core is exported from the same unminified file used by the browser. Repository QA asserts parsing, duplicate grouping, many-to-one review, invalid-line retention and CSV output. Browser QA separately exercises the visible sample and export state.

The pipeline

  1. Trim each line; ignore blank lines and comments beginning with #.
  2. Reject whitespace and non-HTTP schemes before parsing so malformed input cannot become a plausible path.
  3. For absolute URLs, lowercase the host and remove default ports. For path-only input, keep it path-only.
  4. Collapse repeated slashes in the path. The tool does not lowercase paths.
  5. Remove known tracking parameters from the grouping key, but retain their names in the record and CSV.
  6. Sort remaining parameters by name and value, then group by host, path and parameter-name signature.

Examples

Input behaviour

Same code path as the tool
InputResultReason
HTTP://Example.com:80/a//b?utm_source=x&id=7http://example.com/a/b?id=7Host and default port normalised; tracking removed from the grouping key.
/main/scripts.html?script=One
/main/scripts.html?script=Two
Manual reviewSame path and parameter signature, but two distinct value sets. The tool will not collapse them.
/x?a=1&b=2
/x?b=2&a=1
DuplicateParameter order differs, meaning does not.
javascript:alert(1)InvalidUnsupported scheme is retained as an error row, not silently dropped.

What normalisation cannot prove

A matching shape does not prove matching content. Two values of ?script= can represent different products; the same path on two hosts can have different owners; and a clean canonical form says nothing about whether a destination deserves a redirect. The output is an inventory aid, not an SEO decision engine.

  • No URL is fetched and no status code is inferred.
  • Fragments are dropped because servers do not receive them, but the tool does not claim that client-side fragment state was unimportant.
  • Percent-decoding is bounded by the platform parser; the tool does not repeatedly decode attacker-controlled values.
  • The tracking list is finite and visible. Unknown parameters are kept.
  • Every exported row says MANUAL REVIEW REQUIRED, including unambiguous groups.

Standards boundary

The parser uses the browser URL implementation and treats the path and query as resource identifiers under HTTP semantics. Redirect equivalence is intentionally outside this module and follows the separate archive decision method.