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 Markdown | Yes | Yes |
| A page tree or an entire space in one pass | One page at a time | Yes |
| Attachments, with body references rewritten | No — text only | Yes |
| Links between exported pages | Left pointing at the wiki | Relative, inside the export |
| Filenames | Whatever the download is named | The page title, non-Latin included |
| A report of what had to degrade | No | Yes, 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 Confluence | In the export |
|---|---|
| A completed task | - [x] — the state is a fact, not a format |
A code block marked python | A fence that still says python |
| A code block inside a list item | Still inside it, with the indent CommonMark requires |
A page titled 한글로만 이루어진 제목 | A filename you can still read |
| A Mermaid diagram | A mermaid fence, so GitHub still draws it |
| A draw.io diagram | An 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 cells | A flat grid; the geometry goes, the words stay |
| A macro nobody taught it about | Its 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:
| Export | Measured | Conversion (46 rules) | Critical failures | Files (17 rules) |
|---|---|---|---|---|
| Faithful Markdown Export 0.1.0 | 2026‑09‑16 | 46 / 46 | 0 | 17 / 17 |
| Confluence’s own export (beta) | 2026‑10‑14 | 35 / 46 | 3 | — |
| The leading shipping alternative | 2026‑09‑16 | 34 / 46 | 5 | 12 / 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
- A page, a page tree, or an entire space in one pass
- Attachments into
attachments/, with body references rewritten to point at them - A folder structure that mirrors the page tree
- Relative links between exported pages; absolute links for anything outside the selection
Runs on Atlassian
Your content never leaves Atlassian infrastructure. The app contacts no external service, stores nothing, and asks only for read access.
Pricing
| Users | Price |
|---|---|
| Up to 10 | Free |
| 11 and above | Per-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.