Files
2026-05-27 23:29:53 +01:00
..
2026-05-27 23:29:53 +01:00
2026-05-27 23:29:53 +01:00
2026-05-27 23:29:53 +01:00
2026-05-27 23:29:53 +01:00
2026-05-27 23:29:53 +01:00
2026-05-27 23:29:53 +01:00
2026-05-27 23:29:53 +01:00

@suaveplan/domain-normalizer - Normalisation, matching, and alias-canonicalisation for internet domain names

Summary

Normalisation, matching, and alias-canonicalisation for internet domain names. Given heterogeneous URL or domain input — including common mobile/CDN subdomains and 31 built-in alias mappings (e.g. m.youtube.com → youtube.com, old.reddit.com → reddit.com) — this package produces a canonical registrable domain via tldts, strips www/m/mobile prefixes, resolves the alias map, and returns structured NormalizedDomain objects. It also provides Levenshtein-based similarity scoring (computeSimilarity), fuzzy matching (matchDomains), and a groupDomains function that clusters a mixed list by canonical root domain. Use this package for deduplicating contact email domains, canonicalising URLs before storage, and building domain-level blocklists. For full entity deduplication across arbitrary fields use @suaveplan/dedup; for MIME or URL content-type detection use @suaveplan/mime.

Documentation tree

- [aliases](./src/core/aliases/aliases.md) — _(no submodules)_- [matcher](./src/core/matcher/matcher.md) — _(no submodules)_- [matcher](./src/core/matcher/matcher.md) — _(no submodules)_- [normalizer](./src/core/normalizer/normalizer.md) — _(no submodules)_- [normalizer](./src/core/normalizer/normalizer.md) — _(no submodules)_- [errors](./src/errors/domain-normalizer-error.md) — _(no submodules)_- [domain-normalizer-error](./src/errors/domain-normalizer-error.md) — _(no submodules)_- [types](./src/types/domain-normalizer.md) — _(no submodules)_- [domain-normalizer](./src/types/domain-normalizer.md) — _(no submodules)_- [aliases](./src/core/aliases/aliases.md) — _(no submodules)_- [matcher](./src/core/matcher/matcher.md) — _(no submodules)_- [matcher](./src/core/matcher/matcher.md) — _(no submodules)_- [normalizer](./src/core/normalizer/normalizer.md) — _(no submodules)_- [normalizer](./src/core/normalizer/normalizer.md) — _(no submodules)_- [errors](./src/errors/domain-normalizer-error.md) — _(no submodules)_- [domain-normalizer-error](./src/errors/domain-normalizer-error.md) — _(no submodules)_- [types](./src/types/domain-normalizer.md) — _(no submodules)_- [domain-normalizer](./src/types/domain-normalizer.md) — _(no submodules)_- [aliases](./src/core/aliases/aliases.md) — _(no submodules)_- [matcher](./src/core/matcher/matcher.md) — _(no submodules)_- [matcher](./src/core/matcher/matcher.md) — _(no submodules)_- [normalizer](./src/core/normalizer/normalizer.md) — _(no submodules)_- [normalizer](./src/core/normalizer/normalizer.md) — _(no submodules)_- [errors](./src/errors/domain-normalizer-error.md) — _(no submodules)_- [domain-normalizer-error](./src/errors/domain-normalizer-error.md) — _(no submodules)_- [types](./src/types/domain-normalizer.md) — _(no submodules)_- [domain-normalizer](./src/types/domain-normalizer.md) — _(no submodules)_- [aliases](./src/core/aliases/aliases.md) — _(no submodules)_- [matcher](./src/core/matcher/matcher.md) — _(no submodules)_ - [matcher](./src/core/matcher/matcher.md) — _(no submodules)_- [normalizer](./src/core/normalizer/normalizer.md) — _(no submodules)_ - [normalizer](./src/core/normalizer/normalizer.md) — _(no submodules)_- [errors](./src/errors/domain-normalizer-error.md) — _(no submodules)_ - [domain-normalizer-error](./src/errors/domain-normalizer-error.md) — _(no submodules)_- [types](./src/types/domain-normalizer.md) — _(no submodules)_ - [domain-normalizer](./src/types/domain-normalizer.md) — _(no submodules)_

Modules

Module Description
./src/core/normalizer/normalizer.md Domain/URL normalisation with tldts, prefix stripping, alias resolution
./src/core/aliases/aliases.md Built-in alias map and canonical lookup functions
./src/core/matcher/matcher.md Levenshtein similarity scoring, domain grouping, and matching
./src/errors/domain-normalizer-error.md Local error class and stable code registry
./src/types/domain-normalizer.md Shared type definitions (NormalizerConfig, NormalizedDomain, MatchResult)

Quick start

import { normalizeDomain, matchDomains, groupDomains } from "@suaveplan/domain-normalizer";

// Normalize a domain
const result = normalizeDomain("m.youtube.com");
console.log(result.normalized);  // "youtube.com"

// Normalize a full URL
import { normalizeUrl } from "@suaveplan/domain-normalizer";
const urlResult = normalizeUrl("https://old.reddit.com/r/programming");
console.log(urlResult.normalized);  // "reddit.com"

// Check similarity
const match = matchDomains("youtube.com", "m.youtube.com");
console.log(match.isMatch);  // true

// Group a list of mixed domains
const groups = groupDomains(["m.youtube.com", "youtube.com", "reddit.com", "old.reddit.com"]);
// Map { "youtube.com" => [...], "reddit.com" => [...] }

Subpath exports

import { normalizeDomain } from "@suaveplan/domain-normalizer/normalizer";
import { getCanonicalDomain } from "@suaveplan/domain-normalizer/aliases";
import { levenshteinDistance } from "@suaveplan/domain-normalizer/matcher";
import { DomainNormalizerError } from "@suaveplan/domain-normalizer/errors";