Moving a WordPress site to a different hosting provider can look intimidating, but the process is straightforward when it is handled in a careful sequence. A site owner needs to copy the website files, export the database, upload everything to the new server, update configuration details, and point the domain to the new host. When each step is completed methodically, the site can be transferred with little or no downtime.

TLDR: A manual WordPress migration involves downloading the site files, exporting the database, uploading both to the new host, and updating the wp-config.php file. The administrator should test the site on the new server before changing DNS records. After the domain points to the new host, SSL, permalinks, forms, and core functionality should be checked. A complete backup should always be kept until the migration is confirmed successful.

1. Prepare Before Starting the Migration

Before any files are moved, the site administrator should create a clear migration plan. This includes checking access to the current hosting account, the new hosting account, the domain registrar, the WordPress dashboard, and the database management tool, usually phpMyAdmin. Without these credentials, the migration may be delayed or incomplete.

The administrator should also review the current site setup. This means noting the PHP version, WordPress version, active theme, plugins, database name, and any custom server settings. If the new host uses a significantly different PHP version or server configuration, some plugins or custom code may behave differently after the move.

  • Current hosting login for file and database access
  • New hosting login for creating the new site environment
  • Domain registrar access for changing nameservers or DNS records
  • FTP or SFTP credentials for file transfer
  • Database access through phpMyAdmin or a similar tool

It is also wise to schedule the migration during a low-traffic period. If the site receives orders, form submissions, or user registrations, the owner should consider placing the site in maintenance mode or temporarily pausing activity during the final database move.

2. Back Up the WordPress Files

The first major step is downloading the WordPress files from the old host. These files contain the WordPress core installation, themes, plugins, media uploads, and custom code. The most important folder is usually wp-content, because it stores the unique parts of the site, including uploaded images and theme files.

The administrator can connect to the old server using an FTP or SFTP client such as FileZilla, Cyberduck, or another file transfer tool. After connecting, the entire WordPress directory should be downloaded to a local computer. In many hosting accounts, the site files are located in a folder called public_html, www, or a domain-specific directory.

For large websites, the download can take time. It is important not to interrupt the transfer. Once the download is complete, the administrator should confirm that key files and folders are present, including wp-admin, wp-includes, wp-content, wp-config.php, and .htaccess if the server uses Apache.

3. Export the WordPress Database

WordPress stores posts, pages, comments, settings, users, plugin data, and many theme options in the database. Moving only the files is not enough. The database must also be exported from the old host and imported into the new host.

Most hosting panels provide access to phpMyAdmin. Inside phpMyAdmin, the administrator should select the correct database used by the WordPress installation. If the database name is unknown, it can be found in the wp-config.php file under the line that defines DB_NAME.

After selecting the correct database, the administrator can choose the Export tab and use the Quick export method with the SQL format. For larger or more complex sites, a custom export may be useful, but the standard SQL export is usually sufficient for a typical WordPress migration.

The exported file should be saved safely on the local computer. This file is the complete content and settings backup for the website, so it should not be edited unless the administrator understands SQL and WordPress database structure.

4. Create a New Database on the New Host

Next, the new hosting environment must be prepared. The administrator should log in to the new hosting control panel and create a new MySQL or MariaDB database. A database user should also be created and assigned to the database with full privileges.

The following details should be recorded carefully:

  • Database name
  • Database username
  • Database password
  • Database host, often localhost, but not always

These details will be added to the wp-config.php file later. If any of them are incorrect, WordPress will show a database connection error after the files are uploaded.

5. Import the Database to the New Host

Once the new database is created, the administrator should open phpMyAdmin on the new host, select the new database, and use the Import tab. The SQL file exported from the old host should be uploaded and imported.

If the database is very large, phpMyAdmin may fail because of upload limits or timeout settings. In that case, the hosting provider may offer a database import tool, command-line access, or support assistance. Another option is to compress the SQL file into a supported format such as .zip or .gz before importing.

After the import finishes, the administrator should check that WordPress tables are visible. Common table names include wp_posts, wp_options, wp_users, and wp_postmeta. The table prefix may be different if the original site used a custom prefix.

6. Upload WordPress Files to the New Host

