MARKUP IN. CLEAN HTML OUT.

One small converter.
More than one syntax.

Markup++ is a self-contained C++17 library and CLI for converting Markdown, AsciiDoc and reStructuredText to HTML. Its versioned CommonMark profile and the Asciidoctor-core and Docutils-core output gates (with hash-pinned differences) have all passed the Linux, macOS and Windows release gates.

terminal
$ curl -fsSL https://nift-dev.github.io/markup-website/install | sh
$ markup README.md -o README.html
# or stream a fragment
$ markup README.md > fragment.html
01

Native and focused

A compact library with no runtime dependencies, a source-vendored CommonMark engine and a thin command-line interface.

02

Built to embed

String-in, string-out conversion behind a narrow API, embedded in Nift as a byte-for-byte synchronized subtree for @markup conversion.

03

Measured formats

CommonMark passes all 652 official examples. The bounded Asciidoctor 2.0.26 and Docutils 0.23 profiles also pass their pushed cross-platform gate, with limitations kept explicit.

04

Safe file behavior

Atomic output, permission preservation, and refusal to overwrite input files or output symlinks.

LIBRARY FIRST

A clean boundary for tools.

Markup++ does not know about project graphs, templates or files. Give it markup and a format; receive HTML or a controlled error.

std::string html, error;
markup::convert(
    markup::Format::Markdown,
    source, html, error);
Release candidate 0.1.0CommonMark 0.31.2 compliantAsciidoctor core 2.0.26 profile passedDocutils 0.23 core profile passed