Tutorial 2025-02-10 By TechReviewer

How to Migrate Your WordPress Site to New Hosting (Without Losing Sleep)

Moving your WordPress site doesn't have to be scary. Follow this battle-tested guide to migrate your site smoothly—even if you've never touched FTP in your life.

Picture this: You're lying awake at 2 AM, staring at the ceiling, wondering if clicking that "Migrate Now" button will send your entire website into the digital void. Your palms are sweaty. What if something breaks? What if you lose years of content? What if your site goes down and never comes back up?

I've been there. Three years ago, I migrated my first WordPress site—a client's e-commerce store with thousands of products. I was terrified. But here's what I learned: WordPress migration doesn't have to be scary. With the right approach and tools, you can move your site without breaking a sweat.

Whether you're switching hosts for better performance, cheaper pricing, or just escaping terrible support, this guide walks you through every step. No confusing jargon. No assumptions that you're a tech wizard. Just a straightforward process that works.

Why You Might Need to Migrate Your WordPress Site

Before we jump into the how-to, here's why people migrate WordPress sites:

  • Slow site performance — Your current host can't handle your traffic anymore
  • Better pricing — Found a hosting deal that's too good to pass up
  • Poor support — Tired of waiting 48 hours for basic help tickets
  • Need more resources — Your site outgrew shared hosting
  • Security concerns — Your host got breached or doesn't offer SSL
  • Server location — Moving closer to your target audience for speed

Whatever your reason, the migration process is the same. And yes, you can do it yourself—even if you've never opened FileZilla or touched phpMyAdmin before.

⏱️ Time Commitment

For most sites: 30-60 minutes
For large sites (10GB+): 2-3 hours
DNS propagation wait: Up to 48 hours (usually 2-6 hours)

What You'll Need Before Starting

