Documentation Tools Comparison
|
This content was generated with the assistance of AI and should be verified against the official documentation of each tool before being relied on in production. This section’s bibliography lists the reference material consulted while preparing these pages. |
This page compares the four documentation tools of this section: Antora 3.2.1, Docusaurus 3.10.2, Zensical 0.0.72 and DocFX 2.81.0. Material for MkDocs 9.8.0 and MkDocs 1.6.1 appear as context for Zensical, which grew out of them. Every number was fetched on 2026-10-26 and every claim about a feature is explained, with an example, on the page of the tool named in the table. The approach follows the Programming Languages Comparative (issue #196) of this site: data kept in CSV files, charts generated from them, and a stated source and date for every figure. The comparison does not rank the tools, because the right one depends on what is being documented; the last sections turn the data into recommendations by purpose.
Feature matrix
The matrix lists what each tool does by itself, without extra plugins unless the cell says so. A dash means that the tool has no feature of that kind. The linked pages hold the details.
| Feature | Antora | Docusaurus | Zensical | DocFX |
|---|---|---|---|---|
Input formats |
AsciiDoc (Asciidoctor.js) |
Markdown and MDX (Markdown with React components) |
Markdown (Python Markdown and its extensions); reads |
Markdown (DocFX Flavored Markdown), YAML, and .NET XML documentation comments from C# and Visual Basic |
Multi-repository aggregation |
Native: any number of Git repositories, branches and tags in one playbook |
Single project; content from other repositories needs your own step before the build |
Single project; no aggregation feature |
One project per site; separate sites link through cross-reference maps |
Versioning |
Native: each branch or tag with a descriptor becomes a version of a component |
Built in: the |
Transitional fork of |
None documented; build once per version and publish side by side |
Internationalisation (i18n) |
No built-in translation workflow documented |
Built in: locales, translated folders, |
Interface in more than 60 languages; content translation is a roadmap item |
No translation workflow documented; only a companion tool for multi-language folders is listed |
API reference |
None of its own; the Collector extension can run an external generator before the build |
None of its own; TypeDoc and OpenAPI plugins exist |
Python docstrings through mkdocstrings |
Generated from .NET assemblies and XML comments; REST pages from Swagger 2.0 (OpenAPI 3 is not supported in 2.81.0) |
Search |
Optional Lunr extension (alpha); Pagefind and Algolia DocSearch as alternatives |
Algolia DocSearch or a local search plugin, configured by you |
Built-in client-side search |
Client-side search, switched on by a global metadata setting |
Diagrams |
Mermaid, Kroki and others through Asciidoctor extensions |
Mermaid through the theme |
Mermaid through SuperFences |
Mermaid and PlantUML |
Math |
MathJax through an Asciidoctor extension |
KaTeX through the remark and rehype plugins |
MathJax or KaTeX through arithmatex |
Markdown math syntax |
Theming model |
A UI bundle (Handlebars templates, CSS, JavaScript) referenced from the playbook |
A React theme whose components are replaced one by one (swizzling) |
Template overrides, custom CSS and JavaScript, variants |
Templates in layers: built-in templates plus your own folders |
PDF output |
Assembler extension ( |
- |
- (listed on the roadmap) |
|
Blog |
- |
Built in, with tags, authors and feeds |
Native blog and tags |
- |
Build runtime |
Node.js 20 or newer |
Node.js 20 or newer |
Python 3.11 or newer (the build core ships inside the wheel) |
.NET SDK 8 or newer |
Licence |
MPL-2.0 |
MIT |
MIT |
MIT |
Governance |
Open source project hosted on GitLab |
Developed under the Meta open source umbrella; code on GitHub |
Built by the team behind Material for MkDocs, with commercial products (Zensical Studio, Zensical Spark) around the core |
Community-driven under the .NET Foundation; Microsoft Learn no longer uses it |
Maintenance status |
3.2.1 released 2026-10-01 |
3.10 is the last 3.x minor; version 4 exists only as canary builds |
Alpha; 0.1.0 planned for 2026-11-05 |
2.81.0 released 2026-09-25; no support contract |
Details for each column: Antora, Docusaurus, Zensical and DocFX. Two pages cover the cells that most often decide a choice: Antora content sources for aggregation and Docusaurus versioning.
Material for MkDocs and MkDocs share Zensical’s input format and configuration style. Material for MkDocs entered maintenance mode on 2025-11-05 with fixes promised until 2027-05-05, and MkDocs has had no stable release since 1.6.1 on 2024-08-30. The page Migrating from Material for MkDocs covers the move.
Strengths and weaknesses
| Tool | Strengths | Weaknesses | Where it is explained |
|---|---|---|---|
Antora |
Native multi-repository sites and versions from Git; AsciiDoc with resource-ID cross references, partials and examples; UI separated from content; PDF export through an extension |
Smallest ecosystem of the four; several concepts (playbook, sources, UI bundle) before the first page; no API reference generator; search is an alpha extension |
|
Docusaurus |
Largest ecosystem; MDX and React components; built-in versioning, i18n and blog; deep customisation through swizzling |
One project per site; no API generator of its own; search and PDF are not built in; the 3.x line has reached its last minor |
|
Zensical |
Fast builds on a small site (0.27 to 0.31 seconds); reads existing |
Alpha software; no native versioning or content translation yet; a subset of the MkDocs plugins; no PDF |
|
DocFX |
API reference generated straight from .NET XML comments; Swagger 2.0 REST pages; PDF output; .NET tool in the build |
Community-maintained with several hundred open issues; no versions or translations documented; OpenAPI 3 is not supported in 2.81.0; Markdown flavour specific to DocFX |
The strengths and weaknesses come from the official documentation of each tool and from the checks run for the pages of this section; the official sources are listed under References. Three observations deserve a longer explanation.
-
Aggregation and versions are Antora’s reason to exist. Antora builds a site from many repositories, and each branch or tag becomes a version. The other three tools can reach a similar result only by assembling the content first (Docusaurus), by publishing separate sites (DocFX) or by waiting for the roadmap (Zensical). This site uses Antora for that reason: it combines the documentation of about a dozen other repositories, as described in Case study: this site.
-
Docusaurus trades aggregation for reach. Its stars and downloads are an order of magnitude above Antora’s and DocFX’s, and it is ahead of both on the other adoption metrics below, and it is the only one of the four with versioning, i18n and a blog all built in. The price is that every site is a React application, so a documentation team takes on a JavaScript toolchain.
-
Zensical and DocFX answer different questions. Zensical is a Markdown site generator that is replacing Material for MkDocs; DocFX turns .NET code into an API reference. They rarely compete for the same project, because the input they exist for, Markdown prose or .NET code, differs.
Metrics
All metrics below were fetched on 2026-10-26. The data and the way it was fetched are in
scripts/documentation-tools-charts/data/ (the NOTES.md file there lists every source), and the charts are regenerated
with npm run charts:docs-tools.
Adoption snapshot
| Tool | Stars | Forks | Latest stable release | Package downloads | Stack Overflow questions |
|---|---|---|---|---|---|
Docusaurus |
66,588 |
10,099 |
3.10.2 (2026-07-10) |
900,103 npm downloads of |
515 |
Antora (GitLab) |
599 |
395 |
3.2.1 (2026-10-01) |
23,818 npm downloads of |
31 |
Zensical |
6,004 |
137 |
0.0.72 (2026-10-23) |
560,137 PyPI downloads in the last 7 days |
n/a (no tag) |
DocFX |
4,444 |
891 |
2.81.0 (2026-09-25) |
6,554,517 NuGet downloads, cumulative since publication (no weekly figure) |
129 |
Material for MkDocs |
27,587 |
4,152 |
9.8.0 (2026-10-24) |
3,617,790 PyPI downloads in the last 7 days |
42 |
MkDocs |
22,519 |
2,661 |
1.6.1 (2024-08-30) |
4,078,127 PyPI downloads in the last 7 days |
304 |
Sources: the GitHub REST API (stars and forks), the GitLab REST API (Antora), the npm downloads API, pypistats.org, the
NuGet search API and the Stack Exchange API, all queried on 2026-10-26. Stack Overflow counts are the questions carrying
the tags docusaurus, antora, docfx, mkdocs-material and mkdocs.
Community health
| Tool | Contributors | Open issues | Closed issues | Closed share | Stable releases in the last 12 months |
|---|---|---|---|---|---|
Docusaurus |
457 |
277 |
3,211 |
92.1% |
3 |
Antora (GitLab) |
37 |
118 |
1,120 |
90.5% |
3 |
Zensical |
19 |
3 |
537 |
99.4% |
69 |
DocFX |
255 |
403 |
2,132 |
84.1% |
4 |
Material for MkDocs |
311 |
1 |
2,669 |
100.0% |
10 |
MkDocs |
230 |
120 |
2,003 |
94.3% |
0 |
Contributors are GitHub contributors, or committers for Antora on GitLab. Issue counts exclude pull requests. The count of stable releases includes patch releases and was taken over the 365 days before the snapshot. Adopters could be counted only for Docusaurus: about 274 entries in the data file of its official showcase, which is self-reported and curated. Google Trends interest was not queried, because the service has no public interface and its series are relative, so the page does not state a trend value.
Caveats
-
Downloads are not comparable across ecosystems. npm, PyPI and NuGet are inflated differently by continuous integration systems, mirrors and caches, so compare the series of one ecosystem with each other and treat the absolute values between ecosystems as unrelated.
-
Antora is on GitLab and often runs in Docker. GitLab stars and forks do not compare with GitHub’s, and downloads of a container image are not counted by npm.
-
The DocFX figure is cumulative. NuGet only reports a total since the first publication, so DocFX has no weekly value.
-
Zensical is new and partly migration traffic. It launched publicly on 2025-11-05, and part of its downloads are Material for MkDocs users trying a migration.
-
Stars over time are missing. On the snapshot date the GitHub stargazers interface did not return star dates, so no star history is charted.
-
Counts of stable releases only include versions of the form x.y.z, so the two-number MkDocs versions of 2014 and the Docusaurus pre-releases before 2.0.0 are not counted.
Charts
The charts are generated by scripts/documentation-tools-charts/generate-charts.mjs, which reuses the renderers of the
Programming Languages Comparative. Each has axis labels with units, a legend and its own white background, so it reads
the same on a light or a dark page. Every caption names its source and date; the Bibliography of the
Documentation Tools overview lists the services.
Current adoption
Figure 1: repository stars on 2026-10-26. Source: GitHub REST API and, for Antora, GitLab REST API. Docusaurus has about 2.4 times the stars of Material for MkDocs, the next one, and about 110 times the stars of Antora.
Figure 2: downloads in the last 7 days on 2026-10-26, npm for Docusaurus and Antora and PyPI for the Python tools. Source: npm downloads API and pypistats.org. DocFX is n/a because NuGet only reports a cumulative total. Compare bars inside one ecosystem only.
Figure 3: Stack Overflow questions per tool tag on 2026-10-26. Source: Stack Exchange API. Zensical has no tag yet and is shown as n/a, not zero.
Downloads over time
Figure 4: monthly npm downloads of @docusaurus/core and @antora/cli, from the first publication of each package
(2019-04 and 2018-01) to September 2026. Source: npm downloads range API, retrieved 2026-10-26. Docusaurus rose from
about 1.0 million in September 2023 to 2.2 million in September 2025 and 6.0 million in September 2026; Antora rose from
83,279 to 141,185 and 171,344 in the same months. The sharp Docusaurus growth also reflects build systems that install
it on every run.
Figure 5: weekly PyPI downloads (without mirrors) of mkdocs, mkdocs-material and zensical for the complete weeks
of the 180 days before 2026-10-26. Source: pypistats.org. Zensical grew from 169,134 in the week of 2026-04-13 to 560,137
in the week of 2026-10-19, about 3.3 times; Material for MkDocs moved from 3,869,701 to 3,617,790 and MkDocs from
3,800,310 to 4,078,127 over the same weeks.
Release cadence
Figure 6: cumulative number of stable releases (patch releases included) over time. Sources: npm registry (Docusaurus and Antora), PyPI (Zensical, Material for MkDocs and MkDocs) and GitHub releases (DocFX), retrieved 2026-10-26. Zensical published 72 stable releases in under two years, 69 of them in the last 12 months; Material for MkDocs published 420 since 2016; Docusaurus and Antora publish a few releases a year.
Scores on ten axes
The radar charts condense the comparison into ten axes scored from 0 to 10, higher being better. Two axes are
computed from the data of this page: Ecosystem comes from the stars (100 stars scores 0 and 100,000 stars scores 10, on
a logarithmic scale) and Maintenance health averages the recency of the latest release, the number of stable releases in
the last 12 months and the share of closed issues. The other eight are editorial scores with the basis for each one
written next to it in data/radar-scores.csv: 2 means possible only by a custom script, 4 possible with extra
documented work, 6 supported with limits, 8 good built-in support and 10 the defining strength of the tool. Build speed
is the weakest axis: Zensical and Docusaurus have cold-build timings, but from scratch sites of different sizes, so they are not directly
comparable (see Docusaurus Faster), while Antora and DocFX
were not timed and sit at the middle value 5. The scores are a way to read the matrix quickly, not a ranking.
| Axis | Antora | Docusaurus | Zensical | DocFX |
|---|---|---|---|---|
Ease of setup |
4 |
8 |
8 |
6 |
Authoring power |
9 |
9 |
7 |
6 |
Multi-repo aggregation |
10 |
2 |
2 |
4 |
Versioning |
10 |
8 |
3 |
2 |
API reference |
2 |
4 |
5 |
9 |
Customisation |
6 |
10 |
6 |
7 |
Search |
6 |
6 |
8 |
6 |
Ecosystem (computed) |
2.6 |
9.4 |
5.9 |
5.5 |
Build speed |
5 |
6 |
9 |
5 |
Maintenance health (computed) |
6.9 |
6.1 |
9.9 |
6.9 |
Figure 7: the four tools on ten axes. Scores are editorial except Ecosystem and Maintenance health, which were computed
from the metrics of 2026-10-26 (sources as in the figures above, rubric in data/NOTES.md).
Figure 8: Antora. The profile is lopsided: the top scores are aggregation and versioning, the lowest are API reference and ecosystem.
Figure 9: Docusaurus. The largest ecosystem and the deepest customisation, with aggregation and API reference as the gaps.
Figure 10: Zensical. Fast builds and a high maintenance score from frequent releases and a high closed share, against missing versioning and aggregation. The maintenance score does not account for the alpha status.
Figure 11: DocFX. API reference generation from .NET code is the standout; versioning and aggregation are the gaps.
Decision flowchart
The flowchart follows the recommendations below. Start from the main thing the documentation must do.
for a .NET library?"} B -- yes --> DFX["DocFX"] B -- no --> C{"Must one site combine several
repositories or many versions
from Git?"} C -- yes --> ANT["Antora"] C -- no --> D{"Is the content Markdown
and the project Python-first?"} D -- yes --> E{"Can you accept an alpha tool
or stay on Material for MkDocs?"} E -- "accept alpha" --> ZEN["Zensical"] E -- "stay for now" --> MAT["Material for MkDocs
(maintenance mode)"] D -- no --> F{"Do you need a blog, i18n,
React components or built-in
versions?"} F -- yes --> DOC["Docusaurus"] F -- no --> G{"Is the team comfortable
with AsciiDoc?"} G -- yes --> ANT G -- no --> DOC
Figure 12: decision flowchart for choosing a documentation tool. It is a starting point; check the metrics and caveats above before deciding.
Recommendations by purpose
The data snapshot date for every figure below is 2026-10-26.
-
Product documentation spanning many repositories and versions: Antora. It scores 10 on aggregation and on versioning, and no other tool of the four reaches 8 on both (Docusaurus scores 2 and 8, Zensical 2 and 3, DocFX 4 and 2). The cost is the smallest ecosystem: 599 GitLab stars, about 24,000 npm downloads a week and 31 Stack Overflow questions, so expect to read the documentation rather than search for answers, and to maintain the UI bundle. It needs the extra work described in Antora UI bundles.
-
Open source project site with a blog, translations and versioned docs: Docusaurus. It has the most adopters in the data (66,588 stars, 900,103 npm downloads a week, 515 Stack Overflow questions, 457 contributors), and it is the only tool that includes blog, i18n and versioning together. Plan for its single-project model and for the move from 3.10 to 4, as explained in Docusaurus Faster and v4 readiness.
-
Python or Markdown-first projects: Zensical, or Material for MkDocs for now. Zensical grew about 3.3 times in weekly PyPI downloads over six months and published 69 releases in the last year, which supports betting on it, and it reads the existing
mkdocs.yml. It is still alpha at 0.0.72 and lacks native versioning, so a project that needs production stability today can stay on Material for MkDocs, whose maintenance mode promises fixes until 2027-05-05, and plan the move after the 0.1.0 line planned for 2026-11-05. -
.NET libraries that need an API reference: DocFX. It scores 9 on API reference, and the 6.55 million cumulative NuGet downloads show that it is the default .NET tool. Check the 403 open issues and the lack of versions and translations first, and pin the version in continuous integration. OpenAPI 3 files are not supported in 2.81.0.
-
Teams currently on Material for MkDocs: plan, do not rush. The project is in maintenance mode, MkDocs has no stable release since 2024-08-30 and Zensical is the successor from the same team. Follow Migrating from Material for MkDocs and the Zensical roadmap, and rerun the build with
zensical buildon a branch before committing to the change.
The chart tooling is the one of the Programming Languages Comparative (issue #196). The Antora site search page covers the Lunr, Pagefind and Algolia options that issue #255 discusses for this site.