The file is the document.

Monoleaf edits .md files as documents. Comments, tracked changes, page setup and metadata live inside the same file as plain text. There is no hidden document model, no sidecar and no database: what you can read is all there is. It is also a document you can safely hand to a language model, because a model does not rewrite the file. It marks up what it would change, and you accept or reject each edit yourself.

Checking latest release… Source on GitHub
Try it on the web Beta Web source on GitHub

Every feature degrades into something legible.

Below is one file, unchanged, shown three ways. Monoleaf renders it as a document. Another Markdown reader renders the parts it knows and quietly ignores the rest. A plain text editor shows you all of it. Nothing is lost in any direction.

mass-energy.md· 0.8 KB
# Mass–energy equivalence

## The formula

$$E = m c^2$$

Energy and mass are one quantity in two units. The constant is
*c*, **squared**.

## What it means

| Mass | Rest energy E~0~ |
| ---- | ---------------: |
| 1 g  |  9.0 × 10^13^ J |
| 1 kg |  9.0 × 10^16^ J |

One gram holds {~~24~>25~~} GWh, the
<!--c:a41s-->rounded figure<!--c:a41e--> above[^1].

## Caveat

> [!NOTE]
> This is the rest energy. A moving body needs the full expression.

[^1]: Einstein, Ann. Phys. 18, 639 (1905).

<!--ml:page {"size":"A4","margin":"20mm","footer":"Page {page} of {pages}"}-->

<!--c:a41 {"resolved":false,"thread":[{"author":"Reviewer",
  "ts":"2026-07-22T14:30:00Z","text":"Give the rounding rule."}]}-->
Mass–energy equivalence
The formula
E = m c2

Energy and mass are one quantity in two units. The constant is c, squared.

What it means
MassRest energy E0
1 g9.0 × 1013 J
1 kg9.0 × 1016 J

One gram holds 24 25 GWh, the rounded figure above1.

Caveat
Note

This is the rest energy. A moving body needs the full expression.

1 Einstein, Ann. Phys. 18, 639 (1905).
mass-energy.md 62 words · p. 1 / 1 · A4 · 100%
Mass–energy equivalence
The formula
$$E = m c^2$$

Energy and mass are one quantity in two units. The constant is c, squared.

What it means
MassRest energy E~0~
1 g9.0 × 10^13^ J
1 kg9.0 × 10^16^ J

One gram holds {~~24~>25~~} GWh, the rounded figure above1.

Caveat

[!NOTE]
This is the rest energy. A moving body needs the full expression.

1 Einstein, Ann. Phys. 18, 639 (1905).

No outline panel and no comment panel: the thread and the page setup are HTML comments, so nothing appears here at all.

Plain text: the whole document, including the review state. Nothing is encoded.

It works like a word processor. The file stays plain text.

Editing

You see the document as you type

Headings look like headings and tables look like tables, right where you are typing. There is no second pane to keep in step, and no preview window to switch to.

Review

Tracked changes

Suggest an edit, then accept or reject it, one at a time or all at once. The marks are just text, so someone without Monoleaf can still read what you proposed.

Review

Comments

Attach a comment to any piece of text and reply to it. Mark it resolved and the file remembers. Nothing is kept outside the document, so comments survive being emailed around.

Writing

Notes, footnotes and maths

Note and warning boxes, proper footnotes, and LaTeX for equations. All of it is ordinary markdown, so your draft still reads well in whatever the other person opens it with.

Output

Page setup and export

Set the paper size, the margins and what goes in the header and footer, including the page number. Export to PDF or to a single HTML file when you need to send something.

Modes

Strict and Enhanced

Strict keeps you to the markdown every reader understands. Enhanced adds subscript, superscript and emoji, and points each one out, so you always know what other people will see.

Import

Open a PDF

Turn a PDF back into markdown. A PDF only stores letters and where they sit on the page, so Monoleaf works out the structure from the layout: bigger text becomes a heading, ruled boxes become a table. It is a good guess rather than a perfect one, and it tells you so. A scanned PDF is turned away instead of opened empty, because there is no text in it to find.

Import

Paste from anywhere

Copy from a word processor, a spreadsheet or a web page and paste it in. It arrives as clean markdown, tables and all, without the hidden formatting that normally comes with it.

Privacy

Images from the web stay off

An image loaded from the web tells whoever sent you the file your IP address and the moment you opened it. Monoleaf leaves those images off until you turn them on, and shows their alt text instead. Email apps have worked this way for years.

Also included

A toolbar, a page, a word count.

