Originally published: April 3, 2025 ยท Last reviewed and updated: October 2026
Moving a WordPress site to a new host comes down to three tasks. First, copy the files and the database. Second, make the copy work on the new server. Third, point your domain at it without losing orders, comments, or email. Most problems happen when one of those steps is rushed, not because migration is technically hard.
This guide shows how to migrate a WordPress site to a new host: how to choose a migration method, a step-by-step manual process, the DNS switch, and the checks to run afterwards.
The Short Answer
First, take a full backup of the files and database. Then pick a method:
- Your new host’s free migration service, if it offers one.
- A migration plugin such as Duplicator, All-in-One WP Migration, or Migrate Guru for small and medium sites.
- A manual migration with SFTP and WP-CLI for large or complex sites.
Before you switch, test the copied site on the new server using a temporary URL or your computer’s hosts file. Lower your DNS TTL a day or two in advance, then switch DNS during a quiet period. Keep the old hosting account active for at least a week. After the switch, check HTTPS, forms, email, caching, and Search Console.
Choose a Migration Method
| Method | Best for | Pros | Watch out for |
|---|---|---|---|
| Host migration service | Most sites moving to a managed or mid-range host | Little work for you; the host handles the technical steps | Timing depends on their queue; confirm what is included (email, DNS, SSL) |
| Migration plugin | Small and medium sites, non-technical owners | Packages files and database together and rewrites URLs | Free versions often have size limits or depend on PHP upload limits; very large sites can time out |
| Manual (SFTP + database export, or WP-CLI) | Large sites, custom setups, developers | Full control; no size limits; works when plugins fail | More steps; mistakes in wp-config.php or URL replacement break the site |
Whatever you choose, check that the new server meets WordPress’s requirements and runs a PHP version at least as new as the old one. Our guide on updating the PHP version safely explains how to check it.
Before You Migrate: Checklist
- Full backup of files and database, stored off the server. Our guide on how to back up a WordPress site covers what to include.
- Lower DNS TTL. Cloudflare’s DNS best-practices guide recommends lowering TTLs 24 to 48 hours before a migration; 300 seconds is a common short value.
- List what lives on the old host: email accounts, cron jobs, SSL certificates, redirects in
.htaccess, and any non-WordPress folders. - Note your settings: PHP version, memory limit, and any server-level caching.
- Plan a content freeze for stores and membership sites so orders and sign-ups are not lost during the switch.
Step-by-Step: Manual WordPress Migration
- Put the site in maintenance mode, or at least pause publishing and comments, so the database does not change during the copy.
- Export the database with phpMyAdmin or WP-CLI’s
wp db export. - Download the files, mainly
wp-contentandwp-config.php, by SFTP or as an archive from your control panel. - Create a new database and user on the new host.
- Upload the files to the new server and import the database.
- Edit
wp-config.phpwith the new database name, user, password, and host. The WordPress Advanced Administration Handbook covers these settings. - Replace URLs only if the domain changes. Use WP-CLI’s search-replace command and run it with
--dry-runfirst, because it handles serialized data correctly where a plain SQL replace would break it:
wp search-replace 'https://old-domain.com' 'https://new-domain.com' --skip-columns=guid --dry-run
- Preview the site on the new server before changing DNS: use the host’s temporary URL, or map your domain to the new IP in your computer’s hosts file.
- Save permalinks under Settings โ Permalinks to rebuild rewrite rules, then test key pages, forms, logins, and checkout.
Switching DNS Without Downtime
When the copy works, update the A record (or nameservers) to point at the new server. Because you lowered the TTL in advance, most visitors reach the new server quickly. If you change nameservers rather than records, the switch can take longer, because the registry’s NS records have their own long TTL.
For stores, do the final database sync right before the DNS change, or schedule a short maintenance window, so no orders land on the old server after the copy. Keep the old hosting account active until traffic and email have fully moved.
After the Migration
- SSL: issue or install a certificate on the new host and confirm every page loads over HTTPS. Our guide to adding SSL to WordPress covers mixed-content fixes.
- Email: if email was hosted with the old provider, recreate the mailboxes and update MX records. Also test WordPress’s own emails; see WordPress not sending emails if they fail.
- Caching: clear old caches and configure the new host’s caching once. See our WordPress cache plugins comparison.
- Cron and backups: recreate server cron jobs and confirm scheduled backups run on the new host.
- Search Console: check that the site is still verified, and watch the Pages and Crawl stats reports for errors in the first weeks. A host change on the same domain does not need a change-of-address request.
Jackober’s Own Hosting Move
Jackober.com itself moved hosts in 2024, from NyanHosting to Webnesia. The reasons were the same ones most site owners have. The old SSD plan started to hit resource limits as traffic grew, and the new plan offered NVMe storage, more RAM, and servers in Singapore, closer to many of our readers in Asia. Planning the backup, testing, and DNS steps in advance kept the move uneventful. If you are still choosing a new plan, our comparison of shared hosting, VPS, and dedicated servers explains the trade-offs.
Common Mistakes
- Cancelling the old host too early, before DNS, email, and backups have fully moved.
- Replacing URLs with a plain SQL query, which corrupts serialized settings in widgets and page builders.
- Forgetting email, so messages bounce after the MX records change.
- Skipping a test on the new server before switching DNS.
- Migrating a store without a content freeze, which can lose orders placed during the copy.
FAQ
How long does a WordPress migration take?
The copy itself can take minutes for a small site or several hours for a large one. Allow extra time for testing and for DNS changes to reach all visitors, which is why lowering the TTL in advance matters.
Can I migrate without downtime?
Usually yes. Copy the site, test it on the new server, and then switch DNS. Visitors keep reaching the old server until their DNS cache updates, so both copies should work during the switch.
Will moving hosts hurt my SEO?
Not if the URLs, content, and HTTPS stay the same and the new server is at least as fast and reliable. Watch Search Console for crawl errors after the move.
Is a migration plugin safe?
Well-known plugins are widely used, but they work within your host’s PHP limits and can fail on large sites. Always keep a separate backup, and remove the plugin and its export files from both servers when you finish.
What is the difference between migrating and cloning a site?
Migrating moves a live site to a new server. Cloning makes a copy for staging or development. Our guide to WordPress site cloning techniques covers that case.
The Bottom Line
A safe WordPress migration follows the same order every time: back up, copy, test on the new server, lower the TTL, switch DNS, then check SSL, email, caching, and Search Console. Use your host’s migration service or a plugin for most sites, migrate manually with WP-CLI for large ones, and keep the old host running until everything has moved.
Sources & Further Reading
- WordPress.org: Requirements
- WordPress Advanced Administration Handbook: Upgrading / Migration
- WP-CLI: wp search-replace
- WP-CLI: wp db export
- Cloudflare: DNS best practices, migration planning
- WordPress.org: Duplicator
- WordPress.org: All-in-One WP Migration
Articles are editorially reviewed by Jackober and factual claims are checked against cited sources.









1 comment