dnspython
DNS toolkit
Decision gist · record as of 2026-08-14
Yes. dnspython is production-stable (Development Status 5), actively maintained with recent commits, has no required dependencies, and ranks in the top 1000 PyPI packages by downloads. The ISC license is permissive. Install it if you need DNS queries, zone operations, or DNSSEC validation in Python; avoid it only if you need simple hostname resolution.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Requires Python 3.10 or later.
- Optional features (DNSSEC, DNS-over-HTTPS, IDNA, Trio, WMI, DNS-over-QUIC) require additional dependencies installed via extras.
- Low friction: pure-Python wheel with no runtime dependencies by default.
License · maintenance · safety
ISC (permissive) — ISC license is permissive and imposes minimal restrictions; you can use, modify, and distribute dnspython with few obligations.
last release 2025-09-07 (341 days) · last repo commit 2026-07-29 · 2,667 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 326,564,406 downloads/mo, #128 on PyPI
Alternatives
Verify before relying
pip install dnspython
Import the package and use high-level query classes to resolve DNS records, or low-level classes to manipulate DNS messages and zones directly.- Whether the package's DNSSEC, DNS-over-HTTPS, and DNS-over-QUIC features are production-ready or experimental.
- Performance characteristics for high-volume DNS queries or zone transfers.
- Specific code examples demonstrating high-level and low-level API usage.
What it is and what it does
dnspython is a comprehensive DNS toolkit for Python that provides both high-level query interfaces and low-level access to DNS zones, messages, names, and records. It supports nearly all DNS record types and can perform queries, zone transfers, and dynamic updates, with optional support for TSIG authentication, EDNS0, DNSSEC, DNS-over-HTTPS, DNS-over-QUIC, and internationalized domain names. The package has no required runtime dependencies beyond the Python standard library, making it lightweight to install and use.
The library is designed for DNS software testing and general-purpose DNS operations. It bypasses system DNS configuration and performs direct DNS queries, making it suitable for applications that need explicit DNS control. High-level classes simplify common tasks like looking up records by name, type, and class, while low-level classes allow direct manipulation of DNS structures for advanced use cases.
Use it for
- Perform DNS lookups and queries for specific record types in Python applications.
- Implement DNS zone transfers and dynamic DNS updates for DNS management tools.
- Validate DNSSEC signatures and perform secure DNS operations when dnssec extra is installed.
- Build DNS testing and validation tools that need direct control over DNS messages and records.
- Query DNS over HTTPS or QUIC for privacy-focused DNS operations with optional extras.
- Resolve internationalized domain names when idna extra is installed.
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes.
dnspython is production-stable (Development Status 5), actively maintained with recent commits, has no required dependencies, and ranks in the top 1000 PyPI packages by downloads. The ISC license is permissive. Install it if you need DNS queries, zone operations, or DNSSEC validation in Python; avoid it only if you need simple hostname resolution.
Install
dnspython on PyPI
Before you install
Low friction: pure-Python wheel with no runtime dependencies by default. Active maintenance with recent commits and 2667 repository stars. Supports Python 3.10 and later.
Requires Python 3.10 or later. Optional features (DNSSEC, DNS-over-HTTPS, IDNA, Trio, WMI, DNS-over-QUIC) require additional dependencies installed via extras.
License in practice
ISC license is permissive and imposes minimal restrictions; you can use, modify, and distribute dnspython with few obligations.
Quickstart
pip install dnspython
Import the package and use high-level query classes to resolve DNS records, or low-level classes to manipulate DNS messages and zones directly.
Verify before relying
- Whether the package's DNSSEC, DNS-over-HTTPS, and DNS-over-QUIC features are production-ready or experimental.
- Performance characteristics for high-volume DNS queries or zone transfers.
- Specific code examples demonstrating high-level and low-level API usage.
Package facts
| License | ISC permissive |
| Python support | Supports the current Python release >=3.10 |
| Install friction | Low. Pure-Python wheel |
| Runtime dependencies | None |
| Maintenance | Actively maintained 341 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 326,564,406 / month, #128 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 :: DevelopersIntended Audience :: System AdministratorsLicense :: OSI Approved :: ISC License (ISCL)Operating System :: Microsoft :: WindowsOperating System :: POSIXProgramming Language :: PythonProgramming Language :: Python :: 3Programming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Topic :: Internet :: Name Service (DNS)Topic :: Software Development :: Libraries :: Python Modules |
Evidence: dnspython-2.8.0-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 › “zone transfer library”
- dnspythondnspython is a DNS toolkit that handles queries, zone transfers,…
- backports.zoneinfoProvides IANA time zone support for Python 3.6–3.8 by backporting the…
- roonapiPython client library for the Roon music server API, enabling…
Give your agent the search over MCP, or paste the wish link into any chat.
More Python Modules packages
Converts domain names between Unicode and ASCII-compatible encoding (Punycode) according to IDNA 2008 and Unicode Technical Standard 46, with security validation and broader script coverage than the standard library.
Install it if you work with internationalized domain names, need to validate domains, or use HTTP clients that depend on it transitively.
Setuptools is a Python build backend and package management tool that handles building, distributing, and installing Python packages, including support for C/C++ extension modules.
PyYAML parses and emits YAML 1.1 data format, enabling serialization and deserialization of configuration files and Python objects to and from human-readable YAML text.
Pydantic validates Python data structures against type hints, coercing and checking input at runtime to ensure it matches a declared schema.
Provides reusable metadata objects for use with PEP-593 `typing.Annotated` to express common constraints like bounds, collection sizes, and predicates on types.
Install it if you use or build libraries that need to express type constraints in a standardized, inspectable way—or if you want to annotate your own types with…
Provides runtime tools to inspect and introspect Python type annotations, enabling programmatic examination of type hints at execution time.
See also dnslib · nslookup · nextdns · pycares · dns-lexicon · azure-mgmt-dns · python-designateclient · aiodns · idna_ssl · py3dns