Guide · Atlassian facts checked against its docs, 13 October 2026
Confluence storage format: what it is and how to view it
Confluence saves every page in its storage format: XHTML-based XML with its own ac: tags for macros, links and tasks and ri: tags for what they point at. Here's how to view it on Cloud and Data Center, what the common pieces look like, and what happens to it when you export or move a space.
What the storage format is
Atlassian calls it "XHTML-based", but says that technically it's XML, because it doesn't fully follow the XHTML definition. Ordinary content looks like HTML: <p>, <h2>, <ul>, <table>. Anything Confluence-specific uses its own elements:
ac:elements for macros (ac:structured-macro), links (ac:link), images (ac:image), task lists (ac:task-list), emoticons and page layouts.ri:elements, Atlassian's "resource identifiers", for what a link or image points at:ri:page,ri:blog-post,ri:attachment,ri:url,ri:shortcut,ri:user,ri:spaceandri:content-entity.
From Atlassian's Confluence storage format reference.
How to view the storage format
Confluence Cloud
- Confluence admins: open the page, click the ••• menu at the top right, then Advanced details, then View Storage Format. Atlassian says you must be a Confluence administrator to see this item.
- Anyone who can view the page: open
your-domain.atlassian.net/wiki/api/v2/pages/PAGE_ID?body-format=storagein a browser, with the number after/pages/in the page's address in place of PAGE_ID. The older/wiki/rest/api/content/PAGE_ID?expand=body.storageworks too. Both come back as JSON with the storage format inside.
View Source isn't the same thing: Atlassian notes it shows the editor's format, not the storage format.
Sources: Atlassian Support on storage format on Cloud and as a non-admin.
Confluence Data Center
- In the page: select More options, then View storage format.
- Through the REST API:
/rest/api/content/PAGE_ID?expand=body.storageon your Confluence base address. - To edit it: from version 10.2.3, Data Center bundles a Storage Format Source Editor. It's off for everyone, admins included, until an admin grants access to groups or to all users.
Sources: Atlassian's storage format reference and Data Center REST API examples.
What common content looks like
These examples are from Atlassian's documentation. The macro examples come from older versions of its docs, as the current macro pages give wiki markup instead.
Link to another page
<ac:link>
<ri:page ri:content-title="Page Title" />
<ac:plain-text-link-body><![CDATA[Link to another Confluence Page]]></ac:plain-text-link-body>
</ac:link>
Links to pages go by title (plus ri:space-key for another space), not by address. Confluence updates these titles when a page is renamed or moved, but any tool reading the content outside Confluence has to match them back to pages.
Attachment link and image
<ac:link>
<ri:attachment ri:filename="atlassian_logo.gif" />
</ac:link>
<ac:image>
<ri:attachment ri:filename="atlassian_logo.gif" />
</ac:image>
The file itself isn't in the page body, only its name. It lives in the page's attachments.
Code block macro
<ac:structured-macro ac:name="code">
<ac:parameter ac:name="language">xml</ac:parameter>
<ac:parameter ac:name="title">This is my title</ac:parameter>
<ac:plain-text-body><![CDATA[<b>This is my code</b>]]></ac:plain-text-body>
</ac:structured-macro>
Plain-text macro bodies sit in a CDATA block, so the code is stored exactly as typed.
Info, tip, note and warning macros
<ac:structured-macro ac:name="info">
<ac:parameter ac:name="title">This is my title</ac:parameter>
<ac:rich-text-body>
<p>This is <em>important</em> information.</p>
</ac:rich-text-body>
</ac:structured-macro>
Tip, note and warning panels use the same shape with ac:name="tip", "note" or "warning". Their body is rich text, so it can hold lists, tables and other macros.
Include page macro
<ac:structured-macro ac:name="include">
<ac:parameter ac:name="">
<ac:link>
<ri:page ri:content-title="My chocolate page" ri:space-key="DOC" />
</ac:link>
</ac:parameter>
</ac:structured-macro>
The included page's text isn't stored here, only a pointer to it. Confluence fills it in each time the page is shown.
Task list
<ac:task-list>
<ac:task>
<ac:task-status>incomplete</ac:task-status>
<ac:task-body>task list item</ac:task-body>
</ac:task>
</ac:task-list>
Sources: Atlassian's storage format reference (links, images, tasks), and the Confluence 5.7 to 5.9 docs for the code block, info and include page macros. The code and info examples are shortened.
What happens to the storage format on export
- XML export (Cloud: Space settings, then Export space, then XML; Data Center: Space tools, then Content Tools, then Export) carries each page's storage format as it is, inside
entities.xml, along with the page tree, labels and attachments. - HTML export gives rendered HTML, not storage format. Macros arrive as their output: a code block becomes a formatted block, a panel becomes a styled box, and an include shows the included text at export time.
- The HTML export template can't be changed on Cloud. On Data Center, a server admin can edit
Page.htmlexport.vm, which lives atcom/atlassian/confluence/pages/inside the Confluence application JAR, and Atlassian links to steps for repackaging it.
Source: Atlassian's export documentation for Data Center. Our guide to exporting a Confluence space covers each export step by step, on Cloud and Data Center.
Getting storage format into Docmost
Docmost doesn't read Confluence storage format directly. Its free edition imports HTML and Markdown, so a Confluence HTML export goes in as rendered pages, with the clean-up our Confluence to Docmost guide walks through. Docmost's paid edition has its own Confluence importer.
Tablewide's importer reads both exports. From an XML export it converts each macro from its storage format definition; from an HTML export it works from the rendered output. Either way:
- Converted: code blocks keep their language, info, tip, note and warning panels become callouts, expand sections become toggles, task lists become to-dos, status labels become status pills, and links between pages, images and attachments carry over.
- Dropped: table of contents, children and page tree macros (Docmost has its own sidebar), live macros such as recently updated and content by label, and raw HTML macros. Page layouts become one column. The import report lists every page where something was removed, so you can check those pages. Jira macros become their issue key or query.
- Not carried: comments, page history and page permissions. Labels don't carry over yet. Where the export records it, each page opens with a line naming who created and last edited it in Confluence, and when; Docmost lists the account that ran the import as the author.
Because it's standard Docmost, you can export your pages at any time and import them into a Docmost you run yourself.
The free preview puts one Confluence space into a private Docmost wiki for 7 days, with no card, so you can see how your own macros came across before you decide. The preview terms say where your export is stored and when it's deleted. Tablewide is $49 a month for your whole company, with unlimited users.
Get a free preview See the migration service
Confluence is a trademark of Atlassian and Docmost is a trademark of its developers. Tablewide is not affiliated with or endorsed by either.