Gather these things before you begin. Trust me, you don't want to be hunting for FTP credentials halfway through the process:

  1. Access to your current hosting account (cPanel or hosting dashboard)
  2. Access to your new hosting account (already signed up and activated)
  3. Your domain registrar login (GoDaddy, Namecheap, etc.)
  4. An FTP client (FileZilla is free and works great)
  5. About an hour of uninterrupted time (don't start this during your lunch break)

According to WPBeginner's comprehensive WordPress migration guide, proper preparation prevents 90% of migration headaches. They're not wrong.

Method 1: The Easy Way (Using Duplicator Plugin)

This is the method I recommend for 95% of people. It's reliable, well-tested, and doesn't require you to understand databases or server configurations.

Step 1: Install Duplicator on Your Current Site

Log into your WordPress dashboard and navigate to Plugins → Add New. Search for "Duplicator" and install the free version. Activate it once installed.

Duplicator is hands-down the most popular WordPress migration plugin, with over 1 million active installations. It packages your entire site—files, database, plugins, themes, uploads—into a single transferable package.

Step 2: Create a Backup Package

Go to Duplicator → Packages and click "Create New." Give your package a name (something like "migration-feb-2025" so you remember what it is).

Click through the setup wizard:

  • Archive — Choose which files to include (usually you want everything)
  • Installer — This creates the installer script that'll rebuild your site
  • Build — Click "Build" and wait while Duplicator packages everything

This can take 5-30 minutes depending on your site size. Go grab coffee.

⚠️ Pro Tip: If your site is huge (10GB+), consider breaking it up or excluding logs/cache folders. Duplicator will warn you if there are potential issues.

Step 3: Download Your Package

Once the build finishes, you'll see two files available for download:

  • installer.php — The magic script that rebuilds your site
  • your-archive-name.zip — Your entire site in a zip file

Download both to your computer. Keep them somewhere safe.

Step 4: Upload Files to Your New Server

Now we're moving to your new hosting account. Open your FTP client (FileZilla, Cyberduck, or whatever you prefer) and connect to your new server.

If you've never used FTP before, don't panic. Your new hosting provider sent you FTP credentials in a welcome email. Look for:

  • Hostname: Usually ftp.yourdomain.com or your server IP
  • Username: Often your cPanel username
  • Password: Your cPanel password
  • Port: 21 (standard) or 22 (SFTP)

Once connected, navigate to your site's root folder (usually public_html or www). Upload both files—the installer.php and the .zip archive. This can take a while for large files. Be patient.

Step 5: Create a Database on Your New Server

Log into your new hosting cPanel and find MySQL Databases (it's usually under the "Databases" section).

Create a new database:

  1. Enter a database name (e.g., wp_newsite)
  2. Click "Create Database"
  3. Create a new database user with a strong password
  4. Add the user to the database with "All Privileges"

Write down these details somewhere:

  • Database name
  • Database username
  • Database password
  • Database host (usually localhost)

You'll need these in the next step.

Step 6: Run the Duplicator Installer

Open your browser and go to: http://yourdomain.com/installer.php

If your domain hasn't transferred yet, use your server's temporary URL (check your hosting welcome email for this).

The Duplicator installer will launch. Here's what happens:

  1. Archive extraction — Duplicator checks that it can unzip your site files
  2. Database setup — Enter the database credentials you created in Step 5
  3. Validation — Duplicator tests the database connection
  4. Installation — Click "Run Deployment" and watch the magic happen

The installer extracts all your files, imports your database, and updates all the URLs automatically. According to Elementor's migration tutorial, this automated URL replacement is what makes Duplicator so powerful—it prevents broken links and missing images.

Step 7: Test Your Migrated Site

Before you change your DNS settings, test everything thoroughly:

  • ✅ Can you log into WordPress admin?
  • ✅ Do all pages load correctly?
  • ✅ Are images showing up?
  • ✅ Do forms work?
  • ✅ Are plugins functioning?
  • ✅ Does search work?
  • ✅ Can users register/login (if applicable)?

Click around. Break things. Try to find issues now while you can still fix them.

Step 8: Update Your DNS Settings

Once you're confident everything works, it's time to point your domain to the new server.

Log into your domain registrar (where you bought your domain—GoDaddy, Namecheap, etc.) and find the DNS management section.

You need to update the A record to point to your new server's IP address. Your new hosting provider gave you this IP in your welcome email.

Change the A record from your old server IP to your new server IP. Save the changes.

⏳ DNS Propagation Time

DNS changes can take anywhere from 15 minutes to 48 hours to propagate worldwide. Most changes complete within 2-6 hours. During this time, some visitors might see your old site while others see your new one. That's normal.

Step 9: Clean Up

After 48-72 hours (when DNS has fully propagated), do these cleanup tasks:

  1. Delete the installer files — Remove installer.php and any installer backup files from your server root for security
  2. Clear all caches — Purge your caching plugin, server cache, and CDN cache (if you use Cloudflare or similar)
  3. Test again — Do another round of thorough testing
  4. Update SSL — Make sure your SSL certificate is working on the new server
  5. Keep the old site — Don't cancel your old hosting immediately. Wait 1-2 weeks to make sure everything's stable

Method 2: The Manual Way (For the Brave)

If you're comfortable with technical stuff or your site is too large for plugin-based migration, you can do it manually. Fair warning: this is more error-prone and requires FTP and database knowledge.

Manual Migration Quick Steps:

  1. Export your database via phpMyAdmin on your old host
  2. Download all WordPress files via FTP from your old host
  3. Upload WordPress files to your new server via FTP
  4. Create a new database on your new server
  5. Import your database via phpMyAdmin on your new host
  6. Edit wp-config.php with new database credentials
  7. Search and replace URLs in the database using Better Search Replace plugin
  8. Update DNS to point to the new server

For detailed manual migration instructions, check out TeamUpdraft's manual migration guide. They walk through every SQL command and file path you need.

Common Migration Mistakes (And How to Avoid Them)

After migrating dozens of sites, I've seen these mistakes over and over:

1. Not Making a Backup First

I can't stress this enough: ALWAYS create a complete backup before migrating. According to WP Experts' analysis of common migration failures, skipping backups is the #1 mistake that leads to permanent data loss.

Use a plugin like Backup Migration or UpdraftPlus to create a safety net. If something goes wrong, you can restore your site to exactly where it was.

2. Not Testing Before Changing DNS

Never, ever change your DNS settings before testing your migrated site. Use your server's temporary URL or edit your computer's hosts file to preview the new site first. Find and fix issues before the world sees them.

3. Forgetting to Update Database Credentials

Your new server will have different database credentials than your old one. If you manually migrate, you MUST update wp-config.php with the new database name, username, password, and host. Miss this step and your site won't connect to the database.

4. Ignoring PHP and MySQL Version Differences

Your new server might run different PHP or MySQL versions than your old one. Check compatibility before migrating. WordPress requires at least PHP 7.4 (8.0+ recommended) and MySQL 5.7+ or MariaDB 10.3+.

If your new server runs newer PHP, old plugins might break. Test everything.

5. Not Clearing Caches Afterward

After migration, clear EVERYTHING:

  • WordPress caching plugins (WP Rocket, W3 Total Cache, etc.)
  • Server-side caching (Varnish, Redis, Memcached)
  • CDN caching (Cloudflare, StackPath, etc.)
  • Browser cache (hard refresh with Ctrl+F5)

Old cached files can make you think things are broken when they're actually fine.

6. Canceling Old Hosting Too Soon

Keep your old hosting active for at least 2-4 weeks after migration. This gives you time to catch any issues and ensures you have a fallback if something catastrophic happens. Once you're 100% confident everything works, then cancel the old account.

What to Do If Something Goes Wrong

Okay, so you clicked the button and now your site's showing a white screen of death. Don't panic. Here's what to do:

Problem: White Screen (No Error Message)

Solution: Enable WordPress debug mode by editing wp-config.php:

define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);

This writes errors to wp-content/debug.log so you can see what's actually breaking.

Problem: Database Connection Error

Solution: Double-check your wp-config.php database credentials. Make sure:

  • Database name matches what you created
  • Username matches exactly (case-sensitive)
  • Password is correct (no extra spaces)
  • Database host is correct (usually localhost)

Problem: Missing Images or Broken Links

Solution: Install the Better Search Replace plugin and run a search-and-replace to update old URLs to new ones. Search for your old domain (e.g., http://oldsite.com) and replace with your new domain (e.g., https://newsite.com).

Problem: Site Loads but Admin Panel Won't

Solution: Check your .htaccess file. Sometimes WordPress rules get corrupted during migration. Delete the file and regenerate it by going to Settings → Permalinks and clicking "Save Changes."

Post-Migration Checklist

After everything's working, run through this checklist to make sure you didn't miss anything:

  • ☐ All pages load correctly
  • ☐ Images and media display properly
  • ☐ Forms submit successfully (test contact forms, search, etc.)
  • ☐ User registration/login works (if applicable)
  • ☐ Plugins are all functioning
  • ☐ SSL certificate is active and forcing HTTPS
  • ☐ Cron jobs are running (check scheduled posts)
  • ☐ Email sending works (password resets, notifications)
  • ☐ Analytics tracking code is present
  • ☐ Sitemap submitted to Google Search Console
  • ☐ CDN reconfigured (if using Cloudflare/etc.)
  • ☐ Monitoring tools updated with new server info

Which Migration Method Should You Use?

Here's my honest recommendation based on different scenarios:

Use Duplicator Plugin If:

  • You're migrating for the first time
  • Your site is under 10GB
  • You want a simple, automated process
  • You're not comfortable with databases and FTP

Use Manual Migration If:

  • Your site is massive (50GB+)
  • You have custom server configurations
  • You're comfortable with phpMyAdmin and command line
  • Plugin-based migration keeps failing

Use Host Migration Service If:

  • Your new host offers free migration
  • You have zero time to do it yourself
  • Your site is mission-critical (e-commerce with daily orders)
  • You want zero downtime guaranteed

Final Thoughts

Migrating a WordPress site sounds scarier than it actually is. I've walked you through the exact process I use for client migrations—the same one that's moved hundreds of sites without major issues.

The key is preparation. Back everything up. Test before going live. Don't rush. And keep your old hosting active until you're absolutely certain everything works.

You've got this. Take your time, follow the steps, and in an hour or two, your site will be humming along on its new home.

And hey, if you run into trouble, that's what support teams are for. Most good hosting companies will help troubleshoot migration issues—especially if you're migrating TO them.

Now go forth and migrate with confidence. Your WordPress site is about to get a serious upgrade.

Ready to Move Your Site?

Check out our premium WordPress themes optimized for any hosting environment. Fast, secure, and migration-friendly.

Browse Themes

Related Guides

Sources & Further Reading