How to Migrate WordPress Without Downtime (2026)

Published October 19, 2026

Every minute your site is down during a move, visitors bounce and sales evaporate. The good news: zero-downtime WordPress migration is a solved problem. It just requires doing things in the right order.

Before you start

You need three things: access to your old host’s control panel, a hosting account on the new host, and about an hour of uninterrupted time. Don’t start this at midnight before a product launch. Pick a low-traffic window — check your analytics for the quietest hours.

Step 1: Back up everything

Before touching anything, take a complete backup of the live site: files, database, the lot. Store it somewhere that isn’t either host — your local machine or cloud storage. If anything goes wrong at any step below, this backup is your rewind button.

See our full walkthrough: How to back up your website before moving hosts.

Step 2: Lower your DNS TTL — 24 to 48 hours before the move

TTL (time to live) tells the internet how long to cache your DNS records. Lower it to 300 seconds (5 minutes) at your DNS provider a full day or two before migrating. This is the single most important zero-downtime step: when you flip the switch later, visitors reach the new server within minutes instead of hours.

Skip this and some visitors will hit the old server for up to 24 hours after you switch — placing orders and leaving comments on a site you’re about to delete.

Step 3: Set up the new hosting account

Create the account, add your domain as an addon/parked domain (don’t point DNS yet), and install a fresh WordPress or leave the directory empty depending on your migration method. Note the new server’s IP address and any temporary URL the host provides.

Step 4: Migrate the site

Three routes, pick one:

Let the host do it. Most decent hosts — See Hostinger plans ">Hostinger included — offer free WordPress migration. You hand over your old host’s login, they copy everything. This is the lowest-effort path and it’s genuinely good.

Use a migration plugin. All-in-One WP Migration or Duplicator: install on the old site, export everything to a single file, install WordPress on the new host, install the same plugin, import. Watch out for upload size limits on the free tiers — large sites may need the paid extension or a manual approach.

Do it manually. Export the database via phpMyAdmin, download all files via FTP, upload to the new host, create a new database, import the SQL, update wp-config.php with the new database credentials. More steps, zero plugin risk, full control.

Plugin vs. manual vs. host-done: which route?

Each migration method suits a different situation:

Host-done (free migration)Plugin (All-in-One WP Migration, Duplicator)Manual (FTP + phpMyAdmin)
EffortNear zeroLow–mediumHigh
Speed1–3 days (queue-dependent)Under an hour1–2 hours
Large sites (2GB+)Best optionMay hit upload limitsWorks fine
ControlNone — trust the teamFullFull
RiskLowLowMedium (human error)
Best forAnyone who qualifiesDIYers, small–medium sitesDevelopers, complex setups

If your new host offers free migration, take it — then still follow Steps 2, 5, 6, and 7 yourself. The host moves the files; the DNS strategy and testing are yours.

Multisite note: WordPress multisite migrations are significantly more complex — domain mapping, per-site tables, and sunrise configuration. If you run multisite, use the host-done route or hire it out. Plugin and manual methods frequently break multisite in subtle ways.

Step 5: Test on the new host before going live

This is the step people skip, and it’s the one that saves you. Access the migrated site via the host’s temporary URL or by editing your local hosts file to point your domain at the new server IP (only your computer sees this — the world still hits the old server).

Check: homepage, a few posts/pages, contact forms, login to wp-admin, any e-commerce checkout flow. If you run WooCommerce, place a test order. Fix anything broken now, while nobody’s watching.

Step 6: Flip the DNS

Update your domain’s A record (and AAAA if you use IPv6) to the new server’s IP. Because you lowered the TTL in Step 2, propagation takes minutes, not hours. Don’t touch anything else — leave the old site running.

Step 7: Monitor, then cancel the old host

For the next 24–48 hours, keep both hosts running. Check the new site in an incognito window. Watch for:

Once everything’s clean for two full days, cancel the old hosting. Not before. The old host is your free insurance policy — a few extra days of overlap costs almost nothing.

What to do when something goes wrong

Even with preparation, things break. Here’s the triage order:

  1. Site shows a database connection error: the wp-config.php credentials don’t match the new database. Re-check the database name, username, password, and host (often localhost, but some hosts differ).
  2. White screen: a plugin or theme is incompatible with the new server’s PHP version. Rename the plugins folder via FTP to disable all plugins, then reactivate one by one.
  3. Images broken: run a database search-replace for the old URL → new URL (the Velvet Blues Update URLs plugin or WP-CLI’s search-replace). This is almost always hardcoded URLs.
  4. Site works but looks wrong: clear all caches — plugin cache, server cache, and your browser cache — then check again.

If the new host is fundamentally broken and you can’t fix it within an hour, roll back: point DNS back to the old host (which you kept running, per Step 7) and regroup. The old site is untouched. That’s why you never cancel it early.

Common mistakes

Post-migration checklist

Run through this 48 hours after the DNS flip, before cancelling the old host:

Done right, your visitors never notice the move happened. That’s the whole point.

Moving to a new host?

Hostinger's free migration service handles the whole WordPress move for you — then follow the steps above for the DNS cutover.

See Hostinger plans
Disclosure: Registrar Watch earns a commission when you sign up through some links on this page — it keeps the guides free and independent. We recommend registrars we'd trust with our own domains.