Three ways to use it
Pick what fits: write in the browser editor, generate a single-file document with a CLI, or render with the parser in your own code.
The editor (nothing to install)
Open the editor and start typing. It renders live with orz-markdown. In Chrome or Edge you can install it (the install icon in the address bar), and then:
- It opens in its own window and works offline.
- It registers as a
.mdhandler. Set it as your default and double-click any.mdto edit it; Ctrl/⌘ S saves back to the same file. - Switch the preview theme and toggle dark mode from the toolbar.
File association and in-place Save use Chromium-only APIs. In other browsers the editor still runs; use Open and Save as.
Start from an authentic blank editable file
For .md.html, .slides.html, and .paged.html, use the official
starter buttons on this website. Each button opens a genuine editable file in a new tab; click the pencil
button, make your changes, then Save or download your own local copy. This is safer than copying starter
HTML from an unknown source.
Generate a single-file document
Install a family tool, then turn a Markdown file into one portable, editable .html:
# a continuous document
npx orz-mdhtml notes.md # -> notes.md.html
# a slide deck
npx orz-slides deck.md # -> deck.slides.html
# a print / PDF document
npx orz-paged paper.md # -> paper.paged.html
Each writes one portable, self-editing HTML file. Open it to read, present, or print; click the edit affordance
to change it and Save in place. --cdn makes a smaller file that loads the engine from
jsDelivr; --inline embeds the engine. Defaults differ: orz-mdhtml defaults to
--cdn, while orz-slides and orz-paged default to --inline.
Render with the parser
Install orz-markdown and render
Markdown to HTML:
import md from 'orz-markdown';
const html = md.render('# Hello {{emoji wave}}');
// place inside <article class="markdown-body">…</article>
// with one of the bundled themes
See the features for the full syntax, and the README for themes and the agent skill.
Portable authorship and license metadata
When generating .md.html or .paged.html from a source file, add a leading
{{nyml kind: meta}} block for the title, author, license, canonical source, date,
description, and keywords. For slides, the deck config's title: and author:
seed the same metadata. The builders write standard HTML head tags and a machine-readable
#orz-meta record that remains in the portable file after browser edits.
{{nyml
kind: meta
title: Field Notes
author: Your Name
license: CC-BY-4.0
license_url: https://creativecommons.org/licenses/by/4.0/
source: https://example.org/field-notes
date: 2026-07-11
}}
The metadata block is consumed during generation, so update the original source and regenerate when those details change. Host applications can inject authoritative metadata programmatically; host values take precedence field by field.
Verifying a file someone sent you
These documents are programs: opening one runs its embedded code. Before trusting a file from an untrusted source, run it through the verifier. It hashes the embedded framework against the genuine published packages and scans the content for embedded scripts, entirely in your browser. Treat anything it cannot confirm like a downloaded app.