Faithful Markdown Export

Exporting one page is solved. Exporting a space is not.

Confluence can now hand you a single page as Markdown — the body text, and nothing else. The moment you need the page tree, the attachments, the links between pages, or a filename you can read, that stops being enough. This app exports the whole thing in one pass, and tells you what it had to degrade on the way.

What each export covers

 Confluence’s own export (beta)This app
One page’s body as MarkdownYesYes
A page tree or an entire space in one passOne page at a timeYes
Attachments, with body references rewrittenNo — text onlyYes
Links between exported pagesLeft pointing at the wikiRelative, inside the export
FilenamesWhatever the download is namedThe page title, non-Latin included
A report of what had to degradeNoYes, naming the page

These are different jobs, not two attempts at the same one. If you want one page in a pull request description, use the menu Confluence already gives you. If you are moving a space into a repository, a static site or an LLM pipeline, the rest of this page is about that.

One rule

Degrade, never delete.

Markdown genuinely cannot express everything Confluence can. A merged table cell, a three-column layout, a status lozenge — there is no faithful Markdown for these, and pretending otherwise produces worse output than admitting it.

So the bar is not perfection. The bar is this: after the export, is any information gone that a reader would have had before it? A layout may flatten into paragraphs. It may not lose the second column.

What it keeps

In ConfluenceIn the export
A completed task- [x] — the state is a fact, not a format
A code block marked pythonA fence that still says python
A code block inside a list itemStill inside it, with the indent CommonMark requires
A page titled 한글로만 이루어진 제목A filename you can still read
A Mermaid diagramA mermaid fence, so GitHub still draws it
A draw.io diagramAn image pointing at the exported attachment
An info panel> [!NOTE] — an alert, degrading to a quote
A collapsed expand block<details>, body included
Merged table cellsA flat grid; the geometry goes, the words stay
A macro nobody taught it aboutIts body text, and a comment naming the macro

Verified, not claimed

Every release is scored against a public conformance suite — 63 rules, a seed corpus you can install into your own site, and a scorer that reads the output rather than trusting it. The rules, the corpus and the results are all open.

Current scores, from the same Confluence space and the same 63 rules:

ExportMeasuredConversion
(46 rules)
Critical
failures
Files
(17 rules)
Faithful Markdown Export 0.1.02026‑09‑1646 / 46017 / 17
Confluence’s own export (beta)2026‑10‑1435 / 463—
The leading shipping alternative2026‑09‑1634 / 46512 / 17

The 63 rules split in two, and the split is the whole point. 46 of them ask whether the text survived — a task’s state, a fence’s language, a macro’s body. 17 ask whether you got your space back — attachments on disk, a filename you can read, a folder tree that matches the page tree.

Confluence’s own export is genuinely good at the first and does not attempt the second: it returns one page’s Markdown and writes no files, so those 17 have nothing to score and are left blank rather than counted as failures. It was measured through the same API the Export menu calls, one page at a time, which is why its date differs from the other two.

Run it yourself before you buy: confluence-markdown-conformance. The repository also holds both exports of the same space, so you can read the difference instead of the scores — GitHub draws one export's Mermaid diagram and prints the other's as text.

It tells you what it degraded

Every run ends with a list of what could not be represented faithfully, and which page it came from. Silence about what was lost is the habit that makes an exporter impossible to trust.

What it exports

Runs on Atlassian

Your content never leaves Atlassian infrastructure. The app contacts no external service, stores nothing, and asks only for read access.

Pricing

UsersPrice
Up to 10Free
11 and abovePer-user, in line with comparable apps

Exact tiers are shown on the Marketplace listing. A 30-day free trial applies to paid tiers.

The measurement this app came from

Before the app there was a benchmark: a fixed Confluence corpus, 63 rules, and a scorer that names what an export breaks. It is public, MIT licensed, and it scores this app alongside the alternatives, Confluence’s own export included — and it keeps the cases this app fails.

confluence-markdown-conformance — run it against whatever exporter you use.

Every score has a shelf life; these apps ship often. To hear when the numbers are re-measured, watch that repository's releases, or mail yjkwon@winm2m.com with the subject conformance updates.