skillfed

fqdn

Validates fully-qualified domain names against RFC 1123, so that they are acceptable to modern bowsers

fqdn Copyleft license MPL 2.0 AGING 37 v1.5.1 released

Install

fqdn on PyPI

pip

pip install fqdn

uv

uv add fqdn

poetry

poetry add fqdn

Package 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

Development Status :: 5 - Production/StableEnvironment :: Web EnvironmentIntended Audience :: DevelopersIntended Audience :: System AdministratorsLicense :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)Operating System :: OS IndependentProgramming Language :: Python :: 2.7Programming Language :: Python :: 3.5Programming Language :: Python :: 3.6Programming Language :: Python :: 3.7Programming Language :: Python :: 3.8Programming Language :: Python :: 3.9Programming Language :: Python :: Implementation :: CPythonProgramming Language :: Python :: Implementation :: PyPyTopic :: InternetTopic :: Internet :: Name Service (DNS)Topic :: System :: Systems AdministrationTopic :: Utilities

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+).
fqdn validationdomain name validatorrfc 1123 hostname checkdns hostname validationfully qualified domain name parserinternet hostname validatordomain name rfc compliance

Similar packages