fqdn
Validates fully-qualified domain names against RFC 1123, so that they are acceptable to modern bowsers
Install
fqdn on PyPI
pip
pip install fqdnuv
uv add fqdnpoetry
poetry add fqdnPackage facts
| License | MPL 2.0 (copyleft) |
| Python support | supports the current Python release (>=2.7, !=3.0, !=3.1, !=3.2, !=3.3, !=3.4, <4) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 1 — cached-property |
| Maintenance | aging — 1,981 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: fqdn-1.5.1-py3-none-any.whl
Keywords: fqdn, domain, hostname, RFC3686, dns
About fqdn
from the package's own PyPI description — quoted content, verbatim
.. ............................................................................. .. AMAZING REFERENCES .. ............................................................................. .. |Python Versions| image:: https://img.shields.io/pypi/pyversions/fqdn.svg :target: https://pypi.org/project/fqdn/
.. |Build Status| image:: https://github.com/ypcrts/fqdn/actions/workflows/unit-tests.yml/badge.svg :target: https://github.com/ypcrts/fqdn/actions/workflows/unit-tests.yml
.. |Coverage Status| image:: https://codecov.io/gh/ypcrts/fqdn/branch/develop/graph/badge.svg?token=cavArywW2X :target: https://codecov.io/gh/ypcrts/fqdn
.. |Latest PyPI Version| image:: https://img.shields.io/pypi/v/fqdn.svg :target: https://pypi.python.org/pypi/fqdn
.. |Downloads| image:: https://pepy.tech/badge/fqdn :target: https://pepy.tech/project/fqdn
.. |Monthly Downloads| image:: https://pepy.tech/badge/fqdn/month :target: https://pepy.tech/project/fqdn/month
.. |License Status| image:: https://app.fossa.com/api/projects/git%2Bgithub.com%2Fypcrts%2Ffqdn.svg?type=shield :target: https://app.fossa.com/projects/git%2Bgithub.com%2Fypcrts%2Ffqdn?ref=badge_shield
.. |License Status...
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
Validates fully-qualified domain names (FQDNs) against RFC 1123 and related IETF specifications, with configurable strictness to allow relaxed hostname formats like those without periods or with underscores.
Low friction: pure Python wheel with a single lightweight runtime dependency (cached-property). Last release was 2021-03-11, now 1981 days old; repo remains active with recent commits (2025-03-05) and is not archived, suggesting maintenance despite aging status.
MPL 2.0 is a copyleft license requiring derivative works to disclose source and license under the same terms. If you modify fqdn itself, you must publish those changes under MPL 2.0; using it unmodified as a dependency typically poses no distribution burden.
Usage
pip install fqdn
from fqdn import FQDN
domain = FQDN('bbc.co.uk')
print(domain.is_valid) # True
print(domain.absolute) # 'bbc.co.uk.'
Verdict: A stable, low-friction FQDN validator with no known vulnerabilities and broad Python support (2.7, 3.5+). Aging maintenance (last release 2021) is offset by recent repo activity and production-grade status. MPL 2.0 copyleft applies only if you modify the package itself. Suitable for RFC-conformant hostname validation in DNS, email, and web contexts.
Needs verification
- Whether the 1981-day gap since last release reflects intentional stability or reduced active maintenance.
- Performance characteristics or benchmarks for large-scale validation workloads.
- Compatibility of cached-property dependency across all declared Python versions (2.7–3.9+).
Similar packages
permissive · top 1,000 on PyPI
tableauserverclientpermissive · top 1,000 on PyPI
email-validatorpermissive · top 1,000 on PyPI
tldextractpermissive · top 1,000 on PyPI
asn1cryptopermissive · top 1,000 on PyPI
certificopyleft · top 100 on PyPI
PyOTPpermissive · top 1,000 on PyPI
playwrightpermissive · top 1,000 on PyPI
dnspythonpermissive · top 1,000 on PyPI
rfc3339-validatorpermissive · top 1,000 on PyPI