PyDoctor
PyDoctor is a free standalone tool that analyzes Python source code statically and generates API documentation as HTML files.
What PyDoctor is
PyDoctor is a free standalone tool that analyzes Python source code statically and generates API documentation as HTML files. The generated pages can be served without additional server-side support, and an Intersphinx inventory supports links with Sphinx documentation. PyDoctor creates a page for each class, module, and package, presenting information in tables. It supports epytext, reStructuredText, Google style, NumPy style, and plaintext docstrings. Its analysis resolves imports and calculates inheritance hierarchies, and it recognizes zope.interface declarations to show which classes implement interfaces and vice versa. Configuration can be set in pydoctor.ini, pyproject.toml, or setup.cfg; command-line options include themes, custom HTML templates, and selection of API objects to document. Installation instructions cover pip through PyPI and apt on Debian derivatives. The project supports Linux, macOS, and Windows, and its documentation describes it as a fit for libraries with some internal subclassing. One limitation is that computed values need type annotations for their types to appear in the generated documentation.
Good
- Generates static HTML without server-side support.
- Supports five docstring formats.
- Resolves imports and calculates inheritance hierarchies.
- Recognizes zope.interface declarations.
- Runs on Linux, macOS, and Windows.
Watch out
- Computed values need annotations for their types to appear.
- Python 3.8 support was dropped in version 25.4.0.
- Development remains primarily driven by Twisted project needs.
Who it suits
PyDoctor suits Python library maintainers who want static API pages, especially for libraries with some internal subclassing. It can also suit projects that need Sphinx cross-links or CI/CD integration.
Verdict
PyDoctor provides structured API pages for Python code, with inheritance and interface information plus options for customization and Sphinx linking. Consider its computed-value annotation limit and the project’s stated focus on Twisted-related needs when deciding whether it fits your documentation workflow.
The facts
Each one read from PyDoctor's own pages, with the date it was checked.
What it does
- API pages
- Pydoctor generates a page for each class, module, and package, and presents information using tables.checked 5 Oct 2026
- Best fit
- The FAQ describes PyDoctor as probably best suited to documenting libraries with some degree of internal subclassing.checked 5 Oct 2026
- Configuration
- Pydoctor supports configuration through pydoctor.ini, pyproject.toml, and setup.cfg files.checked 5 Oct 2026
- Customization
- The CLI provides options for themes, custom HTML templates, and which API objects to document.checked 5 Oct 2026
- Docstring formats
- Supported docstring formats include epytext, reStructuredText, Google style, NumPy style, and plaintext.checked 5 Oct 2026
- Generated output
- PyDoctor generates static HTML pages that need no additional server-side support.checked 5 Oct 2026
- Imports and inheritance
- It resolves imports and computes inheritance hierarchies.checked 5 Oct 2026
- Inheritance and imports
- The tool works to resolve imports and calculate inheritance hierarchies.checked 5 Oct 2026
- Installation
- The documentation gives installation instructions through PyPI with pip and on Debian derivatives with apt.checked 5 Oct 2026
- Intended users
- The documentation says pydoctor is probably best suited to documenting libraries with some degree of internal subclassing.checked 5 Oct 2026
- Interface support
- It supports zope.interface and can show which classes implement which interfaces, and vice versa.checked 5 Oct 2026
- Maintainer context
- The FAQ says PyDoctor was written for the Twisted project, whose needs remain the main driving force for its development.checked 5 Oct 2026
- Notable limitation
- Pydoctor cannot infer types for computed values, so those need annotations for the type to appear in the generated documentation.checked 5 Oct 2026
- Notable Python version limit
- The project changelog says Python 3.8 support was dropped in version 25.4.0.checked 5 Oct 2026
- Output
- It generates static HTML files that can be served without extra server-side support.checked 5 Oct 2026
- Output organization
- PyDoctor generates one page per class, module, and package, and presents information using tables.checked 5 Oct 2026
- Project background
- Pydoctor was written primarily to replace epydoc for the Twisted project, and Twisted remains a main driver of its development.checked 5 Oct 2026
- Publishing
- The documentation gives examples for publishing generated API docs with GitHub Pages and Read the Docs.checked 5 Oct 2026
- Purpose
- PyDoctor is a standalone API documentation generator that uses static analysis of Python source code.checked 5 Oct 2026
- Security policy
- The project says it follows Twisted’s security policy and directs security reports to GitHub Security Advisories.checked 5 Oct 2026
- Sphinx integration
- The FAQ says Sphinx narrative documentation can link to API documentation formatted by PyDoctor.checked 5 Oct 2026
- Supported systems
- The project changelog says it runs on Windows without requiring administrator privileges and describes testing supported platform combinations including Linux, macOS, and Windows.checked 5 Oct 2026
- Zope interfaces
- Pydoctor recognizes zope.interface declarations and can show which classes implement which interfaces, and vice versa.checked 5 Oct 2026
Alternatives to PyDoctor
- 1

Scalar
Free planOpen sourceWebAPILinuxmacOS8.4From $150 a month - 2

Redocly
WebAPIExtension7.0From $10 a month - 3

Sphinx
Free planWebAPILinuxmacOS7.0Free plan - 4

Asciidoctor
Free planWebAPIExtensionLinux6.9Free plan - 5
JSON Schema for Humans
Free planLinuxmacOSSelf-hostedWindows6.5Free plan - 6
StepShot
Free planmacOS6.5CN¥269 one-time
