Documentation

Markdown Tree Import for Confluence — setup, behaviour, supported syntax and troubleshooting.

  1. 01 Quick start
  2. 02 Folders to pages
  3. 03 Page titles
  4. 04 Images
  5. 05 Links
  6. 06 Supported Markdown
  7. 07 Re-importing
  8. 08 The import report
  9. 09 Limits
  10. 10 Troubleshooting

01 Quick start

  1. Zip your Markdown folder. Include the images, keeping them where your Markdown expects them.
  2. In Confluence, open Apps → Markdown Import.
  3. Choose the .zip, pick a target space, and optionally paste a parent page ID.
  4. Click Show plan. Nothing is written yet — review the tree it proposes.
  5. Click Import.

Finding a parent page ID. Open the page in Confluence and take the number from the URL: /pages/123456/Page+Title. Leave the field empty to import at the top level of the space.

02 Folders to pages

Your folder tree is reproduced as a Confluence page tree.

docs/
├── README.md       →  Product Documentation      (top page)
├── install.md      →  Installation               (child)
├── api/
│   ├── README.md   →  API Reference              (child)
│   └── auth.md     →  Authentication             (child of API Reference)
└── guides/         →  Guides                     (generated folder page)
    └── intro.md    →  Getting Started            (child of Guides)

03 Page titles

Chosen in this order:

  1. A title: field in YAML front matter.
  2. The document's first heading. Headings inside fenced code blocks are correctly ignored — a shell example starting # npm install will not become your page title.
  3. The file name, cleaned up: getting-started.md becomes "Getting started".

Confluence requires titles to be unique within a space. When two files would collide, the second gets its folder name appended — Notes (Beta) — and this is listed in the import report.

04 Images

Every referenced image is uploaded as a real Confluence attachment on the page that uses it, and the page points at that attachment. Nothing links back to your zip or to an external host.

Formats.png .jpg .jpeg .gif .svg .webp .bmp .ico .avif
StandaloneAn image alone in a paragraph becomes a full-width image.
InlineBadges and icons inside a sentence stay inside the sentence.
PathsResolved relative to the Markdown file, including ../ and nested images/ folders.
Also foundReference-style definitions and <img src="..."> tags.
ExternalImages hosted on the web are left as they are and not downloaded.
UnusedImages in the zip that nothing references are skipped and listed in the report.

A relative link to another Markdown file is rewritten to the page that file became, keeping any anchor.

[Installation](docs/install.md)      →  the "Installation" page
[Setup](./install.md#requirements)  →  that page, anchor preserved
[Home](../README.md)                →  the parent page
[Atlassian](https://atlassian.com)  →  left untouched

A relative link pointing at a file that was not part of the import stays as plain text rather than becoming a broken link.

06 Supported Markdown

Headings# through ######, plus underlined (setext) headings.
EmphasisBold, italic, strikethrough and inline code, including nested combinations.
CodeFenced blocks keep their language for highlighting. Indented blocks become code blocks too, not quoted text.
TablesNative Confluence tables with header rows. Empty cells preserved.
ListsBulleted and numbered, nested to any depth; numbered lists keep their start number.
Task lists- [x] done becomes a real Confluence checkbox.
BlockquotesConverted natively. Headings inside a quote become bold text, since Confluence does not permit headings there.
Front matterRead for the title, otherwise not rendered.

Raw HTML inside Markdown is not executed. Where it appears it is preserved as a code block and noted in the report, so nothing is silently lost.

07 Re-importing

Running the same import again updates the pages it created rather than duplicating them — matched by page title within the target space. Fix a typo in your repository, import again, and only the changed pages differ.

One consequence worth knowing. Because matching is by title, renaming a document's first heading between imports produces a new page instead of updating the old one. The old page is left untouched for you to delete.

08 The import report

Every run ends with a report listing:

A bad file never stops the run. Everything else still imports, and the report tells you precisely what to fix.

09 Limits

10 Troubleshooting

The space list is empty

You need permission to create pages in at least one space. Ask your Confluence administrator, then reload the page.

"Image not found in zip"

The report shows the exact path that was looked for. Usually the image sits outside the folder you zipped — re-zip from a level high enough to include both the Markdown and the images.

Some pages have the wrong title

Titles come from front matter, then the first heading, then the file name. Add a # Heading at the top of the file, or a title: in front matter, and import again.

A page failed with a permissions error

You lack create or edit rights in that space, or the page is restricted. The rest of the import still completed — fix the permission and run it again; only the missing pages are created.

Anything else

Email support@kunfeyekun.co.uk with the import report and, if you can, the file that caused it. Replies within 4 business hours, Monday to Friday.