Guide : Static Site Generators

How Hugo, Jekyll, Eleventy, Hexo, Gatsby, and Astro pre-build every page into static HTML — bypassing Google's JS rendering queue so content is indexable on the premier récupérer.

Première publication : 26 juin 2026 · Dernière mise à jour : 3 août 2026 · Advanced
Langues
1 indice probant sur cette page

A static site generator (SSG) builds every page into finished HTML at construire temps, so votre content is déjà in the raw HTML avant a robot d’exploration ever demande pour it — aucun JavaScript rendering queue, aucun Wave 2 delay, immédiatement indexable. That's the core SEO advantage over client-side frameworks. Hugo, Jekyll, Eleventy, Hexo, Gatsby, and Astro tout share it; ils differ in language, how beaucoup JS ils ship to le navigateur, and built-in image/sitemap tooling. The un réel gotcha is construire freshness: a static site is seulement as current as its dernier construire, so content changements besoin a rebuild and redeploy to reach moteur de recherches. I construit ce site (and patrickstox.com) with Astro pour exactly ces raisons.

TL;DR — An SSG pre-renders every route to static HTML at construire temps, so the content exists in la réponse avant the premier robot d’exploration requête — aucun Web Rendering Service, aucun rendering queue, aucun “Wave 2” delay. That’s the unique biggest indexability advantage vous pouvez give a site. SSGs differ from CSR frameworks (qui construire lune page in le navigateur) and from meta-frameworks (qui peut SSR per requête). The six in ce cluster — Hugo, Jekyll, Eleventy, Hexo, Gatsby, Astro — tout ship static HTML; ils vary in language, JS payload, and built-in sitemap/image tooling. The réel échec mode isn’t rendering, it’s construire freshness: a static site is seulement as current as its dernier construire, so modifié content que doesn’t trigger a rebuild silently sert stale HTML to moteur de recherches. I run ce site on Astro pour exactly ce définir of trade-offs.

Ce que “static” en réalité signifie

A static site generator runs votre content and templates via a construire step and emits a folder of finished HTML, CSS, and assets. The crucial partie pour le SEO is quand the HTML is produced: at construire temps, une fois, pour everyone — pas per requête, and pas in le navigateur. Google’s JavaScript guidance describes exploration, rendering, and indexation as distinct processing stages. An SSG removes client-side rendering from the critical chemin pour its generated content parce que the HTML is déjà complet. Evidence for this claim Google processes JavaScript through crawling, rendering, and indexing, while pre-rendered HTML is present before client execution. Scope: Google Search JavaScript processing; indexing is not guaranteed. Confidence: high · Verified: Google: JavaScript SEO basics

Ce is pourquoi static sites are the safest possible architecture pour getting indexé. Le contenu is in the premier byte of la réponse. There’s aucun parity gap entre raw and rendered HTML, aucun dependency on the renderer succeeding, aucun stateless-Chrome quirks to design autour.

SSG vs. rendu côté client vs. meta-frameworks

Three architectures, three différent moments the HTML comes into existence:

  • Static site generation (SSG). HTML is construit une fois, at construire temps, avant quelconque requête. Served as flat fichiers (souvent from a CDN). Content is in the raw HTML. Ce is Hugo, Jekyll, Eleventy, Hexo — and Gatsby and Astro in leur par défaut static mode.
  • Rendu côté client (CSR). Le serveur sends a minimal shell; JavaScript builds lune page in le navigateur at requête/runtime. Content dépend on rendering succeeding. Ce is a default-CSR React or Vue SPA — the riskiest setup pour le SEO (voir JavaScript SEO).
  • Meta-frameworks (SSR / hybrid). Frameworks comme Suivant.js, Nuxt, and SvelteKit peut render HTML per requête on le serveur (SSR), pre-render some routes (SSG), or mix les deux. Content is in the HTML, but produced at requête temps, qui adds server cost and latency vous don’t have with a pure SSG.

The line blurs at the edges — Gatsby and Astro are parfois appelé meta-frameworks parce que they’re component-based and peut do plus que emit flat fichiers. But in leur bread-and-butter mode they’re static generators, and that’s how vous devez treat les pour le SEO. The mental model que matters: the précédent the HTML exists, the moins peut go incorrect avant a robot d’exploration sees it. SSG is the earliest.

The six generators, comparé

Tout six produce indexable static HTML. Here’s how ils differ on the axes que en réalité affecter an SEO decision:

GeneratorLanguage / construit inJS shipped to navigateurSitemapImage optimizationMeilleur pour
HugoGoNone by par défautBuilt-in (sitemap.xml auto-generated)Built-in image processing (resize, WebP)Grand content sites que besoin fast builds
JekyllRubyNone by par défautPlugin (jekyll-sitemap)Plugins (jekyll-picture-tag etc.)GitHub Pages blogs; the original SSG
Eleventy (11ty)JavaScript (Node)None by par défautTemplate/plugin (vous generate it)Plugin (@11ty/eleventy-img)JS devs who vouloir zero-JS output and flexibility
HexoJavaScript (Node)None by par défaut (theme-dependent)Plugin (hexo-generator-sitemap)PluginsBlogs, surtout in the Node/Asia ecosystem
GatsbyJavaScript / ReactReact bundle (hydrates)Plugin (gatsby-plugin-sitemap)Built-in (gatsby-plugin-image, strong)React teams wanting a data-driven static site
AstroJS/TS, quelconque UI frameworkNone by par défaut (islands seulement)Official (@astrojs/sitemap)Built-in (astro:assets)Content sites wanting components sans the JS tax

