$npx skillfedfor your agent

urlcanon

url canonicalization library for python and java

SkipPyPI WWW/HTTPReleased Jul 2019147.6K downloads / mopermissive licenseSource build

Decision gist · record as of 2026-08-14

sdist only — urlcanon-0.3.1.tar.gz · builds from source
v0.3.1 · released 2019-07-02

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

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.
Same gist for agents: .md · .json

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.

Skip

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

Licensepermissive license permissive
Python supportNot specified
Install frictionHigh. Source build required
Runtime dependenciesNone
MaintenanceAbandoned 2,600 days since the last release
Last repo commit
First released
Downloads147,557 / month, #11,060 on PyPI 30-day window, as of 2026-08-14
Known vulnerabilitiesNone 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

Capabilities
url canonicalization normalizationurl parser browser standardwhatwg url parsingssurt url serializationurl normalization libraryparse url bytes preservedurl prefix matching
Topics
url-parsingabandoned

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 Worth it
PyPI · Libraries · released May 2026

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.

MITpure Python · 3.10+
1.8Bdownloads / mo
requests Worth it
PyPI · Libraries · released May 2026

Requests is a Python HTTP library that simplifies sending HTTP/1.1 requests with automatic handling of headers, authentication, cookies, and response parsing.

Apache-2.0pure Python · 3.10+
1.8Bdownloads / mo
h11 With conditions
PyPI · WWW/HTTP · released Apr 2025

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.

MITpure Python · 3.8+aging
894.9Mdownloads / mo
httpx Worth it
PyPI · WWW/HTTP · released Dec 2024

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.

BSD-3-Clausepure Python · 3.8+
797.0Mdownloads / mo
httpcore With conditions
PyPI · WWW/HTTP · released Apr 2025

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.

BSD-3-Clausepure Python · 3.8+aging
783.6Mdownloads / mo
aiohttp Worth it
PyPI · WWW/HTTP · released Jul 2026

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.

permissive licensecompiled wheel · 3.10+
643.6Mdownloads / mo

See also ada-url · url-normalize · urlpy · can-ada · rfc8785 · yarl · http-sf · jcs · http-sfv · ioc-fanger