rfc3986
Validating URI References per RFC 3986
Decision gist · record as of 2026-08-14
Yes, if you need RFC 3986 validation and normalization in a lightweight, dependency-free package and can accept that it is no longer maintained. The code is stable and Production/Stable, with no known vulnerabilities, making it suitable for projects with frozen requirements. No, if you require active maintenance, security patches, or support for newer Python versions. For new projects, consider whether the abandonment status aligns with your long-term needs.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Requires Python 3.7 or later.
- Low install friction with no runtime dependencies.
- However, the package is abandoned—last release was 2022-01-10, over 1677 days ago.
License · maintenance · safety
Apache 2.0 (permissive) — Licensed under Apache 2.0 (permissive), allowing commercial and private use with minimal restrictions. No license-related barriers to adoption.
last release 2022-01-10 (1677 days)
0 known vulnerabilities (OSV.dev, 2026-08-14) · 45,139,783 downloads/mo, #622 on PyPI
Alternatives
Verify before relying
from rfc3986 import uri_reference
uri = uri_reference('http://example.com/path?query=value')
print(uri.scheme) # => http
print(uri.host) # => example.com
print(uri.is_valid()) # => True- Whether the package receives security patches despite being abandoned, or if known RFC 3986 edge cases remain unfixed.
- Performance characteristics compared to urllib.parse for large-scale URI parsing workloads.
- Compatibility with Python 3.11+ given the last release predates those versions.
What it is and what it does
rfc3986 is a Python library that parses URIs according to RFC 3986 and provides structured access to their components (scheme, authority, userinfo, host, port, path, query, fragment). It goes beyond the standard library's urllib.parse by adding validation—you can check whether a parsed URI is valid and optionally require specific components to be present. It also normalizes URIs by lowercasing the scheme and host while preserving the case of paths, queries, and fragments, and can compare normalized URIs for functional equivalence.
The library has no runtime dependencies and installs cleanly as a pure Python wheel. It is marked Production/Stable and supports Python 3.7, 3.8, 3.9, and 3.10. However, it is no longer actively maintained—the last release was in January 2022, and there have been no updates since. For projects that need RFC 3986 compliance and can tolerate a frozen codebase, it remains a lightweight, dependency-free option; for those requiring ongoing security patches or support for newer Python versions, the abandonment status is a significant consideration.
Use it for
- Validate SSH, HTTP, and custom URIs before passing them to system commands or network libraries.
- Parse and extract individual components (host, port, path) from URIs for routing or configuration logic.
- Normalize URIs to compare them for functional equivalence while preserving path case sensitivity.
- Enforce that a URI contains required components (scheme, authority, path) before processing.
- Replace urllib.parse.urlparse when RFC 3986 compliance and validation are needed.
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes, if you need RFC 3986 validation and normalization in a lightweight, dependency-free package and can accept that it is no longer maintained.
The code is stable and Production/Stable, with no known vulnerabilities, making it suitable for projects with frozen requirements. No, if you require active maintenance, security patches, or support for newer Python versions. For new projects, consider whether the abandonment status aligns with your long-term needs.
Install
rfc3986 on PyPI
Before you install
Low install friction with no runtime dependencies. However, the package is abandoned—last release was 2022-01-10, over 1677 days ago. No active maintenance, though it is marked Production/Stable and supports Python 3.7, 3.8, 3.9, and 3.10.
Requires Python 3.7 or later.
License in practice
Licensed under Apache 2.0 (permissive), allowing commercial and private use with minimal restrictions. No license-related barriers to adoption.
Quickstart
from rfc3986 import uri_reference
uri = uri_reference('http://example.com/path?query=value')
print(uri.scheme) # => http
print(uri.host) # => example.com
print(uri.is_valid()) # => True
Verify before relying
- Whether the package receives security patches despite being abandoned, or if known RFC 3986 edge cases remain unfixed.
- Performance characteristics compared to urllib.parse for large-scale URI parsing workloads.
- Compatibility with Python 3.11+ given the last release predates those versions.
Package facts
| License | Apache 2.0 permissive |
| Python support | Supports the current Python release >=3.7 |
| Install friction | Low. Pure-Python wheel |
| Runtime dependencies | None |
| Maintenance | Abandoned 1,677 days since the last release |
| First released | |
| Downloads | 45,139,783 / month, #622 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | Development Status :: 5 - Production/StableIntended Audience :: DevelopersLicense :: OSI Approved :: Apache Software LicenseNatural Language :: EnglishProgramming Language :: PythonProgramming Language :: Python :: 3Programming Language :: Python :: 3 :: OnlyProgramming Language :: Python :: 3.10Programming Language :: Python :: 3.7Programming Language :: Python :: 3.8Programming Language :: Python :: 3.9Programming Language :: Python :: Implementation :: CPython |
Evidence: rfc3986-2.0.0-py2.py3-none-any.whl
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 › “URI validation and normalization”
- rfc3986Parses, validates, and normalizes URIs according to RFC 3986,…
- mdurlProvides URL parsing and manipulation utilities for Markdown…
- rfc3987-syntaxValidates that strings conform to the ABNF syntax rules defined in…
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 pyuri · rfc3986-validator · uritools · rfc3987 · hyperlink · rfc3987-syntax · python-datauri · arcp · uri-template · lazr.uri