@ferrow/url-normalizer-lite
v1.0.0
Published
URL canonicalization and normalization with tracking param stripping and equivalence checking
Maintainers
Readme
url-normalizer-lite
URL canonicalization with scheme/host lowercasing, default port stripping, query sorting, and tracking-param removal.
Quick Start
import { normalize, equivalent } from "url-normalizer-lite";
const messy = "HTTPS://Example.COM:443/path?utm_source=ad&b=2&a=1";
const clean = normalize(messy);
// → https://example.com/path?a=1&b=2
console.log(equivalent(url1, url2)); // true if normalized forms matchAPI
normalize(url: string, options?: NormalizeOptions): string
Canonicalize a URL:
- Lowercase scheme and hostname
- Strip default ports (80→http, 443→https)
- Resolve dot-segments (.. and .)
- Sort query parameters
- Strip common tracking params (utm_*, fbclid, gclid, msclkid)
- Handle trailing slash per option
equivalent(urlA: string, urlB: string, options?: NormalizeOptions): boolean
Check if two URLs are equivalent after normalization.
Options
interface NormalizeOptions {
trailingSlash?: "keep" | "add" | "remove" // "keep" by default
stripTrackingParams?: string[] // Additional params to strip
}Limits
- Punycode domains not decoded (left as submitted)
- Fragment identifier always stripped
- No intelligent cache-busting param detection
Part of the ferrow-toolkit collection · Sponsored by Ferrow
