url-normalize
URL normalization for Python
Install
url-normalize on PyPI
pip
pip install url-normalizeuv
uv add url-normalizepoetry
poetry add url-normalizePackage facts
| License | MIT (permissive) |
| Python support | supports the current Python release (>=3.10) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 1 — idna |
| Maintenance | actively maintained — 110 days since the last release |
| Last repo commit | |
| First released | |
| Popularity | one of the top 1,000 most-downloaded packages on PyPI (30-day window, as of 2026-08-13) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-13) |
Evidence: url_normalize-3.0.0-py3-none-any.whl
Keywords: url, normalization, normalize, normalizer
About url-normalize
from the package's own PyPI description — quoted content, verbatim
url-normalize
tests (image) Coveralls (image) PyPI (image) Python Versions (image) License (image) Ruff (image)
A Python library for standardizing and normalizing URLs. Ideal for database deduplication, caching, web crawling, and anywhere you need to ensure that equivalent URLs resolve to the exact same string.
```python from url_normalize import url_normalize
Fixes IDN, lowercases host/scheme, removes default ports, resolves path...
Read as markdown · JSON record · Source repository · Homepage
AI interpretation — verify before relying
AI-generated interpretation of the package facts above; every digit, version, license, or vulnerability id it cites is grounded in the facts already shown on this page
Standardizes and normalizes URLs by handling internationalized domain names, lowercasing schemes/hosts, removing default ports, resolving path segments, and optionally filtering query parameters—useful for deduplication, caching, and web crawling.
Minimal friction: pure Python wheel with only idna as a runtime dependency. Actively maintained as of 2026-04-25 with 100+ GitHub stars and no known vulnerabilities.
MIT license (permissive) permits commercial and private use with minimal restrictions—suitable for most projects.
Usage
pip install url-normalize
from url_normalize import url_normalize
print(url_normalize("HTTP://www.FOO.com:80/foo/../bar?q=1#frag"))
# Output: 'https://www.foo.com/bar?q=1#frag'
Requires Python 3.10 or later.
Verdict: A well-maintained, lightweight URL normalization library with RFC-compliant handling of IDN domains, path segments, and query parameters. No security issues, low install friction, and permissive licensing make it a solid choice for applications requiring robust URL standardization.
Needs verification
- Real-world performance characteristics (throughput, memory) on large URL batches.
- Compatibility with non-standard or malformed URLs beyond the documented examples.
- Whether the humanization feature preserves all normalization properties in practice.
Similar packages
permissive · top 100 on PyPI
email-validatorpermissive · top 1,000 on PyPI
rfc3986permissive · top 1,000 on PyPI
tldextractpermissive · top 1,000 on PyPI
jsonpointerpermissive · top 1,000 on PyPI
idnapermissive · top 100 on PyPI
Protegopermissive · top 1,000 on PyPI
validatorspermissive · top 1,000 on PyPI
toxpermissive · top 1,000 on PyPI
nh3permissive · top 1,000 on PyPI