Website review
This review may include AI-generated content and is not individually verified. Domain, certificate and other facts come from the observed data on this page.
What is Eleventy?
Eleventy is a static site generator: a tool that turns templates, content files and data into plain HTML, CSS and JavaScript that you upload to a host. It is built to stay out of your way, so you write pages in the templating language you already prefer and let Eleventy assemble the output.
Where it fits
Use Eleventy when you want a fast, mostly static site without adopting a heavy framework. It suits blogs, documentation, marketing pages, portfolios and any project where content lives in Markdown or a CMS but the final result should be simple files. It is a poor fit if you need a full application framework with built-in user accounts, live dashboards or server-side form handling — those require separate services.
What makes it distinctive
- Template language freedom. You are not locked into one syntax. The documentation lists HTML, Markdown, MDX, JavaScript, JSX, TypeScript, WebC, Nunjucks, Liquid, Handlebars, Mustache, EJS, HAML, Pug and Sass, and you can mix them in one project.
- Data cascade. Data can come from front matter, template and directory data files, global data files and JavaScript data files, with a defined order of precedence. This is how you drive many pages from one data source.
- Collections and pagination. You can group content (for example, all posts) and generate pages from data, which covers tag pages, archives and paginated lists.
- Plugins. Official plugins handle images, RSS, syntax highlighting, internationalization and rendering, and there is a community plugin ecosystem.
- Dev server. A built-in dev server supports local development, with Vite available for more advanced asset workflows.
A concrete reader scenario
Suppose you maintain a documentation site with 300 Markdown pages and want search-friendly HTML with no runtime framework. You would keep each page as Markdown, store navigation and metadata in global data files, use a layout for the shared shell, and let a collection build the sidebar and index pages. The build produces static files you can host almost anywhere. The trade-off is that anything dynamic — comments, search, authentication — needs an external service or client-side JavaScript.
Practical next step
Check that Node.js 18 or newer is installed by running node --version in a terminal, then create an index.md file and follow the Quick Start. If you are migrating an existing project, the Upgrade Helper plugin is worth reviewing before you change versions.
For comparison, other static site generators with official documentation include Hugo, Jekyll, Astro and Next.js.
How does Eleventy differ from other static site generators like Jekyll or Hugo?
Eleventy differs from Jekyll and Hugo mainly in what it asks you to learn and how much control it hands you. Jekyll is tightly bound to Ruby and to GitHub Pages conventions, so much so that "Jekyll" and "the default GitHub Pages build" are nearly the same thing. Hugo is a single compiled Go binary built for speed on large sites, with its own template syntax and content model. Eleventy is a Node.js tool that deliberately stays close to plain HTML, Markdown and JavaScript, and it lets you bring your own template languages instead of adopting one house style.
Where the practical differences show up
Template languages. Eleventy supports many at once — Markdown, Nunjucks, Liquid, Handlebars, Mustache, EJS, HAML, Pug, plus JavaScript, JSX, TypeScript, MDX and WebC — and you can mix them in one project. A Jekyll site is Liquid; a Hugo site is Go templates. If your team already writes Nunjucks or JSX, Eleventy is the only one of the three that won't force a rewrite.
Language runtime. Eleventy requires Node.js (the project recommends version 18 or newer) and you can verify it with node --version in a terminal. Jekyll needs Ruby; Hugo needs nothing installed because it ships as a binary. That last point matters if you want to build on a locked-down machine or a minimal CI image.
Build speed. Hugo's reputation rests on compiling very large sites quickly. Eleventy is fast for typical content sites but is interpreted JavaScript rather than compiled Go, so at tens of thousands of pages Hugo is usually the safer bet. Eleventy's answer is incremental and dev-server workflows rather than raw throughput.
Data and configuration. Eleventy's distinguishing feature is the data cascade: front matter, template and directory data files, and global data files merge in a defined order, with computed data and JavaScript data files available when you need to fetch or derive values. That is more flexible than Jekyll's _data and front matter model, and more explicit than Hugo's, at the cost of a concept to learn.
Extension model. Plugins cover images, RSS, syntax highlighting, internationalization, rendering and an upgrade helper, and there is a programmatic API plus configuration events if you need to hook into the build.
Choosing between them
| If your priority is… | Lean toward |
|---|---|
| No runtime to install, maximum build speed | Hugo |
| GitHub Pages with zero configuration | Jekyll |
| Writing in the templating language you already use | Eleventy |
| Fine-grained control over data and per-page output | Eleventy |
| A large existing Ruby or Go toolchain | Jekyll or Hugo |
A concrete test: take one real page from your site — with its layout, a list of related items, and one computed value such as a reading time — and build it in each candidate. Eleventy will feel familiar if that page is mostly HTML and JavaScript; Hugo will feel fastest; Jekyll will feel least surprising if you are already on GitHub Pages.
Start with the Quick Start on Eleventy, which walks through creating an index.md and running the build, then try the in-browser demo before committing to a migration.
What are the prerequisites and steps to start a new Eleventy project?
Eleventy needs a JavaScript runtime, and its own documentation recommends Node.js version 18 or newer. Check first with node --version in a terminal; if the command is missing or reports an older version, install Node.js before doing anything else. You do not need a framework, a bundler, or an account to begin.
First project, in order
- Confirm Node.js 18+ is available.
- Create a project folder and add an
index.mdfile, either in a text editor or with a shell command such asecho '# Heading' > index.md(PowerShell users need theout-file -encoding utf8variant to avoid encoding trouble). - Run Eleventy against that folder and let it build the site into an output directory.
- Open the generated HTML in a browser, then start the dev server so edits rebuild and refresh automatically.
- Add configuration only when you need it: a config file for settings, a data directory for shared values, layouts for shared page structure.
The Eleventy documentation covers each of these in a Get Started section, and its Quick Start page is the shortest path to a working build.
What each prerequisite is actually for
| Requirement | Why it matters | If you skip it |
|---|---|---|
| Node.js 18+ | Eleventy runs on Node and installs through npm | Commands fail outright or behave unpredictably on old runtimes |
| A terminal | Installing packages, running builds, starting the dev server | You can still edit files, but you cannot build or preview |
| A text editor | Writing Markdown, templates and config | None, but a Markdown-aware editor saves time |
| Basic Markdown | Most content files are Markdown | You can use HTML templates instead, at the cost of verbosity |
A realistic first hour
Someone rebuilding a personal blog typically starts with one Markdown file, sees plain HTML come out, then adds a layout so every post shares a header and footer. The next step is usually a data file or front matter for titles and dates, and only after that does templating language choice matter. Eleventy supports many template languages, including Markdown, Nunjucks, Liquid, Handlebars, JavaScript, TypeScript and WebC, so you can pick one you already know rather than learning a new syntax on day one.
Choosing how far to go
If you only need a handful of static pages, stop after the dev server and a layout; adding plugins and a CMS integration early mostly adds moving parts. If you expect hundreds of pages, decide on collections and pagination before writing content, because retrofitting structure later means touching every file. The upgrade helper plugin is worth knowing about if you plan to track version changes over time, but it is not part of getting started.
A practical next step: build one page, add one layout, then add one collection. If any of those three steps feels awkward, the problem is usually configuration you added too early rather than Eleventy itself.
Can I try Eleventy without installing anything locally?
Yes. Eleventy offers a browser-based playground, so you can experiment with templates and see rendered output without installing Node.js or anything else on your machine. It is the fastest way to get a feel for how the tool works before committing to a local setup.
What the browser option is good for
- Evaluating the template syntax. Eleventy supports many languages, including Markdown, Nunjucks, Liquid, Handlebars, WebC and JavaScript. A browser session lets you paste a small template and check how it renders.
- Testing a data or layout idea. You can confirm whether a collection, permalink pattern or layout behaves the way you expect before wiring it into a real project.
- Sharing a minimal reproduction. If you hit a snag, a browser-based example is an easy way to isolate the problem.
Where it stops being enough
The browser playground is a sandbox, not a project environment. It will not give you:
- A real file tree. Local projects depend on directory structure, template and data file locations, and the data cascade. Those interactions are hard to judge in a single editable pane.
- Plugins and configuration. Eleventy's plugin ecosystem, configuration files and build hooks are part of real work, and they need a local install.
- Your own content and assets. Images, CSS, fonts and imported content all require files on disk.
- Deployment behaviour. Output paths, permalinks and hosting quirks only show up once you build locally.
A practical path
Start in the browser to learn the template syntax and the relationship between data and layouts. Once you want to test collections, pagination or a plugin, install Node.js (version 18 or newer) and run a starter project. The official documentation covers both the browser try-out and the terminal-based quick start at Eleventy.
If you are choosing between static site generators, the browser playground is a low-cost way to compare Eleventy's templating approach against alternatives such as Hugo or Astro before installing any of them.
Which template languages and data formats can I use with Eleventy?
Eleventy supports a broad set of template languages and data formats, and its main design choice is that you can mix them in one project. A Markdown file can use Nunjucks layouts, a JavaScript data file can feed a Liquid template, and so on. That flexibility is the reason to choose Eleventy over generators that lock you into a single syntax.
Template languages
From the documentation, the supported template languages are:
- HTML
- Markdown
- MDX
- JavaScript
- JSX
- TypeScript
- WebC
- Nunjucks
- Liquid
- Handlebars
- Mustache
- EJS
- HAML
- Pug
- Sass
You can also override or extend existing languages, and there is a "Virtual Templates" feature for generating output that isn't tied to a file on disk.
Data formats
Data can come from front matter, template and directory data files, or global data files. Eleventy's data cascade supports JavaScript data files and custom data file formats, and its documentation covers validating data as well. Common formats in practice are JSON, JavaScript modules and YAML-style front matter, though the exact set depends on the file extension and any custom format you register.
What this means for choosing
| Situation | Practical fit |
|---|---|
| You already write Markdown and want Nunjucks or Liquid layouts | Straightforward; this is the core workflow |
| Your team prefers JavaScript or TypeScript everywhere | Supported, including JSX and TypeScript templates |
| You want component-style authoring with scoped CSS | WebC is the relevant option |
| You need a legacy or niche syntax such as Pug or HAML | Supported, but check plugin and tooling support |
| You want one language only | Eleventy works, but its multi-language flexibility is unused |
A concrete example: a documentation site can keep content in Markdown, build navigation from a JavaScript global data file, and render shared chrome in Nunjucks, without converting anything.
Next step: pick your two most common formats, then check the "Template Languages" and "Data Cascade" sections of the guide at Eleventy to confirm the exact file extensions and configuration needed. If you are migrating, the Upgrade Helper plugin is worth reviewing before you commit to a version.
How do I deploy an Eleventy site to a hosting provider or CMS?
Deploying an Eleventy site is mostly a matter of deciding where the built output should live, because Eleventy itself produces plain static files rather than running a server. The deployment target only needs to serve a folder of HTML, CSS, JavaScript and assets.
The basic workflow
- Run your build command (commonly
npx @11ty/eleventy) to generate the output directory, typically_site. - Point your hosting provider at that output directory, or upload its contents.
- Configure the provider's build settings so it runs your build command on each push, if you want automatic deploys.
The Eleventy documentation includes a Deployment & Hosting section and notes that you can use a CMS, so the official guidance covers both static hosts and content-managed setups. Start there rather than guessing at provider-specific settings: Eleventy.
Choosing between a static host and a CMS
| Approach | Best for | Trade-off |
|---|---|---|
| Static host (Netlify, Cloudflare Pages, GitHub Pages, Vercel) | Personal sites, docs, marketing pages, blogs where content lives in Markdown | Editors need Git access or a Git-based editing flow |
| Headless CMS plus a static host | Teams with non-technical writers who need a familiar editing UI | Extra service, API keys and a build trigger to maintain |
| Traditional server or shared hosting | Situations where you must use existing infrastructure | You manage uploads and caching yourself; no Git-based previews |
For a concrete scenario: a solo developer writing Markdown in a Git repository is usually best served by connecting the repository to a static host and letting it run the Eleventy build on every commit. A marketing team with five writers is usually better served by a headless CMS whose content is pulled in at build time, with a webhook triggering a rebuild when an editor publishes.
Practical points that trip people up
- Confirm which directory your provider expects. Many default to
publicordist, while Eleventy's default is_site. Either change the provider setting or set Eleventy's output directory to match. - Check the Node.js version your provider uses. Eleventy recommends Node.js 18 or newer, so a provider pinned to an older runtime will fail the build.
- If your site uses a path prefix (for example, a project page on GitHub Pages), set the path prefix option so asset URLs resolve correctly.
- Keep the build command and output directory in a config file the provider reads, so the settings are versioned with the code rather than clicked in a dashboard.
If you are unsure where to begin, pick a static host, connect the repository, set the build command and output directory, and confirm the first deploy renders your index page before adding a CMS.
User reviews (0)