Skip to content

Latest commit

 

History

761 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Part of Ferramenta, a family of Rust tools.

Powered by Sebastian Software

Ferromark v2

Markdown, ready for the work ahead.

Ferromark turns Markdown into HTML for documentation sites, publishing tools, and applications. A fast Rust engine with an arena-allocated document tree, CommonMark correctness, and practical publishing features. Use the Rust crate or its native Node.js bindings.

Documentation · Rust API · Node.js package

V2 is a breaking upgrade from v1. Read the changelog and the migration guide before upgrading.

Why Ferromark

A Markdown engine earns its place when the documents get complicated. Nested lists. Reference links. Tables with real content. The page that looked fine until an author added one more footnote.

  • Keep the core focused. Parse Markdown and render HTML. Your application chooses translation, site assembly, and the highlighter connected through rendering hooks.
  • Build correctness in. The explicit CommonMark profile agrees with all 652 specification examples. Differential checks against cmark and cmark-gfm expose edge cases and keep fixes reproducible.
  • Cover everyday publishing needs. Front matter, heading IDs, footnotes, callouts, and inline tables of contents support real documents. Table classes, captions, merged cells, and named columns give CSS control over layout.
  • Keep rendering fast. Arena allocation, reusable buffers, specialized byte scans, and SIMD reduce parser and renderer work. You can inspect or transform the document tree before rendering it.

Syntax and features, correctness and limits, and measured comparisons explain the details and trade-offs.

Quick start

Rust

cargo add ferromark
let html = ferromark::to_html("Hello, **world**!").unwrap();
assert_eq!(html, "<p>Hello, <strong>world</strong>!</p>\n");

Rust requires 1.95 or newer. The helpers return Result. Rust defaults preserve raw HTML; set HtmlRendererOptions::sanitize to true for untrusted input. The Rust guide covers configuration, ownership, and AST access through ferromark.

Node.js

npm install ferromark
import { toHtml } from 'ferromark'

const html = toHtml('Hello, **world**!')

Requires Node.js 22.12 or newer. Node defaults escape raw HTML and filter unsafe URL schemes. The Node.js guide covers metadata, Buffers, reusable renderers, and highlighters.

Make it yours

Contributing and license

See CONTRIBUTING.md for setup and required checks. The code is MIT licensed; source provenance preserves upstream attribution. Specification fixtures and benchmark corpora retain their separate licenses.

Ferramenta — A family of Rust tools.

The content pipeline

Tool Job
ferroni Oniguruma-compatible regex engine
ferriki Shiki-compatible syntax highlighting

The language workshop

Tool Job
ferrolex Spell checking for text and code
ferrocat Translation catalog engine
palamedes Internationalization for TypeScript applications

On the workbench

Tool Job
ferrovia SVGO-compatible SVG optimizer
ferralk Glob matching and parallel filesystem walking
ferrugo PDF previews for untrusted files

Sebastian Software
TypeScript, React & Rust consulting
Experts in Agentic Software Development
Work with us · More open source

Copyright © 2026 Sebastian Software GmbH

About

Fast Markdown-to-HTML engine in Rust with secure defaults, CommonMark and GFM support, plus Node.js bindings.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

8 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages