Migrate Your WordPress Site to Another Host

TL;DR: Install WP Staging Pro on both the source and destination sites. Create a full backup on the source, transfer the .wpstg backup file to the destination (via backup URL or direct upload), then click Restore. For a typical site the whole process takes under 30 minutes.

⚡ Faster method available
Use Remote Sync to migrate sites directly between servers in minutes. → Pull a WordPress site from one server to another

This article explains how to back up and migrate your WordPress website with WP Staging Pro.

This backup feature can migrate and copy your entire WordPress website to another domain, new host, or new server, often faster and more reliably than other plugins.

You can use the WP Staging backup feature to migrate your staging site to a production website as well. The backup and restore flow handles large sites reliably through chunked transfers that survive slow connections and shared-hosting time limits.

Before You Migrate: Pre-Flight Checklist

Running through this checklist before you start avoids the most common migration failures:

  • New host is ready. WordPress must be installed on the destination server before you can run a restore. If WordPress is not yet installed, the WP Staging Restore standalone tool can install WordPress and restore a backup in a single step.
  • PHP and MySQL version compatibility. Confirm the destination host runs a PHP version and MySQL version at least equal to the source. A version mismatch is a common cause of post-restore white screens.
  • Note your current table prefix. The default is wp_, but many sites use a custom prefix. Record it now — you may need it during troubleshooting.
  • Disable caching and CDN plugins. Caching plugins such as LiteSpeed Cache, W3 Total Cache, or WP Rocket, and any active CDN proxy, can embed stale asset paths or incorrect base URLs in the backup. Deactivate them before creating the backup and reactivate only after the restore is verified on the new host.
  • Record your DNS TTL. Log in to your domain registrar and note the current TTL on your A record. If it is longer than 300 seconds, reduce it 24 hours before the DNS cutover so propagation completes quickly.
  • Plan the cutover window. Schedule the migration during a low-traffic period. Keep the old host running until the new site is verified and DNS has fully propagated.

Which Migration Method Should I Use?

Method Best for Requires plugin? Handles large sites?
WP Staging Pro backup/restore Full-site migration to a new host or domain Yes (WP Staging Pro) Yes — chunked transfer handles multi-GB sites
Manual FTP + phpMyAdmin Simple sites with no plugin access No Fragile above a few hundred megabytes
All-in-One WP Migration One-click export/import Yes (third-party) Free tier capped at 512 MB
Managed host migration Handing the move to your new host No Yes, but scheduling depends on the host

In our support queue, failures on manual FTP migrations are significantly more frequent than failures on the WP Staging backup/restore path. For any site above a few hundred megabytes — or with a custom database prefix, multisite, or non-standard table structure — the WP Staging chunked backup is the most reliable option.

How to Migrate WordPress to a New Host

Check out the video below if you’d rather watch a video than read the article. It explains all the steps on how to migrate WordPress to a new host:

Create a Backup of Your WordPress Website

Important: If you want to migrate a WordPress multisite to another host that has a different domain structure, e.g. Domain versus Subdomain, you need to customize the target domains with filters. This is explained in this article!

Let’s start.

First, open the WP STAGING | PRO plugin and click the "Backup & Restore" button.

Migrate Your WordPress Site to another domain or host by using WP STAGING Backup
Backup & Restore Butt

Click on "Create new Backup."

Migrate Your WordPress Site to another domain by using WP STAGING Backup | Create New Backup Button
Create New Backup Button

Optionally, you can set up here a name for the backup. Keep all checkboxes selected to make a full site backup.

Transfer WordPress Site to Another Host
Set up a Name for the Backup

Now click on "Start Backup."

Start the Backup Process
Start the Backup Process

Once the backup is ready, you’ll see the message Backup Complete.

WordPress Backup Completed
Backup Completed

Upload the Backup File to the Remote Website

You have two options to upload the backup file to the remote destination website:

  • Upload directly by using the link to the backup file. (Fastest solution)
  • Downloading first and then uploading the backup to the destination server via an upload form or sFTP. (Slower, but useful if you have the backup file on your local computer)

Option 1: Upload directly by using the Backup URL

Go to WP Staging -> Backup & Migration. Select a backup and click on Actions -> Copy Link to Backup

Open WP Staging -> Backup & Migration on the destination remote server. Click on Upload Backup and paste the link to the backup file by using Ctrl+V (Win|Linux) or Cmd + V (Mac). The link contains a unique hash, making it unguessable by unauthorized parties to access it.

Click on Upload and the file will be transferred from the source website to the remote one.
After uploading it you can access it from the list of backups to restore that backup file in the next step.

Option 2: Download first and Upload then to the Destination Server

Click on Actions and Download.

Download the Backup
Download the Backup

That will download the entire website packed in one file with the extension ".wpstg."

The Backup File with the Extension ".wpstg"
The Backup File with the Extension “.wpstg.”

Upload the Backup File to the New Host

The only requirement for the next step is to have WordPress already installed on the destination host to migrate your website. That can be a new WordPress site from scratch or another website you want to make identical to the source website.

If WordPress is not installed on the remote server, you can use the WP Staging | Restore standalone tool. It installs WordPress on a blank server and restores a backup in a single step. This is also useful if your WordPress site is completely down and you need to restore it without first recovering the WordPress core system. The tool is available with a WP Staging Pro license. Read more.

Go to WP Staging Pro and click the "Backup" menu.

Backup & Migration Button
Backup & Restore Butt

Click on "Upload Backup."

Upload Backup Button
Upload Backup Button

Select the backup from your local computer and upload it.

Select the WP STAGING Backup File
Select the WP STAGING Backup File

Optionally you can upload the backup file via FTP by uploading the backup to the folder
/wp-content/uploads/wp-staging/backups/

Restore the Backup File

Once the backup is uploaded, click Actions > Restore, Next, and Restore.

Restore Button
Click on “Restore”

The restore process will take a few minutes, depending on the backup file size. Once it is ready, you will see the finished modal.

Backup Restored Successfully
Backup Restored Successfully

After clicking on OK, WordPress redirects you to the login screen. Enter the username and password of the source website.

The Login Screen
The Login Screen

That’s it. With the help of WP Staging Pro, you have migrated the entire website to another server.

After the Restore: Verify Your Migration

Once the restore completes and you can log in, work through this checklist before updating your DNS to point at the new host:

  1. Update siteurl and home. Go to Settings → General and confirm both the WordPress Address and Site Address reflect the new domain. If you are migrating to the same domain on a different server, these should already be correct.
  2. Run a domain search-and-replace. Serialized data in the database can hold hardcoded references to the old host. Use a search-and-replace plugin or WP-CLI’s wp search-replace command to swap the old domain for the new one across all tables.
  3. Flush permalinks. Go to Settings → Permalinks and click Save Changes without modifying the structure. This regenerates the .htaccess rewrite rules on the new server.
  4. Test forms and REST API endpoints. Submit a contact form and confirm the confirmation email arrives. Check that https://your-new-domain.com/wp-json/wp/v2/posts returns valid JSON. If it returns an error, the issue is likely at the server level — confirm that mod_rewrite (Apache) or the nginx equivalent is active. If REST API errors persist, see How to Fix REST API Errors in WordPress.
  5. Scan wp_options for stale references. Use WP-CLI to list any rows still containing the old domain:
wp option list --search="*old-domain.com*" --fields=option_name,option_value
  1. Request re-indexing in Search Console. After DNS has propagated, paste the new canonical URL into Search Console → URL Inspection and click Request Indexing.

What to Do If the Migration Fails

In our support queue, the most common causes of a failed restore are:

MySQL max_allowed_packet error

When restoring a large database, MySQL may reject a packet that exceeds its max_allowed_packet limit. The restore log shows an error such as Got a packet bigger than 'max_allowed_packet' bytes. See Increase max_allowed_packet Size in MySQL for step-by-step instructions covering shared hosting, VPS, and managed database environments.

PHP execution timeout on large sites

Shared hosts that impose a short PHP execution time limit will terminate the restore mid-process on large sites. We’ve seen this most often on sites with large databases where the restore script stalls partway through the database import phase. The WP-CLI restore path bypasses browser-based timeouts entirely — use wp staging:restore from an SSH session instead. For guidance on adjusting PHP configuration values on common hosting panels, see Increase PHP max_input_vars Limit in WordPress.

File permission errors after restore

If the restore completes but the site shows a blank page or file-not-found errors, check that wp-content/ and its subdirectories are writable by the web server user. On most Linux hosts this means 755 for directories and 644 for files, with ownership matching the server’s process user.

Redirect loops caused by a stale siteurl

If siteurl in wp_options still contains the old domain, WordPress redirects every request back to the old host, creating an infinite loop. Fix it via WP-CLI:

wp option update siteurl 'https://your-new-domain.com'
wp option update home 'https://your-new-domain.com'

If you are locked out of the admin area entirely after a migration, see How to Create an Admin User with MySQL in WordPress for recovery steps.

Related Articles

Updated on May 22, 2026

Rene Hermenau

Author: Rene Hermenau

About the author: René Hermenau is the founder of WP STAGING. He works on WordPress backups, staging, migrations, database handling, and safe deployment workflows.