Everything above is a claim about a file format. This is the part that has to feel like a word processor: a real toolbar, a page you can see the edges of, a word count and a page number in the status bar. The document on screen is the same plain text the panel above was showing.

The Monoleaf window: a formatting toolbar above a white page on a grey canvas, with
                Edit and Review mode buttons, an outline and comments in the top bar, and a status
                bar showing the filename, word count, page number and zoom level.
Edit mode, page-accurate layout at 120%. Ctrl+Q swaps this for the raw Markdown underneath.

Plain text was always better. Language models made it obvious.

The usual document formats are zip archives of XML that describe a document. A .md is the document. That difference used to be a matter of taste. Now it decides whether a model can work on your writing at all.

Those two proportions are measured rather than estimated. Take a document's XML, strip every tag, and compare what is left against the whole; then do the same for markdown syntax in a .md. Both counts are by character, and a tokeniser splits tags harder than it splits prose, so the real gap is wider than the figures above.

Exactly what a plain reader sees.

No feature is worth a file that reads as garbage somewhere else. This is the honest table, including every place the syntax does show through.

ConstructMonoleafOther readersPlain text
Headings, emphasis, lists, tables, codeCommonMark and GFM baseline rendersrendersclean
<u> <mark> <div align>Underline, highlight, alignment rendersrenderstags visible
> [!NOTE]Callouts rendersreads as a quotereads as a quote
[^1]Footnotes rendersrendersclean
$…$ and $$…$$LaTeX maths, KaTeX rendersvariesreads as LaTeX
<img src="https://…">Hosted images, left unloaded until you enable them opt-inrenderstag visible
<!--ml:pagebreak--> · <!--ml:page …-->Page breaks and page setup appliedinvisibleinvisible
<!--ml:meta …-->Document metadata. YAML front matter also accepted appliedinvisibleinvisible
<!--c:id-->Threaded comments rendersinvisibleinvisible
{++ ++} {-- --} {~~ ~> ~~}Tracked changes, CriticMarkup rendersliteralliteral
H~2~O · E = mc^2^ · :smile:Subscript, superscript, emoji. All three flagged rendersliteralliteral

“Other readers” means any CommonMark and GFM viewer: GitHub, VS Code, Obsidian, pandoc. The column states the weakest behaviour among them, so nothing here is a promise a particular reader will break. Several do more: GitHub styles callouts as alerts and renders maths, and most render :smile:.
“Invisible” means the construct is an HTML comment: the reader sees clean prose and nothing else.
“Literal” means the syntax shows up instead of rendering, and three things can do that. Tracked changes, where it is the point: a reviewer without Monoleaf still has to see what was proposed. Subscript, superscript and emoji shortcodes, which Enhanced mode flags as you type, so you know before you send the file. And maths, in a reader with no maths support, which Monoleaf does not currently flag. The demo panel at the top of the page shows all three.

Get Monoleaf

What each release changed →

Reading the latest release from GitHub…

Windows is the tested, primary build. Monoleaf is a Tauri application, so the same source also ships as a macOS disk image and a Linux AppImage, both best-effort: macOS is unsigned and unnotarized, and Linux is community-tested rather than exercised as broadly as Windows.

Windows

macOS

Linux

Per-user installNo administrator rights needed. If the machine is missing the Microsoft WebView2 runtime, the installer fetches it.

Not code-signedWindows SmartScreen will warn about an unknown publisher the first time you run the installer. Choose More info → Run anyway. Signing means paying a commercial certificate authority every year, which is hard to justify for a free tool with one maintainer, so it is not planned rather than pending. The source is public if you would rather build it yourself.

macOS is unsignedThere is no Apple Developer account, and none is planned, so the .dmg is unsigned and unnotarized. Gatekeeper refuses a plain double-click as "damaged": right-click (or Control-click) the app and choose Open, then confirm Open again.

Linux is best-effortThe AppImage is community-tested, not exercised as broadly as Windows. Please file an issue if you hit a problem with it.

Web version Betaweb.monoleaf.org runs the same editor in the browser, byte-for-byte round-trip included, but a few things do not carry over: PDF import is desktop-only, saving in place only works in Chromium browsers (Firefox and Safari download a copy instead), and there is no native spell-check dictionary, in-app updater, or reopen-last-file on launch. Source and releases

Reviewing with ClaudeA plain-text format means an AI assistant can already open and edit these files. Getting the full syntax right (tracked changes, threaded comments, page setup) is a different matter: Monoleaf Reviewer is a Claude Agent Skill that encodes those conventions and ships a validator to catch mistakes before they land. Checking latest release…