Trying to move WordPress to a new server or host can be an intimidating task, and not just for beginners but even if you’re a fairly seasoned WordPress user.
That’s all because moving WordPress from one host to another is an entirely different type of challenge than launching a 100% new site.
Don’t sweat, though! We have you covered. Here’s how to move WordPress to a new server or host, step by step, and with no downtime in between.
Step 1: Duplicate the site
The first thing to do when you want to move WordPress to a new server is to create a backup of the site (which then can be taken to the new host and restored there).
There are many methods of getting that done. There are even services in the market that will take care of the process for you, not to mention tens of different plugins that promise smooth backup/restore experiences.
Here, we’re going to focus on one of the best solutions of them all. A couple of reasons:
- it can be used on all hosts
- it’s free
- it does work hiccup-free
That solution is called Duplicator – a WordPress plugin. It’s been getting a lot of good press on the web, and for a very good reason. It simply. Does. Work.
Okay, so get Duplicator installed to begin. The installation process is standard, so no surprises there.
With the plugin ready, go to Duplicator and click on the Create New button next to Packages:
On the next screen, you can review the parameters of the backup if you want to, but that’s not mandatory. If you’re in a hurry, simply click on Next.
The next section is where Duplicator scans through your current hosting setup and evaluates how compatible that setup is in order to allow the backup to be made hassle-free.
You might see a notice here and there depending on your host but, in most cases, you don’t need to worry about those. Duplicator also gives you some tips on how to get these all cleared and proceed with the backup.
If you see any notices, check the Yes field and then click on the Build button. If there are no notices, you can click on the Build button right away.
This is where Duplicator does its magic 🧙. The backup process might take a while depending on the size of your site. You need to keep the window open until it finishes!
When the backup finishes, you’ll see a confirmation screen like this:
Download the installer file and the archive containing the backup. You’ll need it when going through the next steps on your way to move WordPress to a new server.
Step 2: Get your new host ready
Before your new host can receive the backup, you need to get it prepared by taking care of a couple of things:
- add your domain name to the server
- create a blank database for the site
- (optional) duplicate your email addresses
We’ll cover how to do all that next:
Most web hosts use cPanel to enable users to set up their hosting environments on their own, without having to understand what’s going on under the hood. If your new host uses a different management panel, you might want to contact the support so that they can handle those three tasks for you.
Your host should have provided you with login details to cPanel during signup. Look for that email in your inbox. Some hosts let you go to cPanel directly from the main client area. For example:
Add your domain name to the new server
Once you’ve logged in to cPanel, go to the DOMAINS section and click on Addon Domains:
Enter your domain name into the New Domain Name field. The other two fields will be filled out automatically. Click on Add Domain.
After a second, you’ll see your new domain on the list. At this stage, the server is ready to welcome your domain name and website.
Create a new database
The next thing we need to do in order to move WordPress to a new server is create a blank database. This will be the new home for your site’s data.
To add a new database in cPanel, scroll down to the DATABASES section and click on MySQL Database Wizard.
This is a helpful step-by-step interface that will guide you through the process of setting up a new database.
- Step 1 is about picking a name for your database.
- Step 2 is about creating user accounts that will then be able to access that new database. That new user account is how WordPress accesses the database back and forth. Fill out the required fields and note down the login and password somewhere. You’ll need those later on.
- Step 3 is the final one, and it’s where you need to assign your new user account to the new database. Simply select All PRIVILEGES and click on Next Step.
The new database has just been added!
(Optional) move your email address to the new server
Most users will have at least one custom email set up under their domain name. Do you? In other words, do you have an email like
If so, read this section. If not, skip to the next step.
When you move WordPress to a new server, you’re effectively moving your domain name to the new host as well, so all your emails will start arriving at that new host.
However, if you don’t set up your email accounts on the new server correctly, those emails will either get lost somewhere or be marked as “undelivered: recipient doesn’t exist.” I’m guessing that’s not what you want.
Luckily, preventing this is quite simple:
In cPanel, scroll down to the EMAIL section and click on Email Accounts:
Click on the + Create button that’s on the right.
What we’re going to do now is add your existing email addresses to the new server.
Here’s the form:
- Domain – select your new domain name – the one you’re moving
- Username – this is important(!), you need to enter the same username that you used with your previous host; for example, if your email is
mark@YOURDOMAIN.comthen the username is
- Password – a new password, doesn’t need to be the same as the old one
- Storage Space – best set to Unlimited
Click on + Create to finalize the setup.
💡 If you have more emails set on your old host, repeat the process for each one.
You should see your email on the list.
At this stage, your new host is ready to welcome any incoming mail addressed to your domain.
Step 3: Upload the site to the new host
With the domain name and database ready (and email as well), we can now upload your entire site backup to the new server.
To do that, in cPanel scroll down to the FILES section and click on File Manager:
Navigate to the directory that’s been created for the new domain name – the one you’re transferring in. In most cases, that’s going to be something like
Once there, simply upload your site’s archive – the one you’ve got from Duplicator. Remember to upload both the archive (zip) and the
installer.php file. This is the directory where everything will end up when you move WordPress to a new server.
Step 4: Edit your local hosts file
At this stage, you’re almost ready to perform the final import of your website and transfer over all its files and data.
However! Before you can do that, you need to be able to access the new server via the browser from your local computer. This does sound fairly simple in itself, but there’s one problem that we need to address:
Right now, your domain hasn’t been officially redirected to the new server – we haven’t done it yet to prevent downtime, and we’re only going to do that at the very last moment. This is all fine and dandy, but it also means that your new server is basically invisible to the public (including you) and cannot be accessed directly.
To work around that, you can configure your local computer to go to the new server manually when looking for your website domain.
Here’s how to do that:
First, go back to cPanel and see what your new server’s IP address is. This piece of info is usually visible in the sidebar. Example:
Note this address down somewhere; you’ll need it in a minute.
From now on, when you try to navigate to your site from your web browser, you’ll be taken straight to the new server.
💡 Let’s emphasize that only you can access your site’s new server like that. Everyone else will still go to your old server when they try to view the site. So from their point of view, you didn’t move WordPress to a new server just yet.
Step 5: Install site via online installer
Fire up your browser and navigate to
Once you do that, you’ll see the main interface of the installer. All you need to do here is accept the terms and click on Next.
The next step is where you’ll need to enter the connection details of your new database – the blank one you created a couple of minutes ago.
For most hosts, the Host value should be set to
localhost. Click on Test Database when you have all the fields filled in.
If all went well, you should see this:
You can click on Next to proceed, and then confirm the popup message to run the installer.
Click Next again on the next screen to confirm the site title and URL.
After a couple of seconds, the installation should be complete. Here’s what the final confirmation message usually looks like when you manage to move WordPress to a new server:
It’s a good idea to check the box labeled, “Auto delete installer files …”
Click on Admin Login to access the WordPress dashboard of the site on the new host. All your WordPress accounts are the same as they were before moving the site to the new host.
After you log in, you’ll see a confirmation that the installer files have been removed. You probably don’t need the Duplicator plugin anymore so go ahead and deactivate/delete it.
You can see your website on the new server in all its glory when you navigate to
YOURDOMAIN.com. Just keep in mind that it’s just you seeing it right now (it’s not yet been made public on the web) – this is due to the hosts file thing that we talked about a minute ago. Let’s address this in the final step:
Step 6: Redirect the domain name
At this stage, your website has been fully migrated to the new server. The final step that we need to do now is tell the whole world (web) to go to that new server when looking for your site – instead of the old server.
This is usually done by editing the nameservers assigned in your domain name setup. To change those, you’ll need to go back to where you registered the domain in the first place.
When changing the nameserver settings, you’ll need to provide the DNS addresses of your new nameservers – the ones assigned with your new host. You can find those namserver addresses in your new host’s user panel.
For example, at SiteGround, you can find those when you go to My Accounts → Information & Settings tab → Account DNS:
If you’re going to be hosting your site with Bluehost, they actually use the same DNS addresses for all sites. You can find those addresses here.
If you’re having trouble finding out what the correct DNS addresses are, you can always contact the support at your new host. They’ll let you know no problem.
Here are some tutorials on how to change the nameserver settings with a couple of popular registrars:
- how to change domain nameservers with GoDaddy
- how to change domain nameservers with Bluehost
- how to change domain nameservers with Namecheap
- how to change domain nameservers with SiteGround
Once you set the DNS settings of your domain to point to the new server, you’ll need to wait a while before they propagate throughout the whole web. This process usually takes around 48 hours.
Congratulations, your website has been successfully migrated and you’ve now learned how to move WordPress to a new server! 🍾✨
What’s next after you move WordPress to a new server?
First off, you can go back to your hosts file and erase that additional entry you made during the migration. You don’t need that line anymore.
Also, you’ll probably want to double check if your email configuration still works in your email tool. Even though you still have the same email address, the actual details of the configuration might have changed.
Send a couple of test emails to yourself from another address and see if you’re getting them. If not, you’ll need to check with your new host and get info on how to set up your email software correctly.
And that is it! Your WordPress website is now with the new host.
Are you struggling to move WordPress to a new server or host? Is anything about the process described here unclear? Let us know in the comments.
Don’t forget to join our crash course on speeding up your WordPress site. With some simple fixes, you can reduce your loading time by even 50-80%: