How to migrate WordPress blog to a new hosting provider

I self-host WordPress rather than use a domain, but recently the hosting provider I was using was giving me performance grief. I was getting PHP execution timeouts when people tried to view my blog which is pretty poor.

So I bit the bullet and found a new provider. The process for migrating was pretty simple and straight forward, here’s what I did:

  • Took out a new web hosting account with a different provider – this provided me with a new website that I could address via an IP address temporarily, e.g.
  • Installed the latest WordPress (downloaded manually from on the new website
  • Installed all the same themes and plugins as the old blog
  • Installed the ‘Import WordPress’ plugin in the new blog (WordPress Admin –> Tools –> Export)
  • Exported the content of the old blog (still ‘live’ at this point) and saved the file to my PC
  • Ran the ‘Import WordPress’ plugin the new site (WordPress Admin –> Tools –> Import) and made sure to tick the box to include images and other media. This was important as I wanted to copy all the images I’d included in blog posts. Important to note that the plugin retrieves the images from the old site, they are not in the XML file you generated at the Export step.
  • Viewed the new blog (via an IP address only at this stage) to check all was working as expected.
  • Updated the new blog WordPress settings to have a base URL of (WordPress Admin –> Settings –> General)
  • Updated the Name Servers for this domain to point to my new hosting providers Name Servers

This last step is what changes the domain name to point from the original IP address to the new one. The propagation of these changes can take anywhere between 2 to 72 hours. I chose to left my domain registered with the original registrar, but you might choose to transfer this when you sign up with a new host. If you want any more info on DNS, check out this guide

For more details on importing content into WordPress, have a look here.

The last thing I had to do was to update my publishing clients with the new username / password.

Overall it was a pretty straight forward process, probably an hour of effort that was spread out over one day. I was lucky that the DNS propagation took place pretty quickly for me.

I’m pretty happy with WordPress as a blogging platform, and the portability of content like the above is example is what keeps me happy with it. Now here’s to hoping that is the end of the PHP timeout errors I was getting…