List broken macros in Confluence


I'd like to clean up our instance of Confluence, removing some of the plugins we don't need. I want to remove the plugins in the test environment, then try and get a list of pages with broken macros..


Is there any plugins / user macros that can obtain such a list?





3 answers

This widget could not be displayed.

You can use macroName: in the search to find pages using a specific macro.

Listing pages with broken macros is a bit harder though.

Thank you - that was enough for me to find what I needed.

This widget could not be displayed.

There is a plugin that can remove a macro from every page in your confluence instance. You can even replace it with a different string/macro.  You might want to check that out. It also lists the occurences of that macro.


It doesn't list broken macros. I don't think there is a possibility fot that.


This widget could not be displayed.
Stephen Deutsch Community Champion Mar 03, 2015

Hi Mark,

I thought something like this would be useful, so I whipped up a short python script:

import xmlrpclib
import codecs

confluenceUrl = "https://<your-server>"
server = xmlrpclib.ServerProxy(confluenceUrl + '/rpc/xmlrpc')
username = 'username'
password = 'password'
token = server.confluence2.login(username, password)
spaceSummary = server.confluence2.getSpaces(token)
for space in spaceSummary:
    log = ""
    log += "<hr>\n"
    log += "<p>Searching in space " + space["name"] + " - " + space["key"] + "</p>\n"
    log += "<hr>\n"
    print log
    with'logfile.html', 'a', encoding='utf-8') as f: 
    spacePages = server.confluence2.getPages(token, space["key"])
    for page in spacePages:
        pageContent = server.confluence2.renderContent(token, "", page["id"], "", {'style': 'clean'})
        if '<span class="error">Unknown macro:' in pageContent:
            log = ""
            log += "<p>Page " + page["title"] + " has broken macros!</p>\n"
            log += "<p>Page ID: " + page["id"] + "</p>\n"
            log += '<p>Page URL: <a href="' + page["url"] + '">' + page["url"] + '</a></p><p> </p>\n'
            log += "<p>----</p>\n"
            print log
            with'logfile.html', 'a', encoding='utf-8') as f: 

It will go through every page on your site and see whether it has broken macros on it and outputs the results with links to the pages in an HTML file.  I would run it off-hours (or on your test instance) since it hits the server pretty hard, but we have a fairly good size instance and it only took about 5-10 minutes to run.  I only tested it with plain Python 2.7.8 and Confluence 5.5, but it should work fine on other versions.

Doesn't work in Cloud.

Traceback (most recent call last):
File "./", line 10, in <module>
token = server.confluence2.login(username, password)
File "/usr/lib64/python2.7/", line 1240, in __call__
return self.__send(self.__name, args)
File "/usr/lib64/python2.7/", line 1599, in __request
File "/usr/lib64/python2.7/", line 1280, in request
return self.single_request(host, handler, request_body, verbose)
File "/usr/lib64/python2.7/", line 1328, in single_request
xmlrpclib.ProtocolError: <ProtocolError for 404 Not Found>
Stephen Deutsch Community Champion Apr 26, 2016

It seems like you might be missing the full context Path.  Usually Cloud instances are

Try updating your URL to that and hopefully it should work.

@Stephen Deutsch, spot on. Correcting the URL got it to run. Although I now get a 504 time out after a few minutes.

@Stephen Deutsch: Nice example.

Does anyone know whether something like this is possible through the REST API as well, since XML-RPC is now a deprecated API?

Suggest an answer

Log in or Sign up to answer
Community showcase
Posted Sep 17, 2018 in Confluence

Why start from scratch? Introducing four new templates for Confluence Cloud

Hi my Community friends!  For those who don't know me, I'm a product marketer on the Confluence Cloud team - nice to meet you! For those of you who do, you know that I've been all up in your Co...

629 views 8 6
Join discussion

Atlassian User Groups

Connect with like-minded Atlassian users at free events near you!

Find a group

Connect with like-minded Atlassian users at free events near you!

Find my local user group

Unfortunately there are no AUG chapters near you at the moment.

Start an AUG

You're one step closer to meeting fellow Atlassian users at your local meet up. Learn more about AUGs

Groups near you