The following tables compare general and technical information for a number of documentation generators. Please see the individual products' articles for further information. Unless otherwise specified in footnotes, comparisons are based on the stable versions without any add-ons, extensions or external programs. Note that many of the generators listed are no longer maintained.
Basic general information about the generators, including: creator or company, license, and price.
Name | Creator | Input format | Languages (alphabet order) | OS support | First public release date | Latest stable version | Software license |
---|---|---|---|---|---|---|---|
Ddoc | Walter Bright | Text | D | Windows, OS X, Linux and BSD | 2005/09/19 | DMD 2.078.3 | Boost (opensource) |
Document! X | Innovasys | Text, Binary | C++/CLI only, C#, IDL, Java, VB, VBScript, PL/SQL | Windows only | 1998 | 2014.1 | Proprietary |
Doxygen | Dimitri van Heesch | Text | C/C++, C#, D, IDL, Fortran, Java, PHP, Python | Any | 1997/10/26 | 1.9.1 | GPL |
Epydoc | Edward Loper | Text | Python | Any | 2002/01/— | 3.0 (2008) | MIT |
fpdoc (Free Pascal Documentation Generator) | Sebastian Guenther and Free Pascal Core | Text | (Object)Pascal/Delphi | FPC tier 1 targets | 2005 | 3.2.2 | GPL reusable parts are GPL with static linking exception |
Haddock | Simon Marlow | Text | Haskell | Any | 2002 | 2.15.0 (2014) | BSD |
HeaderDoc | Apple Inc. | Text | AppleScript, Bash, Csh, C, C++, Delphi, IDL, Java, JavaScript, MIG, Pascal, Perl, PHP, Python, Ruby, Tcl | Any Unix-like | 2000/09/— | 8.9.28 (2013) | APSL |
Imagix 4D | Imagix Corp. | Text | C, C++, Java | Windows, Linux, Unix | 1995 | 7.3 | Proprietary |
Javadoc | Sun Microsystems | Text | Java | Any | 1995 | 1.6 | GPL |
JSDoc | Michael Mathews | Text | JavaScript | Any | 2001/07/— | 1.10.2 | GPL |
JsDoc Toolkit | Michael Mathews | Text | JavaScript | Any | 2007? | 2.0.0 | MIT |
mkd | Jean-Paul Louyot | Text | Any with comments | Unix, Linux, Windows | 1989 | 2015 | EUPL GPL |
MkDocs | Tom Christie | Text | Python | Any | 2014/10/29 | 1.5.3 | BSD |
Natural Docs | Greg Valure | Text | Any with comments | Any | 2003/05/26 | 2.0.2 | GPL |
NDoc | Jason Diamond, Jean-Claude Manoli, Kral Ferch | Binary | C# | Windows only | 2003/07/27 | 1.3.1 | GPL |
pdoc | Andrew Gallant | Text | Python | Any | 2013 | 1.0.1 (2021) | Unlicense (PD) |
perldoc | Larry Wall | Text | Perl | Any | 1994 | 5.16.3 | Artistic, GPL |
phpDocumentor | Joshua Eichorn | Text | PHP | Any | 2000 | 3.0.0 | LGPL for 1.x, MIT for 2+ |
pydoc | Ka-Ping Yee [1] | Text | Python | Any | 2000 | in Python core | Python |
RDoc | Dave Thomas | Text | C, C++, Ruby | Any | 2001/12/14 | in Ruby core | Ruby |
ROBODoc | Frans Slothouber | Text | Any with comments | Any | 1995/01/19 | 4.99.36 (2015) | GPL |
Sandcastle | Microsoft | Text | .NET | Windows only | 2008/05/— | 2.4.10520 (2016) | Ms-PL |
Sphinx | Georg Brandl | Text | Ada, C, C++, Fortran, JavaScript, PHP, Python, Ruby | Any | 2008/03/21 | 3.5.4 | BSD |
Visual Expert | Novalys | Text, Binary | C#, PL/SQL, Transact-SQL, PowerBuilder | Windows only | 1995 | 2017 | Proprietary |
VSdocman | Helixoft | Text | VB, VBScript, C# | Windows only | 2003 Oct 2 | 9.0 | Proprietary |
YARD | Loren Segal | Text | Ruby | Any | 2007/02/24 | 0.7.3 | MIT |
Name | Creator | Input format | Languages (alphabet order) | OS support | First public release date | Latest stable version | Software license |
The output formats the generators can write.
HTML | CHM | RTF | LaTeX | PostScript | man pages | DocBook | XML | EPUB | ||
---|---|---|---|---|---|---|---|---|---|---|
Ddoc | Yes | Yes [lower-alpha 1] | No | Yes [lower-alpha 1] | Yes [lower-alpha 1] | Yes [lower-alpha 1] | Yes [lower-alpha 1] | No | Yes [lower-alpha 1] | |
Document! X | Yes | Yes | No | No | No | No | No | No | No | |
Doxygen | Yes | Yes | Yes | Indirectly [lower-alpha 2] | Yes | Indirectly [lower-alpha 2] | Yes | Yes | Yes | No |
Epydoc | Yes | No | No | Yes | Indirectly [lower-alpha 3] | Indirectly [lower-alpha 3] | No | No | No | |
fpdoc | Yes | Native | Yes | Indirectly [lower-alpha 3] | Indirectly [lower-alpha 3] | Yes | No | No | No | No |
Haddock | Yes | Yes | No | No | No | No | No | Partial | No | |
HeaderDoc | Yes | No | No | No | No | No | Yes | No | Yes | |
Imagix 4D | Yes | No | Yes | No | No | No | No | No | No | |
Javadoc | Yes | Indirectly [lower-alpha 4] | Indirectly [lower-alpha 4] | Indirectly [lower-alpha 4] | Indirectly [lower-alpha 4] | Indirectly [lower-alpha 4] | Indirectly [lower-alpha 4] | Indirectly [lower-alpha 4] | Indirectly [lower-alpha 4] | |
JSDoc | Yes | No | No | No | No | No | No | No | No | |
JsDoc Toolkit | Yes | No | No | No | No | No | No | No | Yes+JSON | |
MkDocs | Yes | No | No | No | No | No | No | No | No | No |
Natural Docs | Yes | No | No | No | No | No | No | No | No | |
NDoc | Yes | Yes | No | No | No | No | No | No | No | |
pdoc | Yes | No | No | No | No | No | No | No | No | No |
phpDocumentor | Yes | Yes (1.x only) | No | Yes (1.x only) | No | No | No | Yes (1.x only) | Yes (1.x only) | |
pydoc | Yes | No | No | No | No | No | No | No | No | No |
RDoc | Yes | Yes [lower-alpha 5] | No | No | No | No | Indirectly [lower-alpha 6] | No | Yes [lower-alpha 5] | |
ROBODoc | Yes | Indirectly | Yes | Indirectly [lower-alpha 3] | Yes | Indirectly [lower-alpha 3] | Yes | Yes | No | |
Sandcastle | Yes | Yes | No | No | No | No | No | No | No | |
Sphinx | Yes | Yes | Indirectly [lower-alpha 7] | Yes | Yes | Yes | ||||
Visual Expert | Yes | No | No | No | No | No | No | No | No | |
VSdocman | Yes | Yes | No | Yes | No | No | No | No | Yes | |
YARD | Yes | No | No | No | No | No | No | No | No | |
HTML | CHM | RTF | LaTeX | PostScript | man pages | DocBook | XML | ePub |
possibility of extended customization | generated diagrams | highlighting and linking of generated doc | parameter types extracted | |
---|---|---|---|---|
Ddoc | with macros | |||
Document! X | customizable HTML based templates, custom comment tags | linked graphical object relationship diagrams | internal links and links to .NET framework documentation | types extracted and linked |
Doxygen | with XSLT | caller and callee graphs, dependency graphs, inheritance diagrams, collaboration diagrams | ||
Epydoc | ||||
Haddock | Yes | Yes | ||
HeaderDoc | Custom headers, footers, code coloring, and other CSS styles in individual pages. Project-wide TOC is generated from a user-defined template. | Configurable syntax highlighting/coloring with automatic linking to symbols in declaration, ability to manually link to symbols in discussion, etc. | Provides warnings if tagged parameters do not match code, parsed parameters included in XML output and Doxygen-style tagfile (-D flag in 8.7). Partial C preprocessor support with -p flag. Support for #if/#ifdef control over documentation inclusion using the -D and -U command-line flags. | |
Imagix 4D | customizable through style sheets and CSS | linked hierarchy and dependency graphs for function calls, variable sets and reads, class inheritance and interface, and file includes and interface, intra-function flow charts | fully cross-linked project-wide, including all hierarchy and dependency graphs, metrics tables, source code snippets, and source files | full semantic analysis of source code, including parameter types, conditional compilation directives, macro expansions |
Javadoc | ||||
JSDoc | Yes | |||
JsDoc Toolkit | Yes | |||
mkd | Customisable for all type of comments | 'as-is' in comments | all general documentation; references, manual, organigrams, ... Including the binary codes included in the comments. | all coded comments |
MkDocs | ||||
Natural Docs | ||||
NDoc | ||||
perldoc | Extend the generator classes through Perl programming. | Only linking | ||
pdoc | overridable Jinja2 templates | source code syntax highlighting, automatic cross-linking to symbol declarations | Yes | |
phpDocumentor | Smarty-based templates (1.x), Twig-based templates (2+) | class inheritance diagrams | cross reference to generated documentation, and to php.net function reference | Yes |
pydoc | ||||
RDoc | ||||
ROBODoc | ||||
Sphinx | 10 themes; Jinja2 templating; Python plugins | several in sphinx-contrib, e.g. using aafigure, actdiag, Google Chart, or gnuplot | Table of Contents, Index; cross referencing; syntax highlighting with Pygments | custom objects (such as functions and classes) |
Visual Expert | documentation content and styles customizable | Class inheritance, call trees, dependencies (impact analysis) | internal links between classes, methods, variables, tables, columns... | all types extracted |
VSdocman | full customization for all output formats, templates for MSDN-like output, custom XML comment tags | linked graphical class diagrams, class inheritance tree | internal links and links to .NET framework documentation | types extracted and linked |
YARD | customizable Ruby templates | class diagrams with extra tool | internal classes/modules cross-referenced and Ruby source highlighted |
Literate programming is a programming paradigm introduced in 1984 by Donald Knuth in which a computer program is given as an explanation of how it works in a natural language, such as English, interspersed (embedded) with snippets of macros and traditional source code, from which compilable source code can be generated. The approach is used in scientific computing and in data science routinely for reproducible research and open access purposes. Literate programming tools are used by millions of programmers today.
LaTeX is a software system for typesetting documents. LaTeX markup describes the content and layout of the document, as opposed to the formatted text found in WYSIWYG word processors like Microsoft Word, LibreOffice Writer and Apple Pages. The writer uses markup tagging conventions to define the general structure of a document, to stylise text throughout a document, and to add citations and cross-references. A TeX distribution such as TeX Live or MiKTeX is used to produce an output file suitable for printing or digital distribution.
TeX, stylized within the system as TeX, is a typesetting program which was designed and written by computer scientist and Stanford University professor Donald Knuth and first released in 1978. The term now refers to the system of extensions - which includes software programs called TeX engines, sets of TeX macros, and packages which provide extra typesetting functionality - built around the original TeX language. TeX is a popular means of typesetting complex mathematical formulae; it has been noted as one of the most sophisticated digital typographical systems.
gnuplot is a command-line and GUI program that can generate two- and three-dimensional plots of functions, data, and data fits. The program runs on all major computers and operating systems . Originally released in 1986, its listed authors are Thomas Williams, Colin Kelley, Russell Lang, Dave Kotz, John Campbell, Gershon Elber, Alexander Woo "and many others." Despite its name, this software is not part of the GNU Project.
DocBook is a semantic markup language for technical documentation. It was originally intended for writing technical documents related to computer hardware and software, but it can be used for any other sort of documentation.
Metafont is a description language used to define raster fonts. It is also the name of the interpreter that executes Metafont code, generating the bitmap fonts that can be embedded into e.g. PostScript. Metafont was devised by Donald Knuth as a companion to his TeX typesetting system.
GNU TeXmacs is a scientific word processor and typesetting component of the GNU Project. It originated as a variant of GNU Emacs with TeX functionalities, though it shares no code with those programs, while using TeX fonts. It is written and maintained by Joris van der Hoeven and a group of developers. The program produces structured documents with a WYSIWYG user interface. New document styles can be created by the user. The editor provides high-quality typesetting algorithms and TeX and other fonts for publishing professional looking documents.
Typesetting is the composition of text for publication, display, or distribution by means of arranging physical type in mechanical systems or glyphs in digital systems representing characters. Stored types are retrieved and ordered according to a language's orthography for visual display. Typesetting requires one or more fonts. One significant effect of typesetting was that authorship of works could be spotted more easily, making it difficult for copiers who have not gained permission.
The device independent file format (DVI) is the output file format of the TeX typesetting program, designed by David R. Fuchs and implemented by Donald E. Knuth in 1982. Unlike the TeX markup files used to generate them, DVI files are not intended to be human-readable; they consist of binary data describing the visual layout of a document in a manner not reliant on any specific image format, display hardware or printer. DVI files are typically used as input to a second program which translates DVI files to graphical data. For example, most TeX software packages include a program for previewing DVI files on a user's computer display; this program is a driver. Drivers are also used to convert from DVI to popular page description languages and for printing.
BibTeX is both a bibliographic flat-file database file format and a software program for processing these files to produce lists of references (citations). The BibTeX file format is a widely used standard with broad support by reference management software.
Texinfo is a typesetting syntax used for generating documentation in both on-line and printed form with a single source file. It is implemented by a computer program released as free software of the same name, created and made available by the GNU Project from the Free Software Foundation.
Doxygen is a documentation generator and static analysis tool for software source trees. When used as a documentation generator, Doxygen extracts information from specially-formatted comments within the code. When used for analysis, Doxygen uses its parse tree to generate diagrams and charts of the code structure. Doxygen can cross reference documentation and code, so that the reader of a document can easily refer to the actual code.
Javadoc is a documentation generator created by Sun Microsystems for the Java language for generating API documentation in HTML format from Java source code. The HTML format is used for adding the convenience of being able to hyperlink related documents together.
Embedded Ruby is a templating system that embeds Ruby into a text document. It is often used to embed Ruby code in an HTML document, similar to ASP and JSP, and PHP and other server-side scripting languages. The templating system of eRuby combines Ruby code and plain text to provide flow control and variable substitution, thus making the combined code easier to maintain.
HeaderDoc is a documentation generator developed and maintained by Apple Inc. Using specially commented source code files as input, HeaderDoc generates documentation for the code in HTML or XML format. Syntax for HeaderDoc comment tags is largely similar to, and as of HeaderDoc version 8, supportive of Javadoc tags. HeaderDoc 8.7 and later also provides partial support for many Doxygen tags. Apple's HeaderDoc project is free, open source software distributed under the Apple Public Source License.
Sandcastle is a documentation generator from Microsoft. It automatically produces MSDN-style code documentation out of reflection information of .NET assemblies and XML documentation comments found in the source code of these assemblies. It can also be used to produce user documentation from Microsoft Assistance Markup Language (MAML) with the same look and feel as reference documentation.
NDoc is a code documentation generator for the Common Language Infrastructure created by Jason Diamond, Jean-Claude Manoli and Kral Ferch. It is licensed under the GNU General Public License.
RDoc, designed by Dave Thomas, is an embedded documentation generator for the Ruby programming language. It analyzes Ruby source code, generating a structured collection of pages for Ruby objects and methods. Code comments can be added in a natural style. RDoc is included as part of the Ruby core distribution. The RDoc software and format are successors to the Ruby Document format.
YARD, is an embedded documentation generator for the Ruby programming language. It analyzes the Ruby source code, generating a structured collection of pages for Ruby objects and methods. Code comments can be added in a natural style.