Moving a WordPress site to a new host is one of those tasks that sounds more complicated than it actually is, once you understand the sequence. Most people put it off because they are worried about breaking something or taking their site offline for hours. Done carefully, neither of those things needs to happen.
This guide walks through the whole process in order. It assumes you have a working WordPress site on your current host and want to move it to a new one. It does not assume any particular level of technical knowledge, though you will need to be comfortable with your hosting control panel and WordPress admin area.
Before you start: what you’re actually moving
A WordPress site is made up of two things: files and a database.
The files are everything in your WordPress installation, including the core WordPress software, your theme, your plugins, and your uploaded media. These live on your host’s server.
The database is where your content lives: posts, pages, comments, settings, user accounts. WordPress uses MySQL for this, and it is stored separately from the files.
To move your site, you need to move both of these to the new host and then update a few settings so they work together correctly. A migration that only moves the files, or only the database, will not work.
Step 1: set up your new hosting account first
Do not cancel your old hosting before the migration is complete. You need both accounts active at the same time during the process.
Sign up with your new host, get your login details for cPanel (or whatever control panel they use), and make sure your new hosting package is ready to accept a WordPress site. If your new host offers a one-click WordPress install, ignore it for now. You are going to be importing an existing site rather than creating a new one.
One practical note: if your new host can create a temporary URL or staging domain for your site before you update your nameservers, use it. Angelsites provides a temporary subdomain for exactly this purpose, which means you can fully test your migrated site before any DNS changes happen.
Step 2: back up your files
There are several ways to do this. The simplest is to use a plugin.
UpdraftPlus is the most widely used free backup plugin for WordPress. Install it on your current site, run a manual backup, and download the backup files to your computer. UpdraftPlus splits the backup into separate archives: plugins, themes, uploads, and the database. Download all of them.
If you prefer to work directly via your host’s control panel, you can use the File Manager or an FTP client like FileZilla to download the entire contents of your public_html folder (or wherever your WordPress installation lives). This is more reliable for large sites but takes longer.
Either approach works. The plugin method is faster for most people.
Step 3: export your database
If you used UpdraftPlus, the database is included in your backup already. You can skip this step.
If you are doing things manually, log into your current host’s cPanel and open phpMyAdmin. Select your WordPress database from the left-hand panel, then click the Export tab at the top. The default “Quick” export option in SQL format is fine for most sites. Click Go and save the .sql file to your computer.
Make a note of your current database name, username, and password while you are here. You will find these in your wp-config.php file if you are not sure what they are.
Step 4: create a new database on your new host
Log into your new host’s control panel and find the MySQL Databases section. Create a new database, create a new database user with a password, and then add that user to the database with full privileges. Note all three: the database name, the username, and the password.
The names do not have to match what you had on your old host. You are going to update WordPress to use the new credentials in a later step.
Step 5: upload your files to the new host
If you have a backup archive from UpdraftPlus, you will restore it through the plugin after uploading WordPress. If you downloaded your files manually, you need to upload them to the correct folder on your new host.
For manual uploads: connect to your new host via FTP (FileZilla works well, and your host will have provided FTP credentials when you signed up). Upload the contents of your WordPress installation to the public_html folder, or whichever folder corresponds to your domain on the new host.
For large sites this will take some time. Leave it running and move on once it is complete.
Step 6: import your database
Log into phpMyAdmin on your new host. Select your newly created database, click the Import tab, and upload your .sql file. Click Go. If your database is larger than the upload limit phpMyAdmin shows (often 50MB or 128MB), you may need to ask your host to import it directly, or use a tool like BigDump for oversized files.
Once the import is done, your content is on the new server. It is not connected to anything yet.
Step 7: update wp-config.php
In your WordPress files on the new host, open wp-config.php in a text editor. Find these three lines:
define( 'DB_NAME', 'your_database_name' );
define( 'DB_USER', 'your_database_username' );
define( 'DB_PASSWORD', 'your_database_password' );
Update them to match the new database credentials you created in step 4. Save the file and upload it back to the server, overwriting the old version.
Also check the DB_HOST line. For most shared hosting it should be localhost, which is probably already what it says.
Step 8: test using your temporary URL
If your new host has given you a temporary URL or subdomain, visit it now. You should see your WordPress site loading from the new server. Log in to the WordPress admin, check a few pages, confirm your images are showing, and make sure nothing is obviously broken.
If the site does not load, the most common causes are: the wp-config.php credentials are wrong, the database import did not complete successfully, or the files were uploaded to the wrong directory. Work through these in order.
One thing to check specifically: if your WordPress site URL is hardcoded in the database (which it usually is), your internal links may point to your old domain during testing on a temporary URL. This is expected and will resolve once your domain nameservers are pointed at the new host.
Step 9: update your nameservers
Once you have confirmed the site is working on the new host, you are ready to switch your domain over.
Log in to wherever you manage your domain (this might be your old host, or a separate domain registrar like Namecheap or Fasthosts). Find the nameserver settings for your domain and update them to the nameservers your new host has provided.
DNS changes propagate across the internet gradually. Most of the time this happens within a few hours, though technically it can take up to 48 hours. During this window, some visitors will reach the old server and some will reach the new one. Because both servers have identical content, this does not cause any visible disruption.
Do not cancel your old hosting account until propagation is complete and you have confirmed everything is working on the new host. Forty-eight hours after the nameserver change is a reasonable point to check.
Step 10: tidy up
Once the migration is confirmed and the domain is resolving correctly on the new host, there are a few small things to do.
Run the Search & Replace function in your database to update any hardcoded references to your old host’s temporary URL or server path, if applicable. The Better Search Replace plugin makes this straightforward.
Check that your SSL certificate is active on the new host and that your site is loading over HTTPS. Most hosts, including Angelsites, provision SSL automatically.
If you were using any server-specific caching (like LiteSpeed Cache configured for your old host’s stack), review those settings to make sure they are appropriate for the new environment.
Then cancel your old hosting when you are ready.
What about plugins that automate all of this?
There are migration plugins that attempt to handle the whole process in one go, most notably Duplicator and All-in-One WP Migration. These can work well for smaller sites and are worth trying if the manual process feels daunting.
The limitations: free versions of these plugins often have file size restrictions, and they can struggle with large databases or sites with a lot of media. They also abstract away the individual steps, which means when something goes wrong it is harder to work out why.
The manual method described above takes longer but gives you more visibility into each stage. For a site you care about, it is worth the extra time.
Angelsites Hosting
Plans start at £5.99/month with no introductory pricing. See what’s included here.
Angelsites is a small UK web host built for freelancers and creators. Hosting is in the UK, pricing stays the same year on year, and support comes from a real person.