Metalsmith is a pluggable static-site generator for NodeJS that works more like a library than a framework. It does not require a predefined project structure: it turns a directory tree into plain JavaScript objects that plugins can manipulate. Plugins control how projects are structured and built, and the package provides both a JavaScript API and a command-line interface. It supports NodeJS, npm, Markdown, JSON, YAML, and a templating language of the developer’s choice. Example uses include static sites, scaffolders, backups, command-line and deployment tools, and eBooks produced from Markdown in PDF, ePUB, or MOBI formats. Starter repositories include blog, company, resume, and clean-blog projects. Builds produce static folders for deployment to CDNs, Netlify, GitHub Pages, GitLab Pages, SFTP hosts, or custom servers. Metalsmith requires NodeJS; version 2.7 requires NodeJS 16 or newer. Partial rebuilds are not available, though documentation recommends a file watcher and browser synchronization package for automatic rebuilding. The project is free; supplied pages state no billing terms or prices.
Who it is for
Metalsmith suits developers who want a NodeJS-based generator whose project structure and build process can be shaped through plugins. It may also fit workflows that produce static sites or other files from Markdown and related formats.
What is good
- JavaScript API and command-line interface
- No predefined project structure required
- Supports Markdown, JSON, and YAML
- Static output deploys to multiple hosting targets
- Free software
What to know first
- Requires NodeJS
- Partial rebuilds are not available
- No local preview server
Verdict
Metalsmith offers a flexible, plugin-based approach to generating static output, with a choice of API or CLI. Developers should account for the NodeJS requirement and the lack of partial rebuilds when planning a workflow.
Metalsmith plans and pricing
All plansCompared on static site generators
- Free plan
- Yes
- Content sources
- markdown
- CMS integration
- Yes
- Incremental builds
- Yes
- Multilingual support
- Yes
- Local preview server
- No
- Supported languages
- JavaScript, TypeScript, Node.js



