marmite is a free, open source blogging & personal sites project written in Rust and released under AGPL-3.0. It has 875 GitHub stars, 57 forks and 6 open issues, and was last pushed 13 days ago. On this registry it ranks #22 of 25 tracked projects in Blogging & Personal Sites, with 5 head-to-head comparisons available.

What is marmite?

Marmite is a Rust static site generator for bloggers that turns a directory of Markdown files into a complete static HTML site with a single command, aimed at writers who want to publish chronological articles without assembling a build pipeline.

What it is

Marmite is a static site generator written in Rust and released under the AGPL-3.0 licence. It lives in the Rust crate ecosystem and does "one" simple thing only: it reads every .md file in the input directory, parses each one with CommonMark into HTML content, extracts optional metadata from frontmatter or from the filename, generates an HTML file for each page, and writes the rendered static site to the output folder. It also generates or copies the static/ and media/ directories into the output, and everything it needs is embedded in a single binary. The generated site is flat HTML by default (./{name}.html|rss|json), while workspaces can produce subdirectory-based multi-site layouts.

The concrete problem it solves is the setup cost of existing static site generators. As one user quoted in the README puts it, other SSGs are frequently frustrating because it takes so much setup to get started, whereas having a directory of Markdown files and running a single command sounds genuinely useful. Marmite is built for bloggers specifically, so writing and publishing articles in chronological order is the main use case; the date: attribute is what differentiates posts from pages. The tool is zero-config to begin with and optionally fully configurable through marmite.yaml.

Key capabilities

  • Zero-config startup: reads .md files from input and writes a finished site to output with no configuration required, with marmite.yaml available for full customisation.
  • Markdown beyond CommonMark: GitHub Flavored Markdown plus extensions, raw HTML, emojis such as :smile:, spoilers ||secret||, wikilinks [[name|url]], Obsidian links [[page]], and GitHub-style Markdown alerts.
  • Taxonomies for tags:, stream:, series:, authors:, and languages:, together with backlinks, related content, and pagination.
  • Built-in HTTP server with WebSocket live reload and automatic rebuild when content changes.
  • Static search index with inline match previews, RSS feeds for the index, tags, authors, streams, and languages, and automatic sitemap generation.
  • Shortcodes for YouTube, Spotify, cards, galleries, and table of contents, an image gallery with automatic thumbnail generation, and automatic parallel image resizing with incremental builds.
  • Math and Mermaid diagrams rendered as native build-time SVG or client-side JavaScript, with build-time syntax highlighting via arborium.

Who uses it and how

  • Individual bloggers publishing articles in chronological order, which the project names as its main use case.
  • Multi-author blogs, where each author gets a profile page and author-scoped feeds from a single generated site.
  • Multilingual publishers using language streams with auto-discovery, translation links, and hreflang SEO tags.
  • Sites that need separated content listings through streams, or ordered chronological groups through series with stream-aware next and previous navigation.
  • Teams running workspace multi-site setups, where a single command builds several sites with config inheritance and cross-site references.

Getting started

Marmite is published as the crate marmite on crates.io, with a hosted playground at https://play.marmite.blog and a one-click blog template repository at github.com/rochacbruno/blog. Documentation and a live demo live at https://marmite.blog/.

How it compares

The facts provided name no competing products, and the README refers only generically to "other SSGs" whose setup burden motivated the project, without identifying any of them. No comparable tool is named in this registry, so Marmite stands alone here.

When to use it — and when not to

Because everything is embedded in a single binary, a self-hoster operates no database, object store, or mail service: the output is static files that any static host can serve. The README is explicit that Marmite is meant to be simple and that users should not expect complex features, so anyone needing a broad feature surface, heavy plugin ecosystems, or non-chronological content architecture should look elsewhere. The AGPL-3.0 licence is also a copyleft licence, which matters if the generator itself is to be embedded in proprietary tooling or services.

project readme (upstream, from github) — read inline

Marmite

marmite

Marmite [Markdown makes sites] is a very! simple static site generator.

AGPL License Crates.io Version Docs and Demo

Create blog

Playground

I'm a big user of other SSGs but it is frequently frustrating that it takes so much setup to get started.
Just having a directory of markdown files and running a single command sounds really useful.
— Michael, marmite user.

How it works

It does "one" simple thing only:

  • Reads all .md files on the input directory.
  • Using CommonMark parse it to HTML content.
  • Extract optional metadata from frontmatter or filename.
  • Generated html file for each page.
  • Outputs the rendered static site to the output folder.

It also handles generating or copying static/ and media/ to the output dir.

Before you start, you should know

  1. Marmite is meant to be simple, don't expect complex features
  2. Marmite is for bloggers, so writing and publishing articles in chronological order is the main use case.
  3. The generated static site is flat HTML by default (./{name}.html|rss|json). Workspaces can produce subdirectory-based multi-site layouts.
  4. Taxonomies: tags:, stream:, series:, authors:, and languages: (i18n)
  5. Marmite uses the date: attribute to differentiate posts from pages