A few choses worth pulling out of que table:

  • JS payload is the SEO-adjacent differentiator. Hugo, Jekyll, Eleventy, and Hexo ship essentially aucun JavaScript unless vous ajouter it. Gatsby rehydrates a complet React bundle on the client — encore indexable (the HTML is static), but it carries a Core Web Vitals cost the others don’t. Astro splits the difference with islands architecture: static HTML by par défaut, JavaScript seulement pour the spécifique interactive components (“islands”) que besoin it.
  • Construire speed scales differently. Hugo (Go) is famously fast and handles tens of thousands of pages comfortably. The Node-based generators are slower at grand scale, and Gatsby’s construire times have historically been its biggest complaint.
  • Sitemaps and image optimization are mostly solved everywhere — but Hugo and Astro give vous the la plupart out of the box, pendant que Jekyll/Eleventy/Hexo lean on (well-maintained) plugins.
  • Gatsby’s release cadence has slowed noticeably. The project isn’t archived and encore ships patches, but as of July 2026 its GitHub repo montre seulement a handful of commits over the trailing 90 days and un minor release since February. That’s worth weighing contre a plus actively-developed option si you’re picking a generator today, on top of the hydration/CWV cost ci-dessus.

Pourquoi I construit ce on Astro

I construit ce site — and patrickstox.com — with Astro, and the reasoning is straight out of ce page. I wanted to author in Markdown/MDX with réel components, but I did pas vouloir to pay the JavaScript tax on every page simplement to obtenir les. Astro’s par défaut is zero client-side JS: lune pages you’re reading ship as static HTML, and the seulement JavaScript que loads is pour the handful of interactive pieces (comme the lens tabs and the quiz). Que obtient me the indexability of a classic SSG and bon Core Web Vitals, sans giving up a component-based authoring experience. Si I nécessaire blistering construire speed à travers a huge content définir with zero interactivity, Hugo voudrait be the obvious appel; pour a React données couche, Gatsby. Pour ce — a content-heavy site with a few interactive flourishes — Astro is the correct trade.

The un réel gotcha: construire freshness

Everything ci-dessus is the upside. Here’s the catch que bites personnes.

A static site is seulement as current as its dernier construire. The HTML is a snapshot frozen at construire temps. Modifier a price, correct a fact, publish a post, mettre à jour a title tag — none of it reaches moteur de recherches jusqu’à vous rebuild and redeploy. There’s aucun live server assembling lune page from a database on chaque requête, so there’s nothing to pick up votre modifier automatically. Evidence for this claim Static build output remains a snapshot until the project is rebuilt and redeployed. Scope: Astro static build workflow as a representative example. Confidence: high · Verified: Astro: Build and deploy

En pratique ce signifie:

  • Content edits doit trigger a construire. Si vous author in a CMS headless or Git, wire up a webhook so a publish kicks off a deploy. A manual-only construire traiter is how stale prices and “ghost” 404s sneak into the index.
  • Frequently-changing données is awkward. Inventory, prices, live counts — si it changements faster que vous rebuild, the static copy lags. That’s où incremental builds, scheduled rebuilds, or a hybrid (a meta-framework with SSR/ISR pour the volatile routes) earn leur garder.
  • Time-sensitive pages besoin a cadence. Si “today’s deals” is baked at construire temps, the construire has to run au moins daily, or lune page lies.

None of ce is a dealbreaker — it’s a discipline. The whole raison SSGs are great pour le SEO (HTML decided ahead of temps) is the même raison vous have to be deliberate à propos de re-deciding it quand content changements.

Où to go suivant: the static site generators cluster

Ce hub is the map. Chaque generator ci-dessous is its propre deep dive — language, JS payload, sitemap/image tooling, the framework-specific SEO gotchas, and how to garder builds fresh:

  • Hugo SEO — Go-powered, zero-JS, blazing builds; the auto-generated sitemap, built-in image processing, and managing huge content sets.
  • Jekyll SEO — the original SSG and the GitHub Pages par défaut; jekyll-seo-tag, jekyll-sitemap, and the plugin-on-GitHub-Pages limitation.
  • Eleventy (11ty) SEO — JavaScript-based, zero-JS output; generating sitemaps from templates and eleventy-img pour responsive images.
  • Hexo SEO — the Node blog generator; sitemap/feed plugins, theme JS, and permalink/canonical hygiene.
  • Gatsby SEO — React-based static generation; the hydration/CWV trade-off, gatsby-plugin-image, gatsby-plugin-sitemap, and build-time données sourcing.
  • Astro SEO — zero-JS by par défaut, islands architecture, @astrojs/sitemap, astro:assets, View Transitions, and Server Islands fallback behavior.

Every topic ci-dessus is nested sous ce hub and lives in the sidebar aussi.

Pour the broader context — how Google renders JavaScript, the parity and interaction échec modes, and qui rendering mode to pick quand vous do besoin JS — voir the parent JavaScript SEO hub.

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.