Doxygen

Doxygen is a documentation generator created by Dimitri van Heesch and first released in 1997. Its own site describes it as “a widely-used documentation generator tool in software development” that “automates the generation of documentation from source code comments.” The project’s repository goes further, calling it “the de facto standard tool for generating documentation from annotated C++ sources.” For decades it has been the default way that C and C++ projects publish their reference documentation.

The tool works by parsing source files and the specially formatted comments embedded in them, then producing a navigable set of documentation pages. It supports a wide range of languages beyond C++, including C, Python, PHP, Java, C#, Objective-C, Fortran, VHDL, and IDL, which made it a common choice for mixed-language codebases. Output can be generated in several formats: HTML for browsing, PDF through LaTeX, RTF for word processors, and XML for further machine processing.

Beyond extracting comments, Doxygen offers features that help readers navigate large codebases. It cross-references symbols so that a function name links to its definition, and it can generate diagrams such as class hierarchies and collaboration diagrams to visualize relationships in the code. It also understands Markdown within comments, letting authors format descriptions with familiar lightweight syntax. Behavior is controlled through a configuration file conventionally named the Doxyfile.

Doxygen is free, open source, and cross-platform, and its source lives on GitHub under the doxygen organization. The repository’s readme closes with the author’s own signature, “Enjoy, Dimitri van Heesch,” a small reminder that a tool relied on by an enormous swath of the C++ world began as one developer’s project.

By making API reference documentation a mechanical product of annotated source, Doxygen embodies the same logic that Javadoc brought to Java: the documentation lives with the code, stays close to what it describes, and is regenerated as the code changes. That places it squarely within the docs-as-code tradition, where documentation is built from version-controlled text rather than maintained as a separate manuscript.

Sources

Last verified June 8, 2026