Metalsmith
Extremely simple, pluggable Node.js static site generator for blogs and docs.
Open the official app on metalsmith.io
This tool is hosted by its maintainers. Click below to open metalsmith.io in a new tab — it's their official demo.
Browse generators tools →What's next with Metalsmith?
Choose how you want to get started.
Use it free
Open the official tool or demo — no account needed.
Self-host it
Run the open-source version on your own infrastructure.
What is Metalsmith?
Metalsmith is an open-source static site generator built for Node.js, designed to simplify the creation of static websites and related projects. It enables users to transform raw content—such as markdown files, JSON data, or YAML configurations—into structured HTML outputs using plugins and templating. Its pluggable architecture allows developers to customize workflows without being constrained by rigid frameworks. The tool is particularly useful for bloggers, developers, and content creators who need flexibility in structuring data and generating output. By abstracting file system operations into JavaScript objects, Metalsmith streamlines tasks like content aggregation, metadata processing, and template rendering. It addresses the challenge of managing complex site structures by providing a modular system where plugins handle specific functions, such as markdown parsing or layout generation. This approach reduces boilerplate code and promotes reusability across projects.
How it works
Metalsmith is a static site generator that leverages Node.js to process content files into HTML, JSON, or other formats. It acts as a pipeline that takes input files, applies plugins to transform data, and outputs the final site structure. Its primary purpose is to decouple content creation from output generation, allowing developers to focus on data and templates. The tool is ideal for projects requiring customization, such as blogs, documentation sites, or custom scaffolding tools. By using plugins like markdown parsing or layout rendering, users can extend its functionality without modifying core code. Metalsmith supports markdown, JSON, YAML, and templating languages like Handlebars or EJS. Plugins such as @metalsmith/collections enable content categorization, while @metalsmith/layouts handle theme-based rendering. Its configuration-first approach lets users define workflows via JSON files or JavaScript code, offering flexibility in project setup.
How to use it
- 1Initialize a project directory with content files (e.g., markdown posts). 2. Install Metalsmith via npm or yarn, along with required plugins like markdown and layouts. 3. Create a metalsmith.json configuration file to define plugins and output settings. 4. Run Metalsmith using the command-line interface to generate the final site structure. Practical tips: Use the metalsmith.mjs entry point for modular configurations. Test plugins incrementally to isolate issues. Leverage the built-in file system API for dynamic content filtering.
What it can do
- static site generator
Use cases
Assumptions and limitations
Assumptions
- source: https://github.com/metalsmith/metalsmith
- license: MIT — free to use
- privacy: Self-hosted — you control your data
Limitations
- Requires familiarity with Node.js and JavaScript for configuration
- Limited real-time editing capabilities compared to CMS platforms
- Manual setup for complex routing or dynamic content filtering
- Smaller plugin ecosystem compared to alternatives like Jekyll or Hugo
- No built-in SEO optimization features
Understanding the result
Extremely simple, pluggable Node.js static site generator for blogs and docs.
Tool details
- Clearly flagged when a network request is needed.
- No account, no sign-up, and no tracking of your content.
- Powered by (MIT).
- Built with
- (metalsmith/metalsmith)
- License
- MIT
- Runs locally
- No — requires a network request
- Verification
- Not yet verified
- Input
- Query
- Output
- Text
Built with metalsmith/metalsmith. OpenToolVault provides the discovery and browser interface while crediting the original project maintainers.
- Built with
- License
- MIT
Open-source project
OpenToolVault is an independent directory. We are not affiliated with or endorsed by this project.
References
- / — GitHub Repository
Upstream project · GitHub
- MIT License
Upstream project
Frequently asked
What is Metalsmith used for?
Metalsmith is used to generate static websites and related projects by transforming content files (markdown, JSON, YAML) into HTML or other formats. It is ideal for blogs, documentation sites, and custom scaffolding tools, offering flexibility through plugins and configuration.
How does Metalsmith process content?
Metalsmith processes content by first reading files from a directory, converting them into JavaScript objects via plugins like markdown parsing. These objects are then passed through a pipeline of plugins for transformations (e.g., layout rendering, collections grouping). Finally, the processed data is written to the output directory as static files.
How do I set up a basic Metalsmith site?
1. Create a project folder with markdown files in a 'src' directory. 2. Run `npm init -y` and install Metalsmith with `npm install metalsmith`. 3. Add a `metalsmith.json` file with plugin configurations (e.g., markdown and layouts). 4. Run `npx metalsmith` to generate the output in a 'dist' folder.
How does Metalsmith compare to Jekyll or Hugo?
Metalsmith differs by being Node.js-based and fully pluggable, whereas Jekyll (Ruby) and Hugo (Go) use their own ecosystems. Metalsmith offers greater flexibility for custom workflows but requires more manual setup. Jekyll and Hugo provide pre-built features for blogs and docs, while Metalsmith prioritizes modularity and integration with npm packages.
How do I troubleshoot plugin errors?
Check the error message for plugin names, then verify installation with `npm ls <plugin-name>`. Ensure plugins are correctly referenced in metalsmith.json. For missing dependencies, run `npm install` in the project directory. Use `npx metalsmith --verbose` to enable detailed logging during processing.