When I decided to build a technical blog, I spent time evaluating my options. The two that kept coming up were Zola and Astro. Both are capable. Both are actively maintained. But they represent meaningfully different philosophies.

Here is what I found after actually using both.

The core difference

Zola is a single-binary static site generator written in Rust. No Node.js, no build pipeline, no npm dependencies. You write Markdown, define Tera templates, optionally write Sass, and zola build produces a static site. That is the entire stack.

Astro is a modern frontend meta-framework. It supports multiple component frameworks (React, Vue, Svelte, Solid), has a rich ecosystem, and ships an “islands” architecture for partial hydration. It is powerful and developer-friendly.

The difference: Zola is a publishing tool. Astro is a web development framework that also supports content.

When Zola wins

If your primary goal is shipping long-form content quickly with minimal operational overhead, Zola is the clear answer.

  • Zero runtime dependencies
  • Sub-second build times even on large sites
  • Sass compilation built in
  • Syntax highlighting built in
  • RSS/Atom feed generation built in
  • No npm audit warnings, no dependency drift

The template language (Tera) is limited compared to JSX, but for a blog, that limitation is a feature. You cannot accidentally introduce unnecessary complexity.

When Astro wins

Astro is the better choice when you need component-level interactivity, want to pull in React component libraries, or are building something closer to a content-driven application than a pure publication.

For a personal blog focused on writing, those needs do not arise. Introducing Astro’s dependency footprint for a static blog is overengineering.

The honest tradeoff

Zola’s templating is less expressive than JSX. If you want to build sophisticated UI components, Zola is frustrating. The ecosystem is small. Debugging Tera template errors is occasionally opaque.

But for a blog that needs to stay fast, stay maintainable, and stay focused on content — Zola removes entire categories of problems by simply not having them.

That is why I chose Zola for this site.