Open-source project
doxygen/doxygen avatar
doxygen/doxygen

Doxygen: Documentation Generator from Annotated Source

Official doxygen git repository

6,588 stars1,364 forksC++GPL-2.0

At a glance

What is it?
A documentation tool that parses comments in C++, C, Python, Java and 10 other languages and generates HTML, PDF, or LaTeX manuals. The same tool can reverse-engineer the structure of undocumented code, draw inheritance and dependency graphs, and cross-link everything automatically.
Who is it for?
Doxygen is for teams maintaining multi-language projects where documentation must track code changes. Skip it if you are writing marketing docs or teaching prose rather than API reference.
Can I use it commercially?
Yes, with conditions. GPL-2.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository last received commits 2 days ago.
What is it written in?
Mainly C++, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 29, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

Why documentation from comments beats separate documentation

Documentation that lives in a separate tool (a wiki, a Word file, a Google Doc) drifts from code. When you change a method signature, the doc is already out of date. Doxygen embeds docs in the source as structured comments, so every time you commit code, the docs update. Running Doxygen generates a complete HTML site or PDF from those comments. No copy-paste, no manual cross-linking. Because the docs are in the repo, code review catches outdated documentation before it ships.

How Doxygen parses comments and what it generates

Doxygen reads specially formatted comments (/** ... */) in your source files and extracts commands that describe classes, methods, parameters, return values, and examples. It builds a model of the entire codebase: what calls what, what inherits from what, which headers depend on which. From that model, it generates HTML pages that link every method to its callers, every class to its subclasses, and every file to its dependencies. Output is also available as PDF (via LaTeX), RTF for Word, DocBook for further processing, or Unix man pages. A single run handles multiple languages: a C++ core library, Python bindings, and Java wrappers in the same documentation site.

Installing and running Doxygen on existing code

Doxygen runs from the command line. The Dockerfile in the repository shows the build process: it requires a C++ compiler, cmake, flex, bison and graphviz (for diagram generation). After installation, create a config file (doxygen -g generates a template), point it to your source directory, and run doxygen. The tool parses every source file, builds the documentation model, and writes HTML to an output directory. For code without comments, Doxygen can still generate a structure diagram showing classes, functions and dependencies.

Why Doxygen on undocumented code is useful despite its limits

If your codebase has no documentation comments, Doxygen still extracts the structure: class names, method signatures, include dependencies. It draws diagrams showing which files include which, which classes inherit from which, and which functions call which. That is useful for onboarding or understanding a large codebase. But without docstrings, the reader never learns what each method does, only its signature and callers. The generated docs become a reference, not a tutorial. For an existing project moving to documented code, Doxygen on raw source is a starting point, not a replacement for human explanation.

Inheritance diagrams, include graphs, and collaboration maps

Doxygen uses graphviz to generate diagrams. Inheritance diagrams show which classes extend which. Include graphs show dependencies between header files. Collaboration diagrams show which functions and classes interact. These are generated automatically from the code, not drawn by hand. For large codebases, the diagrams become cluttered, and Doxygen offers options to limit depth and filter what is shown. The diagrams are clickable in HTML, linking to the relevant source pages.

Output formats and what you lose when you choose one

Doxygen generates HTML (the most complete output, with full linking and search), PDF via LaTeX (readable offline, good for printing, loses some interactive features), RTF for Microsoft Word (editable but breaks with source changes), compressed HTML (smaller file size, good for distribution), DocBook (for further processing), and Unix man pages (for command-line tools). Choose HTML if you are hosting docs online and want search and interactivity. Choose PDF for a snapshot to distribute or print. Choose DocBook if you plan to further edit or convert the output.

11 languages supported; C++ and Python are mature, others have gaps

The last push to GitHub was September 27, two days ago. The latest release is 1.18.0 from August. The project is actively maintained. The license is GPL-2.0. Doxygen supports C++, C, Objective-C, C#, PHP, Java, Python, IDL, Fortran, D, and VHDL, but not all with equal quality. C++ and Python are well-supported. Others may have gaps in diagram generation or advanced features. The tool has been the standard documentation generator for C++ code for decades and is widely used despite newer competitors.

Editorial conclusion

Doxygen is for teams maintaining multi-language projects where documentation must track code changes. Skip it if you are writing marketing docs or teaching prose rather than API reference. Start by reading the examples in the repository, then run Doxygen on your own codebase with a minimal config file. The tool takes minutes to install and produces readable output immediately.

Frequently asked questions

What is Doxygen used for?

Doxygen generates documentation from annotated source code comments. It creates HTML websites, PDFs, and other formats from your code and docstrings, automatically linking classes, methods, files and dependencies.

How do you install Doxygen?

Installation varies by platform. The README points to the installation section of the manual at doxygen.nl/manual/install.html for binary downloads and build instructions.

Can Doxygen create PDF files?

Yes. Doxygen generates PDF through LaTeX. You choose PDF as the output format in the config file, and Doxygen creates a PDF from your documented source code.

Is Doxygen free to use?

Yes, Doxygen is free and open source under the GPL-2.0 license. The source code is on GitHub.

How do you use Doxygen?

Add documentation comments to your source code using special syntax, create a Doxygen config file or use the default, then run the doxygen command. It parses your code and generates documentation in your chosen format.

Official sources

  1. doxygen/doxygen on GitHub
  2. License: GPL-2.0
  3. Project website
  4. README
  5. Releases
For maintainers

Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/doxygen-doxygen.svg)](https://hysenlabs.com/projects/doxygen-doxygen)
Community notes

Community notes