Skip to main content

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:

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

marmite-0.4.1.tar.gz (3.6 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

marmite-0.4.1-py3-none-win_amd64.whl (20.9 MB view details)

Uploaded Python 3Windows x86-64

marmite-0.4.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (21.5 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

marmite-0.4.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (21.0 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

marmite-0.4.1-py3-none-macosx_11_0_arm64.whl (21.7 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

marmite-0.4.1-py3-none-macosx_10_12_x86_64.whl (20.9 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

Details for the file marmite-0.4.1.tar.gz.

File metadata

  • Download URL: marmite-0.4.1.tar.gz
  • Upload date:
  • Size: 3.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.13

File hashes

Hashes for marmite-0.4.1.tar.gz
Algorithm Hash digest
SHA256 b879281bf6d9465e36904124d61c215ff41e0d992580303b3642e23e296cdd36
MD5 c8557caf6bd2a1e71ec68904ce86832f
BLAKE2b-256 99c1e783ea99ca07afa222c3c286a2654eb9c66075e3a6215805ad35369cce54

See more details on using hashes here.

File details

Details for the file marmite-0.4.1-py3-none-win_amd64.whl.

File metadata

  • Download URL: marmite-0.4.1-py3-none-win_amd64.whl
  • Upload date:
  • Size: 20.9 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.13

File hashes

Hashes for marmite-0.4.1-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 943d899b096f6449f08e13c41aa872f7a15d7c54e033514cf9a7e7c13e86f5d0
MD5 3172cbc5aa4561a0f86e72fe61214cbe
BLAKE2b-256 78a905581a983de96f72915bb70942d59b49af51337276a2b006ac87811ac6d2

See more details on using hashes here.

File details

Details for the file marmite-0.4.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for marmite-0.4.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f3b9058cb1c433f4be8756abde0145335fdbf3d74fca837671007eda14dc672b
MD5 9e127109b3bc71a4297838fb42f474e2
BLAKE2b-256 b2aff184fea061f353b84c683b837a8c5e37f3c9d5d7d760c12b16add1265994

See more details on using hashes here.

File details

Details for the file marmite-0.4.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for marmite-0.4.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 1d9c1e94480e4e2ca6ab6738df47fe94877146c0b26988964be330745018a4dc
MD5 aa4374ac79a819b5b24e1b2212e8c6cb
BLAKE2b-256 14e3255cf4039ed3c25c4cb9f9b6ffbaaad4b9c8c2091afe2d495aa2114f5723

See more details on using hashes here.

File details

Details for the file marmite-0.4.1-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for marmite-0.4.1-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 def7e6f50dfec9ad1b26f27c892cdb3e02af657de0a47982e1347797b23e95b2
MD5 68d52864b72fa57930e63c29930999d9
BLAKE2b-256 a7d3f5528461e7b0c382fa61399ce6f0cdce531987bb1c9426db3f8749d71397

See more details on using hashes here.

File details

Details for the file marmite-0.4.1-py3-none-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for marmite-0.4.1-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 3032da3626fa3ff501fa45ce1119fb2dce7d5c58f49c3fcd0d8795849116f796
MD5 69e8eef8bc68880d625d1e7289f5a07e
BLAKE2b-256 8a5aa0d8e50d22bea1bf0277d0c5f9f4c0943e6a31c44ac2c7b70ceebe7109ea

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page