urlcanon
url canonicalization library for python and java
Decision gist · record as of 2026-08-14
No. The package is abandoned (last release 2019-07-02, no commits since 2022-05-22) and classifiers indicate support only through Python 3.7, with no verification of compatibility with later versions. The source-only distribution adds install friction. Unless you are maintaining legacy code already using urlcanon, consider a maintained alternative for new projects.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Source-only distribution (no wheels); requires a C compiler and build tools.
- Classifiers indicate Python 2.7–3.7 support; compatibility with later versions is unverified.
- High install friction: the package is distributed as a source tarball with no prebuilt wheels.
License · maintenance · safety
permissive license (permissive) — Licensed under Apache License 2.0 (permissive). You may use, modify, and distribute the software freely provided you include the license notice and disclaimer.
last release 2019-07-02 (2600 days) · last repo commit 2022-05-22 · 43 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 147,557 downloads/mo, #11,060 on PyPI
Alternatives
Verify before relying
pip install urlcanon
import urlcanon
parsed_url = urlcanon.parse_url("http://EXAMPLE.com:80/foo/../bar")
urlcanon.whatwg(parsed_url)
print(parsed_url)- Whether the package builds and runs on Python versions after 3.7.
- Whether the package has any undiscovered security issues or breaking changes since its last release in 2019.
What it is and what it does
urlcanon is a URL parser and normalizer that implements the WHATWG URL standard used by web browsers. It parses URLs while preserving the original input bytes, then applies a canonicalization ruleset to normalize them into a standard form—lowercasing domains, removing default ports, resolving path segments, and collapsing redundant slashes. It also provides SSURT, an alternative serialization format designed for efficient sorting and prefix-matching of URLs.
The library is stable and has been in production use, but the project is no longer actively maintained. It offers a Python API (and a separate Java implementation). The package has no runtime dependencies, making it lightweight to install, but it is distributed only as source code, requiring compilation on install.
Use it for
- Normalize URLs in web crawlers or archival systems to deduplicate and match equivalent URLs despite surface differences.
- Implement URL-based filtering rules by converting URLs to SSURT format for efficient prefix-matching and sorting.
- Parse and standardize URLs in data pipelines where browser-compatible normalization is required.
- Build URL deduplication logic in search indexers or link analysis tools.
- Validate and canonicalize user-supplied URLs before storage or comparison.
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
No.
The package is abandoned (last release 2019-07-02, no commits since 2022-05-22) and classifiers indicate support only through Python 3.7, with no verification of compatibility with later versions. The source-only distribution adds install friction. Unless you are maintaining legacy code already using urlcanon, consider a maintained alternative for new projects.
Install
urlcanon on PyPI
Before you install
High install friction: the package is distributed as a source tarball with no prebuilt wheels. Maintenance is abandoned—last release was 2019-07-02, last commit 2022-05-22, and no updates in approximately 2600 days. Classifiers list Python 2.7 through 3.7.
Source-only distribution (no wheels); requires a C compiler and build tools. Classifiers indicate Python 2.7–3.7 support; compatibility with later versions is unverified.
License in practice
Licensed under Apache License 2.0 (permissive). You may use, modify, and distribute the software freely provided you include the license notice and disclaimer.
Quickstart
pip install urlcanon
import urlcanon
parsed_url = urlcanon.parse_url("http://EXAMPLE.com:80/foo/../bar")
urlcanon.whatwg(parsed_url)
print(parsed_url)
Verify before relying
- Whether the package builds and runs on Python versions after 3.7.
- Whether the package has any undiscovered security issues or breaking changes since its last release in 2019.
Package facts
| License | permissive license permissive |
| Python support | Not specified |
| Install friction | High. Source build required |
| Runtime dependencies | None |
| Maintenance | Abandoned 2,600 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 147,557 / month, #11,060 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | License :: OSI Approved :: Apache Software LicenseProgramming Language :: JavaProgramming Language :: Python :: 2.7Programming Language :: Python :: 3.4Programming Language :: Python :: 3.5Programming Language :: Python :: 3.6Programming Language :: Python :: 3.7Topic :: Internet :: WWW/HTTP |
Evidence: urlcanon-0.3.1.tar.gz
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “url canonicalization normalization”
- urlcanonParses and normalizes URLs according to WHATWG browser standards,…
- urlpyurlpy parses, normalizes, and compares URLs with support for…
- courlanValidates, normalizes, filters, and samples URLs for web crawling and…
Give your agent the search over MCP, or paste the wish link into any chat.
More WWW/HTTP packages
urllib3 is an HTTP client library that provides thread-safe connection pooling, SSL/TLS verification, multipart file uploads, request retries, compression support, and proxy handling for Python applications.
Requests is a Python HTTP library that simplifies sending HTTP/1.1 requests with automatic handling of headers, authentication, cookies, and response parsing.
h11 is a pure-Python HTTP/1.1 protocol implementation that handles parsing and serializing HTTP messages without any built-in I/O, letting you integrate it with any network layer you choose.
HTTPX is a fully featured HTTP client library for Python that provides both sync and async APIs, with support for HTTP/1.1 and HTTP/2, plus an integrated command-line client.
Install it if you are building new projects or modernizing existing ones that rely on HTTP.
A minimal low-level HTTP client library that sends HTTP requests with thread-safe and task-safe connection pooling, supporting HTTP/1.1, HTTP/2, proxies, and both sync and async interfaces.
aiohttp is an async HTTP client and server framework built on asyncio, supporting both WebSockets and middleware-based routing for building concurrent web applications.
Install it if you need async HTTP client or server capabilities in asyncio-based applications.
See also ada-url · url-normalize · urlpy · can-ada · rfc8785 · yarl · http-sf · jcs · http-sfv · ioc-fanger