Press "Enter" to skip to content

How to migrate your blog from Ghost Pro to WordPress

I’ve been using Ghost Pro for my personal blog in the past two and a half years, but time has come to move back to the good old WordPress. The Ghost Pro platform is incredibly easy to use and when I gave it a try I simply wanted a blog to publish my ideas on without the hassle of maintaining it, like updating WordPress and themes and plugins and solving compatibility issues. For that my Ghost Pro subscription was perfect. Although some AdSense ads do appear on this site, it hardly generates any revenue, so the monthly 29$ subscription had to go…

Migrating my blog from WordPress to Ghost was quite easy, since I’ve removed all content that was not IT related, so I only had to migrate like 10-12 posts which I did transfer with copy-paste.  But now there are slightly more posts and I have slightly less patience than 2.5 years ago. So here’s how I managed to move my blog from Ghost back to WordPress.

How to migrate your blog from Ghost to WordPress

1. Remove your custom domain from Ghost

Log in to and remove the custom domain name from the configuration and save your settings. Your blog will still be accessible on the default {blog_name} address.

2. Delete the custom CNAME record from your DNS configurations

When you’ve set your custom domain name up with Ghost, you had to create a new CNAME record in your DNS configurations in order Ghost to be able to use it. Now you have to remove it.

It should look something like this:
NAME: your custom domain
Record: {blog_name}

3. Set up a new WordPress blog

Simply create a new instance of WordPress where you want it to be hosted. You may already use your custom domain name that was used on your Ghost blog before. If you have used a subdomain for your Ghost Pro blog, you might need to re-create it.

Please note that it may take several hours for your DNS changes to propagate through the Internet, so don’t panic if you see this monkey when trying to access your new WordPress blog.

Ghost to WordPress migration error

4. Export the data of your Ghost blog

The next step is to export your data from Ghost. Simply log in and go to the Labs section and hit the Export button to download all your data in JSON format. Unfortunately this does not contain your images. Officially if you want to download your images, you have to contact the Ghost support team and kindly ask them to send you the content folder of your blog. I hate sending emails, but I did make this step… with no success. I did not receive an answer in 24 hours, so I took matters into my own hand (see my solution below).

5. Convert Ghost JSON to WordPress XML

WordPress does not have a Ghost importer at the moment. We will use the WordPress importer to import your data, but that only works with XML files. I’ve used Ahmed Amayem’s JSON converter for this. Save the results in an XML file and you’re done.

6. Import your Ghost posts in WordPress

We are pretty close to our goal. Log in to your WordPress admin area, go to Tools > Import, then install and run the WordPress importer. Browse and select your XML file created in the previous step and simply hit the Upload file and import button. After this is done, you may open your WordPress blog and verify if all your blog posts have been imported. Don’t worry about your missing images, we’ll get them in the next step.

7. Exporting images from Ghost Pro

I’ve mentioned that I did contact Ghost support to receive my images, but after 24 hours I’ve done it myself. The trick is to save your whole site using HTTrack. You might do this anyway, since canceling your Ghost Pro subscription will result in the deletion of the blog.

8. Import your Ghost images to WordPress

After you have successfully saved your whole blog using HTTrack, you may simply upload the content folder to the root directory of your WordPress installation using an FTP uploader. WordPress uses the wp-content folder to store media, but this is a perfectly valid solution as well and when you’re done with uploading your images and hit the refresh button on your WordPress blog, you should see all your Ghost posts migrated.