Comparison with other static site generators

This table was compiled in the spring of 2025 (Soupault 5.0.0, Jekyll 4.4.1, Hugo 0.146.7, Zola 0.20.0). If you spot outdated or incorrect information, let me know!

Hugo Zola Jekyll Soupault
Single executable Yes Yes No Yes
Installed size1 50 MB 40 MB ~3 MB by itself, ~57 MB with the Ruby runtime and dependencies 24 MB
Extensibility None2 Ruby plugins Lua plugins, external tools
Built-in web server Yes No (an intentional choice)3
Page formats Markdown (built-in or Pandoc), Org Mode (built-in); AsciiDoc, reStructuredText (external helpers, hardcoded4) Markdown Markdown (built-in), any (via convertor plugins) HTML (built-in), Markdown (built-in), any (via page preprocessors)
Markdown processor GoldMark (built-in), pandoc (hardcoded options) pulldown-cmark kramdown (built-in), any (via plugins) Cmarkit (built-in), any (via page preprocessors)
Config format TOML, YAML, JSON TOML TOML, YAML TOML
Syntax highlighting Built-in (Chroma), hardcoded syntax rules Built-in, supports external syntax files Built-in (Rouge), any (via plugins). No built-in, any (via element preprocessors or plugins)
Pagination Built-in Built-in or plugins No built-in, done by Lua plugins
Multilingual sites Yes (built-in) Yes (built-in) Plugins exist Can be implemented with Lua
Content model Blog (built-in), extensible No built-in, extensible5
Front matter YAML, JSON, TOML, Org TOML YAML None. Metadata is extracted from HTML using CSS selectors, similar to microformats
Theming Requires a compatible theme Any HTML page can be used as a “theme”6
Can work with existing websites No Yes, supports an HTML post-processor mode
Table of contents Markdown and AsciiDoc only, black box7 Markdown only, ToC datastructure available to templates No built-in, various plugins available Any format (generated from HTML headings after preprocessing), picks up the id from <h*> tags for fully-persistent anchors, highly configurable, ToC datastructure is available to Lua plugins
Footnotes Markdown only, manual Markdown built-in, various plugins LaTeX-like, automatic back links, configurable

1On Linux for x86-64, may be slightly different for other platforms.

2Hugo and Zola include a Turing-complete template processor, so it's possible to add custom logic to control its built-in functions. However, it's impossible to add any new functionality with loadable plugins or external helpers.

3On most systems these days, you can serve a directory with python3 -m http.server, or one of the many small web server projects. As of page watching and live rebuild, I'm not convinced that it's useful enough to justify the complexity.

4For some of the helpers, Hugo offers a limited range of built-in options, e.g., for AsciiDoc (see markup/asciidocext/internal/converter.go). However, it's impossible to add new helpers or pass new options to existing helpers without modifying the Hugo source code.

5You configure a mapping of CSS selectors of elements to extract metadata from to index fields, then give a template or a script that defines how to render it.

6This is a complicated question, of course. A typical CMS/SSG “theme” isn't a theme in the same sense as a desktop theme—it's a mix of presentation (HTML/CSS) and logic (templates). Soupault separates presentation and logic, so it's possible to grab any empty HTML page and set up soupault to insert generated content into it. Of course, it does need to be configured to match the structure of that page to insert right things in the right places.

7ToC is a feature of the Markdown and AsciiDoc libraries it uses rather than of Hugo itself, so uses have limited control over its rendering and cannot use extracted headings in their own ways.