Key takeaway: Almost every generator assumes it owns your HTML. Soupault assumes the HTML already exists and its job is to rewrite it, which makes it the unusual right answer for legacy migrations and hand-written sites you want to enhance rather than rebuild. Greenfield projects should not start here.
Quick facts
- LanguageOCaml
- CategoryJS / TS plain
- LicenseMIT
- Created2020
- GitHub stars0.5k
- Statusactive
Templating: HTML Lua plugins
What it is
Soupault is unusual, it processes HTML files directly, rewriting them with plugins (Lua-based). No templates in the traditional sense. Good for teams that want to mix-and-match content sources.
Best for
- Sites where the content is already HTML (legacy migrations)
- Teams that prefer post-processing over templating
When not to pick it
Skip Soupault for greenfield projects where templated SSGs will be more straightforward.
My take
Interesting tool with a specific use case. If you have a stack of HTML files you want to enhance without templating, this is a niche answer.
Post-processing instead of templating
Soupault reads finished HTML files, parses them into a document tree, and runs a sequence of rules over that tree: insert a table of contents at this element, take the page title from the first heading, wrap every table in a scrolling container, generate an index from these files. There are no layouts in the usual sense; there is a page template and a set of transformations applied to what already exists. It does ship a built-in CommonMark processor with the usual extensions, so Markdown pages work without extra tooling, and you can swap in an external preprocessor when you want a different flavour. Extensions are written in Lua, embedded in the binary, so you get real scripting without adding a Node or Python dependency to the build. The executable is OCaml-compiled with no runtime requirements, which makes CI painless.
Who this actually suits
The strongest case is a pile of existing HTML, an old hand-built site, exported documentation, output from some other system, that you want to give consistent structure and a shared shell without rewriting every file into Markdown with front matter. Soupault does that with a config file and a few Lua scripts, and the diff is small. It is also a fair fit for people who dislike template languages on principle and would rather write transformations. What it is not is a fast path to a blog: pagination, taxonomies, and feeds are assembled from index queries rather than handed to you, and the community is small enough that you will be reading the manual rather than finding a tutorial. For a normal content site Eleventy offers similar flexibility with far more prior art.
Frequently asked questions
What is Soupault written in?
OCaml, distributed as a single self-contained binary with no runtime to install, which makes it trivial to drop into a CI job. Plugins are written in Lua, which is embedded in the binary rather than requiring a separate interpreter. That means the whole build has exactly one dependency, which is a large part of the appeal for people maintaining older sites.
Can Soupault use Markdown?
Yes. It ships a built-in CommonMark processor with common extensions, and you can point it at an external converter instead if you want a different Markdown flavour. The thing to understand is that HTML is still the format it thinks in: Markdown is converted first, then the transformation rules run over the resulting HTML. That order is the whole design.
Soupault or Eleventy?
Eleventy for a normal content site where you author in Markdown and want templates, plugins, and plenty of examples to copy from. Soupault when the source material is already HTML and rewriting it in place beats rewriting it into another format first. The question is whether your content is being authored fresh or inherited, because that is the whole distinction.
Links
Similar tools you should also consider
If Soupault is your pick, the next conversation is short
The 30-min call is where your project gets a real architecture, an SEO transport plan, and a price range you can take to your team. Describe your site, your timeline, your existing content. I tell you whether Soupault is genuinely the right call for you, and what the build actually looks like.