URL normalization (also called URL canonicalization) is the process of unifying multiple URL representations that point to the same web page into a single standard form. For example, "http://Example.COM/page/", "https://example.com/page", and "https://example.com/page/index.html" may all point to the same page, but search engines treat them as separate URLs.
The main elements to unify during URL normalization include: protocol (http to https), hostname case (Example.COM to example.com), trailing slash (consistent presence or absence), default port removal (:443 or :80), percent-encoding normalization (%7E to ~), removal of unnecessary query parameters, and path normalization (/a/../b to /b).
URL normalization is a core technology for URL shortening services. By normalizing user-submitted URLs before storing them in the database, you prevent multiple shortened URLs from being generated for the same page. If "https://example.com/page" and "https://example.com/page/" are treated as different URLs, the same page gets two shortened URLs and click statistics become fragmented.
Normalizing too aggressively causes the opposite accident: treating different pages as the same URL. Query parameter removal is the sharpest edge. Dropping measurement parameters such as utm_source still lands on the same page, but dropping parameters that select the content, such as ?id=123 or ?page=2, sends visitors somewhere else entirely. An allowlist that names the parameters safe to drop is safer than guessing which ones must be kept. Trailing slashes deserve the same caution, because some servers return different content for /page and /page/, so confirm the actual responses before deciding what to normalize.
From an SEO perspective, poor URL normalization causes duplicate content problems. When the same content is accessible at multiple URLs, search engines struggle to determine which URL is the canonical version, and search rankings become diluted. Declaring the canonical version with the canonical tag (<link rel="canonical">) is the basic countermeasure. It is a signal to search engines, though, not a guarantee: when Google ranks the methods by how strongly they influence canonicalization, it places redirects ahead of the canonical tag. To consolidate on a single URL reliably, unify the access path itself with a redirect and use the canonical tag alongside it.
RFC 3986, "Uniform Resource Identifier (URI): Generic Syntax", defines URI syntax and also covers normalization. Lowercasing the scheme and hostname, decoding percent-encoded unreserved characters (alphanumerics plus - . _ ~, so %7E becomes ~), omitting the scheme default port, and resolving ../ in the path all follow that specification. Whether to force https, whether to use www, and which trailing-slash form to keep are not decided by the RFC. Those variants do not necessarily point to the same resource, so they belong to site policy and web server configuration, with a redirect unifying one form into the other.