Migrating from Render Markdown
For Confluence Cloud sites that use the "Render Markdown" macro by StreamlineSoft.
Render Markdown is an Atlassian Connect app that has not been updated since 2021. Atlassian is ending support for Connect apps, so pages that use it will eventually stop rendering. CloudLark Markdown Renderer is a modern Forge replacement. This guide moves your existing pages to it, keeping your Markdown text.
What you get
| Render Markdown | CloudLark Markdown Renderer | |
|---|---|---|
| Platform | Connect (end of support) | Forge (runs on Atlassian) |
| Markdown found by Confluence search | No | Yes |
| Dark mode | No | Yes |
| Inline macro | No | Yes |
| PDF / Word export | Limited | Formatted content |
| Code highlighting, tables, task lists | Partial | Yes |
Before you start
- Install CloudLark Markdown Renderer on your site from the Atlassian Marketplace.
- Keep Render Markdown installed until the migration is finished.
- Try the migration on a test space or a few pages first.
Option 1: migration script (recommended for many pages)
A small script runs on your computer with your own Confluence API token. It finds every page that uses the old macro, shows what it would change, and then converts the pages. Every change is a normal page version, so it can be undone. The CloudLark app itself never needs permission to read or change your pages.
1. Prepare
- Install Node.js 18 or newer.
- Download the script: render-markdown-migrate.mjs.
- Create an API token at id.atlassian.com → Security → API tokens. Use an account that can edit all pages you want to migrate (a site admin is easiest).
# PowerShell
$env:CONFLUENCE_SITE = "https://your-site.atlassian.net"
$env:CONFLUENCE_EMAIL = "[email protected]"
$env:CONFLUENCE_API_TOKEN = "<your token>"
# macOS / Linux
export CONFLUENCE_SITE=https://your-site.atlassian.net
export [email protected]
export CONFLUENCE_API_TOKEN=<your token> 2. Find the old macro's key
Open a page that uses Render Markdown and copy its page ID from the URL (/pages/123456/...). Then run:
node render-markdown-migrate.mjs inspect --page 123456 Note the key= value of the Render Markdown macro and check that markdown= shows a length, not none.
3. Create a template page
Create a page (for example in your personal space), insert one CloudLark Markdown Renderer macro,
type exactly CLOUDLARK_TEMPLATE as its Markdown, and publish. Copy this page's ID.
4. Scan and dry run
node render-markdown-migrate.mjs scan --macro <key>
node render-markdown-migrate.mjs migrate --macro <key> --template <template page id> Nothing is changed yet. Review the list of pages and macro counts.
5. Convert
# try a few pages first
node render-markdown-migrate.mjs migrate --macro <key> --template <template page id> --apply --limit 5
# then everything
node render-markdown-migrate.mjs migrate --macro <key> --template <template page id> --apply Each converted page gets a new version with the message "Converted Render Markdown to CloudLark Markdown Renderer". The script writes a migration-log-*.jsonl file listing every changed page.
6. Undo (if needed)
node render-markdown-migrate.mjs revert --log migration-log-<date>.jsonl This restores each page to the version before the migration. Edits made to those pages after the migration are replaced, so revert soon if you need to. You can also restore single pages from Page history.
Option 2: manual (a few pages)
- Edit the page and open the Render Markdown macro to copy its Markdown.
- Type
/markdownand insert CloudLark Markdown Renderer (or the inline variant). - Paste the Markdown, save the macro, then delete the old macro.
- Publish the page.
After migrating
- Check a few pages in light and dark mode, and export one to PDF.
- Run
scanagain: it should find nothing (except pages the script skipped). - When you are happy, uninstall Render Markdown.
Troubleshooting
A macro is reported as "skipped"
The old macro on that page has no Markdown text stored in the page (for example it displayed a file from a URL). Migrate it manually.
The script stops with HTTP 401 or 403
Check the email and API token, and that the account can view and edit the page.
Is my content sent anywhere?
No. The script talks only to your own Confluence site. It is a single readable file; you can review it before running it.
Need help? Write to [email protected].