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
- Trim each line; ignore blank lines and comments beginning with
#. - Reject whitespace and non-HTTP schemes before parsing so malformed input cannot become a plausible path.
- For absolute URLs, lowercase the host and remove default ports. For path-only input, keep it path-only.
- Collapse repeated slashes in the path. The tool does not lowercase paths.
- Remove known tracking parameters from the grouping key, but retain their names in the record and CSV.
- Sort remaining parameters by name and value, then group by host, path and parameter-name signature.
Examples
| Input | Result | Reason |
|---|---|---|
HTTP://Example.com:80/a//b?utm_source=x&id=7 | http://example.com/a/b?id=7 | Host and default port normalised; tracking removed from the grouping key. |
/main/scripts.html?script=One/main/scripts.html?script=Two | Manual review | Same 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 | Duplicate | Parameter order differs, meaning does not. |
javascript:alert(1) | Invalid | Unsupported 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.