Features

  • Everything embedded in a single binary.
  • Zero-Config to get started.
    • Optionally fully configurable via marmite.yaml
    • Configurable markdown parser (CommonMark extensions, rendering options)
  • Common-mark + Github Flavoured Markdown + Extensions.
  • Raw HTML allowed.
  • Emojis :smile:, spoiler ||secret||.
  • Wikilinks [[name|url]] and Obsidian links [[page]].
  • Markdown alerts (GitHub-style callouts).
  • Backlinks and related content.
  • Tags.
  • Multi authors with profile pages.
  • Multi streams (separate content in different listings).
  • Series support (ordered, chronological content groups with navigation).
  • Language streams / i18n (multilingual content with auto-discovery, translation links, hreflang SEO tags).
  • Draft content management (filtered from feeds and search).
  • Pagination.
  • Static search index with inline match previews.
  • RSS Feeds (index, tags, authors, streams, languages).
  • Next/previous post navigation (stream-aware).
  • Built-in HTTP server with WebSocket live reload.
  • Auto rebuild when content changes.
  • Shortcodes (YouTube, Spotify, cards, galleries, table of contents, custom templates).
  • Image gallery with automatic thumbnail generation.
  • Automatic image resizing (parallel processing, incremental builds, configurable quality).
  • Media organization (slug-based subfolders, @/ shorthand, content subfolder media).
  • Automatic sitemap generation.
  • --show-urls dry run to preview all site URLs without building.
  • File mappings (copy arbitrary files during site generation).
  • Redirect aliases (frontmatter aliases field generates redirect pages for old URLs).
  • Internal link validation (build-time checking, optional strict failure mode).
  • IndieWeb compliance (microformats, semantic HTML).
  • Markdown source publishing alongside HTML.
  • Built-in theme
    • Light and Dark modes.
    • Multiple colorschemes.
    • Fully responsive.
    • Spotlight search.
    • Easy to replace the index page and add custom CSS/JS.
    • Easy to customize Tera templates.
    • Math and Mermaid diagrams (native build-time SVG or client-side JS).
    • Build-time syntax highlighting via arborium.
    • Commenting system integration.
    • Banner images and og: tags.
  • Theme system with remote theme installation.
  • CLI to start a new theme from scratch.
  • Workspace multi-site support (single command builds, config inheritance, cross-site references).
  • AT Protocol / standard.site integration (publish posts to the decentralized social web).
  • Embedded AI agent skills for AI-assisted site management.
  • Available via cargo, pip/uvx, Homebrew, AUR, FreeBSD, Docker, and install script.

Installation

curl -sS https://marmite.blog/install.sh | sh

Also available via cargo, pip/uvx, Homebrew, Arch Linux, FreeBSD, and Docker. See the full installation guide for all methods.

Usage

It's simple, really!

$ marmite folder_with_markdown_files path_to_generated_site
Site generated at path_to_generated_site/

CLI

$ marmite --help
Marmite is the easiest static site generator.

Usage: marmite [OPTIONS] [INPUT_FOLDER] [OUTPUT_FOLDER] [COMMAND]

Commands:
  atproto  Manage atproto / standard.site integration
  help     Print this message or the help of the given subcommand(s)

Arguments:
  [INPUT_FOLDER]   Input folder containing markdown files
  [OUTPUT_FOLDER]  Output folder to generate the site [default: `input_folder/site`]

Options:
  -v, --verbose...            Verbosity level (0-4) [default: 0 warn]
  -w, --watch                 Detect changes and rebuild the site automatically
      --serve                 Serve the site with a built-in HTTP server
      --bind <BIND>           Address to bind the server [default: 0.0.0.0:8000]
  -c, --config <CONFIG>       Path to custom configuration file [default: marmite.yaml]
      --init-templates        Initialize templates in the project
      --start-theme <NAME>    Initialize a theme with templates and static assets
      --set-theme <THEME>     Download and set a theme from a remote URL or local folder
      --generate-config       Generate the configuration file
      --init-site             Init a new site with sample content and default configuration
      --force                 Force the rebuild of the site even if no changes detected
      --shortcodes            List all available shortcodes
      --show-urls             Show all site URLs organized by content type
      --skill                 Print the embedded agent skill document (SKILL.md) to stdout
      --skill-install         Install the skill into .agents/skills/
      --skill-install-claude  Install the skill into .claude/skills/ for Claude Code
      --new <TITLE>           Create a new post with the given title
  -e                          Edit the file in the default editor
  -p                          Set the new content as a page
  -t <TAGS>                   Set the tags for the new content (comma separated)
      --site <SITE>           Target site within a workspace
      --skip-image-resize     Skip image resizing during build
      --check-internal-links  Check internal links during build
      --strict-internal-links Fail the build on broken internal links
  -h, --help                  Print help
  -V, --version               Print version

Run marmite --help for the full list of options including site metadata overrides, search, pagination, and other configuration flags.

Live reload in development

When running with --serve --watch (or --serve -w), Marmite automatically rebuilds on file changes and refreshes the browser via WebSocket. The default theme includes live reload out of the box. For custom themes, add this snippet to your base template:

<script src="/__marmite__/livereload.js"></script>

Getting started

Read a tutorial on how to get started https://marmite.blog/getting-started.html and create your blog in minutes.

Docs

Read more on how to customize templates, add comments etc on https://marmite.blog/

That's all!

Marmite is very simple.

If this simplicity does not suit your needs, there are other awesome static site generators.

Here are some that I recommend:

Frequently asked questions

Is marmite free to use?

marmite is open source under the AGPL-3.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does marmite do?

Markdown makes sites - A Static Site Generator for Blogs

What is marmite written in?

marmite is primarily written in Rust. Its source is publicly available at https://github.com/rochacbruno/marmite, and it has 875 GitHub stars.