With the database in place, the site files can be uploaded to the new server. The administrator should connect to the new hosting account with FTP or SFTP and upload the previously downloaded WordPress files into the correct web root directory. This may be public_html, htdocs, or another folder specified by the host.

File uploads can take longer than downloads, especially for media-heavy sites. The administrator should verify that the full wp-content/uploads folder is transferred, because missing media files can result in broken images throughout the site.

Care should be taken not to upload the WordPress files into the wrong folder level. For example, if the domain points to public_html, the WordPress files should sit directly inside that folder, not inside an extra nested folder such as public_html/wordpress, unless that structure is intentional.

7. Update the wp-config.php File

The wp-config.php file connects WordPress to the database. After moving the site to the new host, this file must be updated with the new database credentials.

The administrator should open wp-config.php in a text editor and update these values:

  • DB_NAME with the new database name
  • DB_USER with the new database username
  • DB_PASSWORD with the new database password
  • DB_HOST with the database host provided by the new server

After saving the file, it should be uploaded back to the new server if edited locally. A small typo in this file can prevent the site from loading, so the administrator should check the values carefully.

8. Test the Site Before Changing DNS

Before pointing the domain to the new host, the site should be tested on the new server. Some hosts provide a temporary URL, staging link, or preview tool. Another method is editing the local computer’s hosts file so the domain resolves to the new server only for that computer.

During testing, the administrator should browse key pages, check the WordPress login screen, test menus, inspect images, submit forms, and confirm that plugins function correctly. If the site uses ecommerce, the checkout process should be reviewed carefully in test mode.

It is also important to check whether the site URL needs updating. If the domain remains the same, no change is usually needed. If the site is also moving to a new domain, the administrator must update the WordPress address and site address, then run a search and replace operation to update internal links.

9. Point the Domain to the New Host

After testing is complete, the domain can be pointed to the new hosting account. This can be done by changing the domain’s nameservers to the new host’s nameservers or by updating specific DNS records, such as the A record, to the new server IP address.

DNS changes do not update instantly everywhere. Propagation can take a few minutes to 48 hours, depending on DNS settings and caching. During this period, some visitors may see the old server while others see the new one.

To reduce inconsistency, the administrator can lower the DNS TTL value before the migration, if possible. This tells networks to refresh the DNS record more often, which can make the final switch faster.

10. Complete Post-Migration Checks

Once the domain resolves to the new host, the administrator should perform a final review. The site should be checked from multiple devices and browsers. The administrator should also log in to the WordPress dashboard and save the permalink settings under Settings > Permalinks. This can refresh rewrite rules and fix certain 404 errors.

An SSL certificate should be installed or reissued on the new host so the website loads securely over HTTPS. If the site shows mixed content warnings, some image or script URLs may still be using HTTP and should be updated.

Other important checks include contact forms, caching, security plugins, backups, cron jobs, email delivery, analytics tracking, and ecommerce payment settings. If the old host handled email, the administrator should ensure that email records are configured correctly before canceling the old hosting plan.

11. Keep the Old Hosting Account Temporarily

The old hosting account should not be canceled immediately after migration. It should remain active for several days, or longer for business-critical websites. This provides a safety net in case missing files, database issues, or DNS problems are discovered after launch.

Once the new site has been tested thoroughly and traffic is consistently reaching the new host, the administrator can create a final backup of the migrated site. Only then should the old hosting account be closed.

FAQ

  • Can a WordPress site be moved manually without a plugin?
    Yes. A manual migration only requires access to the site files, the database, the new hosting account, and the domain DNS settings.

  • How long does a manual WordPress migration take?
    A small site may take less than an hour, while a large site with many media files or a large database can take several hours.

  • Will the website experience downtime during migration?
    Downtime can be minimal if the site is copied first, tested on the new host, and DNS is changed only after everything works correctly.

  • What causes the “Error establishing a database connection” message?
    This usually means the database name, username, password, or host value in wp-config.php is incorrect, or the database user lacks permission.

  • Does SSL need to be set up again after moving hosts?
    Yes. The new server must have a valid SSL certificate installed for the domain so the site can load securely with HTTPS.

  • When can the old hosting account be canceled?
    The old account should be kept until the new site has been fully tested, DNS has propagated, email is working, and a fresh backup has been created.