Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

url-normalizer-lite

npm install @ferrow/url-normalizer-lite

CI

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 match

API

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

About

URL canonicalization and normalization with tracking param stripping and equivalence checking

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages