Free tools

Free Canonical URL Normalizer

Normalize protocol, host, trailing slash, and tracking parameters to detect duplicate URL variants quickly.

Copy-paste outputs

Win high-intent buyers from ChatGPT, Gemini, Claude, Perplexity, and AI Overviews before your competitors do.

One operating layer for monitoring, measurement, content action, and technical cleanup.

AI Visibility TrackingCompetitive RankingSentiment by ModelSource CitationsAI Overviews TrackingPrompt MonitoringAI Visibility TrackingCompetitive RankingSentiment by ModelSource CitationsAI Overviews TrackingPrompt Monitoring
Content GapsAI InsightsAdvanced AnalyticsData CopilotBlog GenerationUGC CampaignsLLM CouncilContent GapsAI InsightsAdvanced AnalyticsData CopilotBlog GenerationUGC CampaignsLLM Council
Shopping IntelligenceCrawler MonitoringGEO OptimizationMulti-Brand ManagementShopping IntelligenceCrawler MonitoringGEO OptimizationMulti-Brand Management

Tool 01

Canonical URL Normalizer / Clusterer

Normalize URL variants and cluster duplicates to tighten canonical decisions.

Canonical URL Normalizer / Clusterer
Normalize URL variants and cluster duplicates to tighten canonical strategy.
Clusters (4)
4 input URLs | 0 invalid

https://www.brandarmor.ai/features

  • https://www.brandarmor.ai/features?utm_source=linkedin

https://brandarmor.ai/features

  • https://brandarmor.ai/features/

http://brandarmor.ai/features

  • http://brandarmor.ai:80/features?ref=newsletter

https://brandarmor.ai/features?view=full

  • brandarmor.ai/features?utm_campaign=q1&view=full
{
  "clusters": [
    {
      "canonical": "https://www.brandarmor.ai/features",
      "variants": [
        "https://www.brandarmor.ai/features?utm_source=linkedin"
      ]
    },
    {
      "canonical": "https://brandarmor.ai/features",
      "variants": [
        "https://brandarmor.ai/features/"
      ]
    },
    {
      "canonical": "http://brandarmor.ai/features",
      "variants": [
        "http://brandarmor.ai:80/features?ref=newsletter"
      ]
    },
    {
      "canonical": "https://brandarmor.ai/features?view=full",
      "variants": [
        "brandarmor.ai/features?utm_campaign=q1&view=full"
      ]
    }
  ],
  "invalid": [],
  "totalInput": 4
}

How it works

Canonical URL Normalizer / Clusterer: methodology and worked example

How this tool computes its result

Parses each pasted URL (prepending https:// if no scheme is present), then normalizes it by lowercasing the protocol and hostname, optionally stripping a leading "www.", dropping default ports (443 for https, 80 for http), removing the hash fragment, collapsing duplicate slashes and a single trailing slash in the path, and rebuilding the query string with parameters sorted alphabetically — optionally dropping known tracking parameters (utm_source/medium/campaign/term/content, gclid, fbclid, msclkid, ref). URLs that normalize to an identical string are grouped into one cluster, listing every original variant line underneath it. Lines that fail to parse as a URL are reported separately as invalid.

Worked example

Using the tool's own default input with "strip tracking params" on and "strip www" off: "https://www.brandarmor.ai/features?utm_source=linkedin" normalizes to "https://www.brandarmor.ai/features"; "https://brandarmor.ai/features/" normalizes to "https://brandarmor.ai/features" (trailing slash dropped); "http://brandarmor.ai:80/features?ref=newsletter" normalizes to "http://brandarmor.ai/features" (default port and tracking param dropped, but protocol stays http); and "brandarmor.ai/features?utm_campaign=q1&view=full" becomes "https://brandarmor.ai/features?view=full". Because stripWww is off and protocol is never normalized, these four lines land in four separate clusters even though a human would treat them as the same page.

When not to use this tool

This is a purely syntactic string normalizer — it never makes a network request to check whether a URL actually resolves or redirects, and it never merges http:// with https:// duplicates automatically, so mixed-protocol variants of the same page always stay in separate clusters regardless of settings.

Common mistakes

  • - Leaving "Remove leading www." unchecked and assuming www.example.com and example.com will still cluster together — they won't, since hostname stripping is opt-in and off by default.
  • - Mixing bare domains with full URLs and expecting a single protocol to win — the tool only adds https:// when no scheme is present at all; an explicit http:// URL keeps http and is never reconciled with an https:// duplicate of the same page.
  • - Assuming query-parameter stripping removes everything non-canonical — only the fixed tracking-parameter list (utm_*, gclid, fbclid, msclkid, ref) is dropped; any other parameter (like a custom "view=full") is preserved and sorted, so it can still split otherwise-identical URLs into separate clusters.

Ready to dominate AI search visibility?

Track where your brand shows up in AI answers, close the content gaps that cost conversions, and stay visible across ChatGPT, Claude, Gemini, Perplexity, and Grok.