Speed you can measure.
Ahead of every library in our 57-document benchmark, on Linux and macOS, from Rust and from Node.js. Fast enough that rendering stops being a step you think about.
See the numbersFerromark renders Markdown faster than every library we measured, and it does not bend a single rule of CommonMark or GFM to get there. Native for Rust and Node.js, with a stack of extras on top when you want them.
Ahead of every library in our 57-document benchmark, on Linux and macOS, from Rust and from Node.js. Fast enough that rendering stops being a step you think about.
See the numbersAll 652 CommonMark examples, the official GFM extensions, every line-ending variant. The Markdown you already have keeps rendering the way it should.
See the conformance resultsTwenty Markdown libraries. 57 real documents. Both macOS and Linux. Ferromark delivered more throughput than every library in our comparison, from Rust and from Node.js.
In native Rust, Ferromark delivered 2.3–2.7× the throughput of pulldown-cmark. Through Node.js, it delivered 9.5–9.7× that of marked, including binding overhead. These ranges cover both recorded hosts, using fresh calls across the full corpus.
Your workload and enabled features affect the result. Some libraries also produce different output for these inputs. The detailed comparison keeps those differences, configurations and source measurements in view.
Speed is easy if you cut corners. Ferromark keeps the full CommonMark and GFM behavior, and every result below is backed by specification fixtures you can run yourself.
Every single example in the specification renders exactly like the reference.
The official GitHub Flavored Markdown extension examples run in the conformance suite.
Every example again with CR and with CRLF line endings, and the output must not change.
The upstream cmark comparison corpus stays in the regression suite.
Plain Markdown runs out of words exactly where publishing gets interesting: who said this, what does this table show, which cells belong together. Ferromark Flavored Markdown fills those gaps with a few small additions that still read like plain text. All of them are opt-in, so plain documents stay plain and fast.
One Markdown source with the FFM preset, rendered by Ferromark itself.
Source
> Simplicity is prerequisite for reliability.
: Edsger W. Dijkstra, *1975*
| Plan | Monthly | Yearly |
| :--- | ---: | ---: |
| Starter | 9 € | 90 € |
| Team | 29 € | 290 € |
| Enterprise | On request ||
: Pricing *per seat*
Captions and credits are ==plain Markdown==.^[No HTML, no shortcodes.]
This sentence was ++added in the second edition++.
A line starting with : right after a quotation becomes its source. Readers see who said it, and the credit stays outside the quoted words.
The same : line under a table becomes its caption. A doubled pipe || merges a cell across columns, so “On request” spans both prices.
==…== highlights, ++…++ marks an insertion, and ^[…] drops a footnote right where the thought happens.
Ferromark parses and renders, and does that one job really well. Trust, translation, routing and presentation remain your decisions.
The document Ferromark already parsed for rendering can do more. Check links, feed your search index, or export clean Markdown, without parsing a second time.
Ferromark is happy on its own. Pair it with Ferriki for syntax highlighting, or add Ferrigura diagrams through a custom build. Each engine does one job and has its own API.
Choose your runtime and follow the getting-started guide. Rust gives you the parser and document tree directly, Node.js a typed JavaScript API on top of the same native engine.