Skip to content
Comparisons
On this page

How selfdoc compares to Sphinx, MkDocs, Docusaurus, VitePress, Rustdoc, Godoc, and TypeDoc -- features, tradeoffs, and where each tool shines.

#Comparisons

selfdoc takes a different angle from most documentation generators: it extracts content directly from source code through a catalogue of built-in directives, reads nine languages in a single tool, and produces a complete static site with search, SEO, and theming -- out of one Go binary with no runtime to install beside it.

Here is how it stacks up against the popular alternatives.

#Feature Comparison

Feature Comparison
FeatureselfdocSphinxMkDocsDocusaurusVitePressRustdocGodocTypeDoc
Language supportGo, Python, TS/JS, Svelte, Zig, Dart, Kotlin, Swift, SQLPythonAnyAnyAnyRustGoTS/JS
Source code extractionDirective-based, multi-languageAutodoc (Python only)None (plugin-based)NoneNoneBuilt-inBuilt-inBuilt-in
Markdown-nativeYesRST (Markdown via plugin)YesMDXYesNo (doc comments)No (doc comments)No
Zero configNear-zero (selfdoc init)No (conf.py required)Minimal (mkdocs.yml)No (Node project)MinimalZero for RustZero for GoMinimal
Built-in searchPagefind, indexed at build timeYesYes (lunr.js)Yes (Algolia/local)Yes (local)YesNoYes
ThemingBuilt-in themes + CSS propertiesMany themesMany themesMany themesCustomizableOneOneThemes
VersioningBuilt-in multi-version buildsVia extensionsmike pluginBuilt-inVia configPer cratePer moduleNo
i18nBuilt-in multi-locale buildsSphinx-intli18n pluginBuilt-inBuilt-inNoNoNo
Static outputYesYesYesYes (SSG mode)YesYesServer or staticYes
Deploy targetsCloudflare Pages, GitHub PagesAny static hostAny static hostAny static hostAny static hostdocs.rspkg.go.devAny static host

#Where Each Tool Shines

#Sphinx

The heavyweight champion for Python documentation. Sphinx has a massive ecosystem of extensions (intersphinx, autodoc, napoleon, etc.) and handles large, cross-referenced documentation sets better than anything else. If your project is Python-only, has hundreds of modules, and needs cross-project linking, Sphinx is the mature choice. The tradeoff is complexity: conf.py configuration, RST syntax by default, and a significant learning curve.

#MkDocs

The simplest way to put Markdown docs online. MkDocs with Material theme gives you a polished site with minimal config. It does not extract from source code natively, but the ecosystem has plugins for most needs. If you are writing prose documentation (tutorials, guides, architecture docs) rather than API references, MkDocs is fast and well-supported.

#Docusaurus

React-powered documentation with MDX support. Docusaurus is the go-to for JavaScript/React projects that want interactive components in their docs. It has built-in versioning, i18n, and Algolia search integration. The cost is a full Node.js build chain and React in your docs pipeline.

#VitePress

Vue-powered and fast. VitePress is the spiritual successor to VuePress, optimized for speed and simplicity. Great for Vue ecosystem projects and sites that want a modern, minimal build. Less feature-rich than Docusaurus but lighter.

#Rustdoc

The gold standard for language-integrated documentation. Rustdoc extracts docs directly from Rust source comments, runs doctests, and hosts on docs.rs automatically. If you are documenting Rust, there is no reason to use anything else. The format is fixed -- you get what Rustdoc gives you.

#Godoc

Simple, convention-driven documentation for Go packages. Godoc reads package comments and produces consistent, browsable API docs hosted on pkg.go.dev. Like Rustdoc, it is purpose-built for one language and does that job well. No theming, no customization, no search -- just clean API references.

#TypeDoc

API documentation generator for TypeScript and JavaScript projects. TypeDoc reads JSDoc and TypeScript type information to produce reference docs. Strong on types and signatures, but focused on API references rather than full documentation sites.

#selfdoc

selfdoc fits a niche that the others do not cover well: a polyglot repository that wants source-extracted documentation for every language it contains, without switching tools or running one generator per component. The directive system keeps docs in sync with code automatically, and the built-in SEO, search, blog and deploy pipeline means fewer moving parts. The tradeoff is fewer themes and a smaller community than Sphinx or Docusaurus.

Next: Getting Started

More tools from this site

  • claudestream Drive Claude Code from Python: run it as a subprocess and read its output as typed events, with async and sync sessions, sandbox policies, and tools you define in Python
  • claudewheel A TUI Claude Code Launcher that lets you have more than one profile, manage sessions lifecycle, pick the exact CC version, model to use (even older unlisted ones), pick which GitHub account to use, etc.
  • dirstat Fast, single-binary directory statistics CLI: every file under a tree grouped by format, with counts, sizes, and lines of code, as a colored terminal table or as JSON
  • fastware A batteries-included ASGI framework: msgspec JSON, a managed Granian server, dependency injection, SSE, WebSockets, auth, and a test client
  • go-toml-edit Zero-dep TOML editing library for Go with comment preservation
  • howmuchleft The fastest Claude Code statusline: context window, 5-hour, and weekly limit usage as three customizable gradient bars, rendering in about 6 ms
  • orxtra
  • pgdesign
  • predraw Declarative rendering pipeline: describe a scene in JSON and get SVG, PNG and WebP out, with light and dark style tokens, reusable components and text converted to path outlines
  • reposummary Turn a git repository's history into a Markdown journal: pick a time window or revision range and get a readable digest of what changed, optionally narrated by an LLM
  • rlsbl Release orchestration and project scaffolding CLI that bumps versions, validates a structured JSONL changelog, tags only the commit CI verified, and publishes to npm, PyPI, Go and more
  • safegit git wrapper CLI that gives each commit its own temporary index and retries ref updates on conflict, so concurrent agents share one repository
  • saferm Command-line replacement for rm that archives every deletion with a mandatory reason and the context it ran in, so deleted files can be listed, inspected and restored
  • strictcli
  • stricttest An always-on test-isolation floor: a pytest plugin and a Go env-hygiene module that make a test suite structurally unable to reach real credentials, the real HOME, the network, or the development repository.
  • wesktop A Python framework that turns an ASGI web app into a desktop application, serving it from a local Granian server and displaying it in a native OS window via pywebview
Search