Skip to content

guide

Do you actually need a static site generator?

A static site generator is a good answer to a question a lot of teams have not asked yet. Here is what it actually buys you, what it costs to keep, and the three cases where the honest answer is that you do not need one.

published · 6 min read

the short version

You need one if your docs must live beside code in a repository, build offline, or be extended with plugins. You do not need one if what you actually wanted was a fast, searchable site and a generator is simply the route you were told to take.

What a static site generator actually buys you

A generator turns a folder of Markdown into HTML. Everything good about that follows from the output being plain files with no application behind them.

  • Speed. There is no server rendering anything per request, so a page is as fast as the network.
  • Cheap, sturdy hosting. Files on a CDN. Nothing to patch, and a traffic spike is a bandwidth bill rather than an outage.
  • Diffable content. Markdown in a repository reviews like code, which is the single best thing that ever happened to technical writing.
  • No lock-in at the format layer. Your content is text files that will open in anything, forever.
  • Extensibility. Plugins that generate API reference from source, pull in a changelog, or check every link at build time.

That list is genuinely strong, and it explains why generators won. But read it again and notice how much of it is about the *output* rather than about you running the generator. Speed, cheap hosting and plain-text content are properties of any static docs site, whoever builds it.

What it costs to keep, which nobody puts in the tutorial

Getting a generator running is an afternoon and it is genuinely satisfying. The cost is not the afternoon. It is the standing obligation you signed up for without noticing.

  • A build environment — a Python or Node version, a lockfile, and the day the runner image changes underneath it.
  • A CI workflow that someone owns, and that will eventually fail for a reason unrelated to your writing.
  • A theme that gets updates, and occasionally a major version with breaking changes.
  • Plugins, each of which is a small dependency with its own opinions about compatibility.
  • Hosting, DNS and a certificate, which are easy until the person who set them up has left.
  • A publishing path a non-engineer cannot use, which quietly decides who is allowed to write.

The last one is the expensive one and it never appears on a comparison table. If publishing requires a pull request, then support, sales and the founder do not update the docs. The docs become an engineering artefact, and everything those people know stays in Slack.

A worked example of the drift

The most common failure is not dramatic. The site builds fine for eight months, then a dependency in the theme needs a newer runtime, the pinned version in CI is now unsupported, and updating it turns out to require touching three other things. Meanwhile the docs are a week out of date and the person who could fix the pipeline is mid-sprint. Nothing is broken enough to prioritise, which is exactly why it stays broken.

When you genuinely do need one

These are good reasons and no hosted service should talk you out of them.

  • Docs version with the code. They live in the same repository, review in the same pull requests, and a release tag has to produce matching documentation.
  • Reference is generated from source. Docstrings, an OpenAPI file, a schema. A plugin does this and nothing hosted will.
  • The build must run offline — an air-gapped network, or a compliance rule that forbids sending content to a third party.
  • You need a theme you control, because your docs are part of a product surface with design requirements a settings page cannot express.
  • You already have the pipeline and someone who likes it. This is a completely valid reason. Do not fix it.

If two or more of these are true, self-host. It is free, the tools are good, and the constraints are ones a hosted platform cannot design around.

When you do not

The three cases below are extremely common, and in all three a generator is a route rather than a requirement.

The docs are prose, and the writers are not engineers

A handbook, an onboarding guide, a support knowledge base, a set of runbooks. Nothing is generated from source, and the people with the knowledge do not work in a repository. Every layer of pipeline between them and the page is a reason a page does not get updated.

You are one person, and the pipeline is the project

A solo maintainer or a small team where the docs infrastructure is competing for time with the actual product. The generator is not the constraint; attention is.

You wanted a fast searchable site and were handed a build system

This is the biggest group. Nothing in the requirements said "static site generator" — they said search, navigation, a domain, something that loads quickly. A generator provides those, and so does anything else that produces a static site.

A short way to decide

Answer these five honestly and the answer usually falls out.

QuestionIf yes
Must the docs live in the same repo as the code?Self-host a generator
Is any page generated from source by a plugin?Self-host a generator
Must the build run with no internet?Self-host a generator
Will a non-engineer need to publish a fix alone?Use something hosted
Is “nobody owns the pipeline” already true?Use something hosted

If the top three are all no and either of the bottom two is yes, you are maintaining a build system to get a website, and the build system is not the part you wanted.

Worth knowing: choosing hosted does not have to mean leaving the format. Docszero builds with Zensical, written by the Material for MkDocs team as their successor, and Export source hands back your Markdown with a config that builds with plain Zensical — so the generator route stays open the whole time.

Questions

What is a static site generator?

A program that turns a folder of content files — usually Markdown — into plain HTML, CSS and JavaScript that can be served from any web server or CDN with no application behind it. MkDocs, Hugo, Docusaurus, Jekyll and Zensical are all static site generators.

Do I need a static site generator for documentation?

You need to run one yourself if your docs must live in the same repository as your code, if pages are generated from source by a plugin, or if the build has to run offline. If none of those apply, what you need is a static site — and something hosted can produce the same output without you owning a build pipeline.

What is the real cost of self-hosting a docs generator?

Not the setup, which is an afternoon. The standing cost is a build environment, a CI workflow, a theme with updates, plugins with compatibility opinions, hosting and DNS — plus the quiet cost that a pull-request publishing path decides who on your team is allowed to write documentation.

Can I start hosted and move to a generator later?

Yes, if the platform lets you export the source rather than only the built HTML. Docszero’s Export source gives you your Markdown with a generated config that builds with plain Zensical, so moving to self-hosting is a download rather than a migration project. Check for that before you commit either way.

Is a static site generator faster than a hosted docs platform?

Not inherently. Speed comes from serving pre-built files off a CDN, which is a property of the output rather than of who ran the build. A hosted platform that also produces static output is the same shape; a platform that renders pages per request is not.

Try the free plan instead of reading about it

One site, your own docszero.com subdomain, full-text search and the export button, free forever and without a card. Pro is $19.99 a month when you want your own domain, your own look and the badge gone.

  • Drag in a folder of Markdown, a zip, a Word document or a PDF
  • Search, navigation and a 404 page are built for you
  • Export the built site or the source on every plan, free included