# Markdown
Places one markdown document on the page. The document comes from a page attachment, an external URL, or markdown stored under the page as Confluence custom content. Source precedence is fixed and mutually exclusive: attachment wins, then URL, then page-stored markdown.

Both Capable macros appear in the editor's quick insert, with the document macro first and the reference macro below it.
| **Shape** | Block (bodiless). The markdown is never stored in the page body. |
| ------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Name in the suite** | Markdown (Capable) |
| **Name in the standalone app** | Markdown macro (Capable) |
| **Where you configure it** | Its own full-screen modal titled 'Configure Markdown'. A catalogue of insert sources (Markdown from scratch / Markdown from URL / Markdown from file / Studio / templates / examples) followed by a live editor with title, description and 'Show border', then Save. It is not a field form. |
| **Anonymous readers** | UnlicensedAccess: \[unlicensed, anonymous\] in both products. Renders for logged-out readers of public pages, except URL-sourced documents. |
| **PDF and Word export** | Word/PDF export only in the Suite, and it exports the markdown SOURCE inside a fenced code block, not rendered prose. |
| **Published Capable Site** | On a published Capable Site it exports as real rendered HTML (markdown-it, sanitised, external images downloaded locally), wrapped in .c-macro--markdown, with the Title as an
. |
---
## Settings
| **Setting** | **Values** | **Default** | **What it changes** |
| -------------------------- | ------------------------------------------------------------ | ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Title | Free text, capped at 50 characters in the editor (placeholde | empty | Intended as the heading strip above the document, shown only when Show Border is on. IMPORTANT: the released config UI never writes this into the macro config. The title you type is saved onto the stored document, and the header text a read |
| Show Border (Options) | Multi-select array with the single value 'Show Border'; show | OFF. The macro reads the raw config with | Draws a 1px rounded border with padding and turns on the title header strip with a Maximize button. Carried into the static-site export as a bordered wrapper. |
| URL | Any http(s) URL to a markdown file | Empty (the field pre-fills with the merm | Fetches the markdown at view time so the page follows the source file. It is not copied in. GitHub/GitLab/Bitbucket web URLs are auto-rewritten to raw . Relative image paths resolve against the document's own directory. |
| attachmentId | Id of a markdown file attached to the same page | unset | Renders that attachment's contents; beats URL and page-stored markdown. Set only by the 'Markdown from file' picker. Attachments are filtered to media types text/markdown, text/x-markdown, application/markdown, application/x-markdown, text/ |
| Fallback Custom Content ID | Custom content id | unset | Internal bookkeeping written on save so the macro can find its own document before the search index catches up, and so the exporters can resolve the body. Never shown as a user setting. |
| Hash | Md5 of the saved document plus title | unset | Internal change-detection stamp. No visible effect. |
| Version | Number. The custom-content version saved against. | unset | Internal bookkeeping only; the macro always renders the current stored document, not this version. |
---
## Where the content comes from

With an address in the field, the document is fetched and previewed before you save the macro.
| Markdown from scratch | The section the insert modal opens on. Blank live editor; text is saved as markdown stored under the page. 'Upload file' or drop accepts .md/.markdown/.mdx/.txt. Content is appended after a blank line and the filename (first 50 chars, extension stripped) seeds an empty title. |
| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Markdown from URL | Enter a URL, preview the fetched markdown, save it as the macro's url parameter (live, not copied). Failure shows the fetch error plus 'Please ensure the provided URL returns raw text content'. |
| Markdown from file | Pick an existing page attachment or drop/upload a .md/.markdown/.mdx/.txt file onto the page, then render it. |
| Studio (Suite only) | 'Generate markdown with AI'. Requires the websockets:enabled flag plus tenant AI on, so it never appears in the standalone Markdown app. |
| Templates and Examples | Selecting a template COPIES its markdown into the macro's own document, which then diverges. A trailing ' template' is stripped from the copied title. Live linkage is what the reference macro is for. |
---
## Related
[Markdown referenceDisplays a markdown template from the space or global library, always at its current versi](https://help.gocapable.com/markdown/markdown-reference.html)
[MacrosEvery macro in this capability.](https://help.gocapable.com/markdown/macros.html)
---
_One macro, documented properly._