· static-sites / astro / hugo
Best static-blog stack in 2026
Astro 6.4 is the right default for most static blogs: best DX, built-in i18n, zero JS shipped by default, and Content Layer API makes large Markdown sites fast. Hugo wins if you have 10k+ pages or non-negotiable CI speed. Skip Gatsby entirely.
By Ethan
1,556 words · 8 min read
Use Astro 6.4 for almost everything. If your site is large enough that build time shows up on your sprint board, use Hugo v0.162.1 instead. Eleventy 3.1.5 is worth knowing if you want minimal JavaScript and a small install footprint. Skip Gatsby — it’s effectively unmaintained. Next.js works for blogs but was not designed for them, and the overhead shows.
Who this is for
Static-blog developers who want to pick a framework in 2026 without spending a week on benchmarks. If your site has a server component, API routes at request time, or ISR, this comparison will miss your tradeoffs — the full-stack deploy comparison is more relevant.
How we evaluated
Build-speed figures come from Zachary Leatherman’s 2022 benchmark (4k files, identical content, same machine). Adoption data is from State of JS 2024 and npm download trends. We ran hands-on tests for DX — project scaffolding, content setup, i18n wiring.
Version numbers pinned at publish time: Astro 6.4.0 (May 28, 2026), Hugo v0.162.1 (May 28, 2026), Eleventy v3.1.5 (Mar 18, 2026), SvelteKit 2.61.1 (May 24, 2026), Next.js v16.2.6 LTS (May 7, 2026), Gatsby v5.16.1 (Feb 10, 2025).
The stacks
Astro 6.4
Astro is the right default for most static blogs in 2026. It ships zero JavaScript by default — components are rendered to HTML at build time unless you explicitly opt into client-side hydration. That one decision puts it ahead of every React-based framework for content sites where page weight matters.
The Content Layer API (introduced in Astro 5.0) benchmarks at up to 5× faster for Markdown-heavy sites compared to Astro’s prior content collections. In Leatherman’s 4k-file test, Astro comes in at ~22.9s — not Hugo-fast, but fast enough that it won’t be the thing slowing your CI.
The DX is the strongest in this group. astro add wires up integrations in one command. Built-in i18n landed in v3 and has gotten meaningfully better: you define locales in astro.config.mjs, add a [locale] route prefix, and Astro handles the routing. No third-party library required. MDX works out of the box.
Adoption backs this up. Downloads grew 2.5× in 2025 to roughly 900K/week. Astro ranked 4th in Stack Overflow’s 2025 most-admired frameworks list.
Deploy anywhere static files land: Cloudflare Pages, Vercel, Netlify, GitHub Pages. No platform lock-in.
Pick Astro if: you’re starting a new blog, you want components and MDX, or you care about shipping minimal JavaScript.
Hugo v0.162.1
Hugo is the undisputed build-speed champion. Leatherman’s benchmark clocks it at 0.68s for 4k pages — against Astro’s ~22.9s on the same test.
“Hugo remains the undisputed speed champ — no question about that.” — Zachary Leatherman, 2022
For a 50-post personal blog, this difference is invisible. For documentation sites, large news archives, or any site where a slow build meaningfully affects iteration speed, Hugo is the correct tool. It also ships zero JavaScript by default and has built-in i18n that is more mature than any framework on this list — Hugo has had it for years.
The tradeoff is Go templates. If you’ve never written Go, the template syntax — {{ range .Pages }}, {{ with .Site.Params.something }} — takes adjustment. It’s not difficult, but it’s not JSX. Hugo has no MDX equivalent; you can get shortcodes and partial templates, but not component composition in the React sense. Custom data pipelines are Go modules or external scripts, not npm packages.
Pick Hugo if: build time matters to you, you have 10k+ pages, or you want a small binary with no Node.js dependency.
Eleventy 3.1.5
Eleventy is the most honest framework on this list about what it does and doesn’t do. It ships zero JavaScript. The install is 21.4 MB — compare that to frameworks with 300 MB+ node_modules. Build time is 1.93s for 4k files in Leatherman’s benchmark, second only to Hugo.
v3 went ESM-first with a clean break from CJS. The plugin ecosystem handles MDX and syntax highlighting, but these are not built in — you’re assembling a small stack rather than accepting defaults.
The big absence is i18n. Eleventy has no built-in multilingual routing. There are community approaches (separate output directories, custom data files, permalink tricks) but none are as clean as Hugo’s or Astro’s native implementations. If i18n is a hard requirement and you want Eleventy, budget time for the setup.
Pick Eleventy if: you want the smallest possible footprint, you’re already comfortable with its Nunjucks/Liquid/JavaScript template options, and i18n is not a core requirement.
SvelteKit 2.61.1
SvelteKit is a solid choice if you’re already writing Svelte. The DX is good, builds are fast, and adapter-static with prerender = true gives you a static site. If you’re not already in the Svelte ecosystem, it’s a harder sell for a blog specifically.
The gaps: no built-in i18n (community libraries like svelte-i18n work, but they’re not framework-native), and SvelteKit ranked fourth in professional usage in State of JS 2024 — not fringe, but clearly behind React-based frameworks and Astro in mindshare. The component runtime ships to the client by default, which adds weight that Astro and Eleventy avoid.
SvelteKit users report high satisfaction in State of JS 2024, so developers who use it tend to like it. The issue is the table stakes: for a new blog project with no Svelte context, Astro does more out of the box.
Pick SvelteKit if: you’re already a Svelte developer and want a consistent stack. Otherwise there’s no compelling reason to pick it over Astro for a blog.
Next.js 16.2.6 (static export)
Next.js can produce a static blog. Set output: 'export' in next.config.js and it generates HTML files. It works. But the documentation for this mode is three pages buried under “Guides,” and the note at the top reads:
“ISR is not compatible with
output: 'export'.”
That’s the tell. Next.js is a React application framework that added static export as an escape hatch. The runtime ships ~80 KB of React to every visitor by default. Build time for Leatherman’s 4k-file test is ~70.6s (file routing) — slower than every other framework here. App Router adds complexity that a blog doesn’t need.
If your team is already deep in Next.js and you want consistent tooling, it’s fine. But if you’re starting fresh and your goal is a fast, maintainable blog, you’re fighting the framework’s grain.
Pick Next.js if: your blog is embedded in a larger Next.js app and consolidating tooling matters more than framework fit.
Gatsby v5.16.1
Don’t use Gatsby for new projects. The last release was February 10, 2025 — over 15 months ago at time of writing. The GitHub Discussions thread on maintenance mode has been open since 2024. Netlify, which acquired Gatsby, has shifted engineering focus elsewhere.
The ecosystem is in decay: plugins that were actively maintained in 2023 have accumulated unanswered issues. If you have an existing Gatsby site, it runs, but budgeting migration time to Astro or Eleventy is the responsible call.
Comparison
| Stack | Version | Build: 4k pages | i18n | MDX | Default JS |
|---|---|---|---|---|---|
| Astro | 6.4.0 | ~22.9s | Built-in | Built-in | 0 KB |
| Hugo | 0.162.1 | 0.68s | Built-in | Via shortcodes | 0 KB |
| Eleventy | 3.1.5 | 1.93s | Via plugins | Via plugin | 0 KB |
| SvelteKit | 2.61.1 | — | Community libs | — | Svelte runtime |
| Next.js | 16.2.6 | ~70.6s | Via config | Built-in | ~80 KB React |
Build benchmarks from Leatherman 2022 (4k files, same machine and content).
Verdict
Use Astro 6.4 for most blogs. Best DX, built-in i18n, zero JS shipped by default, active community. It’s the framework that makes the most tradeoffs in the right direction for content publishing.
Use Hugo if build speed is non-negotiable. 10k+ pages, documentation sites, CI pipelines where build time is a real cost. The Go template syntax is the price you pay. It’s a reasonable price.
Use Eleventy if you want minimal tooling. No i18n built-in, but everything else about it is lean and honest.
SvelteKit only if you’re already writing Svelte. No clear advantage over Astro otherwise.
Next.js only if it’s already your app framework. Not a blog-first tool.
Don’t use Gatsby. Not maintained.
Caveats
Build benchmarks are from Leatherman’s 2022 test (4k files). Astro’s Content Layer API (released late 2024) has meaningfully improved Astro’s own trajectory — the framework has gotten faster since those numbers were published. Hugo’s build-speed advantage is durable because Go template compilation is fundamentally faster than JavaScript bundler pipelines; the relative gap may narrow but is unlikely to close.
Deployment platform is not a decision the framework makes. Astro, Eleventy, and Hugo all output plain HTML, CSS, and JS. They run on Cloudflare Pages, Vercel, Netlify, GitHub Pages, or any CDN without modification. Framework choice does not lock you into a platform.
Affiliate note: this article contains affiliate links to Vercel and Netlify. The top picks (Astro, Hugo, Eleventy) have no affiliate relationships with toolchew. The rankings reflect the benchmarks and our own experience.