Open source · Apache-2.0 · v2.3.0

RayoMD

Markdown to PDF without a browser.

A compact native converter for CI artifacts, batch reports, and applications where startup time, memory, and deployment size matter.

rayomd --export report.md report.pdf
See the native path
367 KB Linux v2.3.0 binary
~8 MiB Measured serve peak RSS
0 Browser processes required
2 platforms Windows and Linux releases

Dated release measurements vary by platform and workload. Review the methodology.

The native path

Ship PDFs, not Chromium.

RayoMD parses Markdown and writes PDF bytes directly from C++17. The default path does not start a browser, bundle a runtime, or require Pandoc or LaTeX.

01 Markdown bytes # Report
02 Native parse + layout C++17
03 Valid PDF bytes %PDF-1.7
  • No headless browser
  • No required JavaScript runtime
  • No required TeX installation
  • Bounded batch workers

Real output

Inspect what the engine produces.

Every preview below comes from the current RayoMD executable. Open the Markdown, the generated PDF, and the exact command used.

First page of the Operations report PDF generated by RayoMD

Generated sample

Operations report

A compact generated report with a table, ordered list, quote, and inline emphasis.

Command rayomd --export operations-report.md operations-report.pdf native elegant normal

Focused workloads

Small engine. Specific jobs.

01

CI documentation

Turn release notes, manuals, and repository Markdown into reproducible build artifacts.

rayomd --export CHANGELOG.md release.pdf
02

Generated reports

Convert structured Markdown from backend jobs or AI pipelines without maintaining a browser pool.

cat report.md | rayomd --stdin report.pdf
03

Local and embedded tools

Keep conversion offline and package the public C++ exporter inside a focused native application.

#include "rayomd/tiny_pdf.h"

Bounded parallel batch

More throughput, with the memory cost shown.

RayoMD caps worker counts by workload size. In the v2.2.0 audit, six workers produced byte-identical PDFs across 160-file folder batches with zero failures.

Windows 112.7x

1 worker7.303 ms/file

6 workers2.699 ms/file

Peak RSS: 19.23 MB to 33.33 MB

Linux, native ext44.5x

1 worker5.582 ms/file

6 workers1.235 ms/file

Peak RSS: 13.93 MB to 47.59 MB

Deliberate scope

Fast because the job is smaller.

RayoMD is a native Markdown subset, not a replacement for every document engine. The boundary is part of the product.

Use native RayoMD for

  • Headings, paragraphs, and emphasis
  • Nested lists and block quotes
  • Pipe tables and fenced code blocks
  • Clickable Markdown links
  • Unicode and standalone images
  • Explicit page breaks and useful image fallbacks
  • Batch, stdin, and warm serve workflows

Use a broader engine for

  • Full HTML and CSS fidelity
  • JavaScript-rendered pages
  • TeX math and scientific publishing
  • Citations and bibliographies
  • Syntax highlighting and filters
  • Pixel-specific branded templates
Read the complete native compatibility matrix

Dated and reproducible

Performance with the caveats attached.

Fresh-process Windows 11 measurements include startup, parsing, PDF generation, and file output. Compared tools provide broader feature sets.

RayoMD 2.2.0 Windows comparison, measured July 13, 2026
WorkloadRayoMDmd-to-pdfPandoc + XeLaTeXNext / RayoMD
Tiny README15.45 ms1,717.89 ms3,210.69 ms111.2x
Feature mix17.29 ms2,281.90 ms3,377.94 ms132.0x
500-row table18.66 ms2,340.90 ms3,427.50 ms125.5x

Optional reversible profile

Exact source in. Exact source out.

RayoMD can embed the original UTF-8 Markdown in its PDF 2.0 rayomd-source/1 profile, validate length and SHA-256 integrity, and recover it byte for byte later.

rayomd --export report.md archive.pdf --embed-source rayomd --inspect-source archive.pdf rayomd --recover-source archive.pdf recovered.md
Understand the format and limits

Windows utility

Edit, import, and export without ceremony.

The Windows build combines the native exporter with a compact Dear ImGui interface. Linux keeps the same exporter in a small CLI.

Choose the deployment

Run it yourself, or help define the hosted API.

Open source

Own the binary.

Download the Windows app or Linux CLI, embed the C++ API, or build from Apache-2.0 source. Default Linux stays libcurl-free; a separate curl build enables URL images.

Private beta

Put the engine behind HTTPS.

Share your volume, workflow, and one blocking requirement. The beta will be built around verified workloads.