How to Migrate Your Website to a New Host (Finally)

Quick Verdict

Moving your site to a new host is roughly as fun as a root canal, but sometimes you gotta do it. I did it last year for my photography portfolio and accidentally left the old server running for a week — double billing me. You’ll probably make at least one mistake, but it’s survivable. Manual migration *** (3/5) — good if you’re a control freak. Plugin-based **** (4/5) — easiest for WordPress nerds. cPanel-to-cPanel transfer ***** (5/5) — the cheat code if both hosts support it.


Okay, so why the hell would anyone do this? Maybe your current host went from "fast and cheap" to "slow and shady." Or you outgrew the shared plan and now your site loads like it’s 1999. Or you just hate the dashboard. Whatever. The pain of moving is temporary, but a better host fixes months of frustration.

Here’s the thing nobody tells you: migrating isn’t the hard part. The hard part is the DNS propagation window where your site might show the old version to some visitors and the new one to others. You’ll get panicked emails from your mom saying "your site’s broken." It’s fine. She’ll survive.

Anyway. Let’s walk through this like you’re on a video call with me and I’m being blunt.

Step 1: Pick Your New Host (Don’t Rush This)

I don’t care if they have a 60% off first-term coupon — read the fine print. Last year I almost signed up with a host that charged $15/month for "renewal" after the first year. Yeah, no.

What you actually want: decent support (24/7 chat, not a ticket system that takes 3 days), good uptime (99.9% or better, or they’ll blame your traffic), and preferably a free migration service. SiteGround, Kinsta, and Cloudways all offer free migrations if you’re moving from another host. Use that. It’s worth not having to do this yourself.

But if you’re stubborn like me and want to do it manually — fine.

Step 2: Backup Everything (Twice. No, Three Times.)

You know what’s worse than a broken site? A broken site with no backup. I once lost a client’s entire contact form database because I thought the backup plugin was working. Spoiler: it wasn’t.

Download your files via FTP. Export your database from phpMyAdmin. If you’re on WordPress, install UpdraftPlus and push a backup to Google Drive. Then copy that backup to your desktop. Yes, multiple copies. You’ll thank me when Step 4 goes sideways.

The shortcut: use a plugin like All-in-One WP Migration. It packages your entire site into a single file. But don’t trust it blindly — I’ve had it fail on large sites (over 2GB) because of server timeouts. So the old-school manual backup is still the "I don’t want to cry" method.

Step 3: Set Up the New Host Environment

Before you move anything, get the new host ready. Create your database, note the database name, user, password, and host (usually localhost). Install WordPress or whatever CMS you use. Don’t worry about content yet — just get the skeleton ready.

Here’s the thing: some hosts give you a temporary URL (like a subdomain) to preview your site before you switch DNS. Use it. It’s a lifesaver. I didn’t use it once and ended up pushing a broken site live. Took me three hours to figure out I’d missed a PHP extension.

Step 4: Transfer Your Files (And Don’t Screw It Up)

Upload your files — the entire public_html folder — to the new host. Via FTP or cPanel’s File Manager. This takes time. Be patient. Start it, go make coffee, curse at the progress bar.

Common screw-up: permissions. Some hosts require different file permissions (644 for files, 755 for folders). If your site shows a white screen, it’s probably permissions. Check the error log.

Another common screw-up: forgetting to upload .htaccess. That file controls redirects, caching, and sometimes security. If your links start returning 404 errors, you forgot .htaccess.

Step 5: Import Your Database

This is where most people panic. Export from old host (phpMyAdmin -> Export -> Quick -> SQL). Import to new host (phpMyAdmin -> Import -> Choose file -> Go). If your database is huge (say over 100MB), the import might fail. Then you need to split the SQL file or use command line. Or just use a plugin that handles this for you.

After importing, update your wp-config.php with the new database info. AND — here’s the part everyone forgets — update the site URL in the database if your temporary URL is different from your final domain. Use a table prefix search and replace plugin to change all instances of the old domain to the new domain. Or if you’re brave, run SQL queries.

The shortcut: Use WP-CLI if you have SSH access. wp search-replace 'oldurl.com' 'newurl.com' --all-tables. Done in seconds.

Step 6: Test on Temporary URL

Before touching DNS, visit your site on the temporary URL the host gave you. Does it look right? Links work? Images load? If not, fix now. The DNS change will take 1 to 48 hours to propagate, and you want everything ready beforehand.

Common gotcha: mixed content warnings (HTTPS vs HTTP). If your old host had SSL and the new one doesn’t have it configured yet, some assets may load over HTTP and break. Install SSL on the new host first. Most hosts offer free Let’s Encrypt.

Step 7: Update DNS

This is the scary part. Log into your domain registrar (where you bought the domain, not your old host) and change the nameservers to point to your new host. Or just update the A record to the new IP. Your host will give you the exact instructions.

Then wait. Refresh your browser obsessively. Use a site like whatsmydns.net to check propagation. It’ll feel like forever. Go watch a movie.

The questionable hack: Edit your local hosts file (C:WindowsSystem32driversetchosts on Windows, /etc/hosts on Mac) to point your domain to the new IP. That way you see the new site while everyone else still sees the old one. Good for final testing. Bad if you forget to remove it later (ask me how I know).

Step 8: Keep Old Host Running for a Week

Don’t cancel the old account yet. Things break. Someone’s email is still routing wrong. A few visitors with cached DNS might still hit the old server. Keep both up for at least a week. Then check your logs. Then cancel.


Pros & Cons

Manual Migration (via FTP + phpMyAdmin)

  • Full control over every file, no bloat plugins
  • Works for any CMS, even custom sites
  • Easy to miss a file or a database config
  • Time-consuming and error-prone

Plugin-Based Migration (e.g., Duplicator, All-in-One WP Migration)

  • Handles most of the work automatically
  • Packages everything including plugins and themes
  • Some plugins have size limits (2GB) unless you pay
  • Can break if server settings differ (e.g., PHP version)

cPanel-to-cPanel Transfer

  • One-click, automates everything including email accounts
  • No need to manually export/import databases
  • Both old and new host must have cPanel (rare these days)
  • Some hosts disable the feature on shared plans

Host-Provided Free Migration Service

  • Someone else does the grunt work
  • They’ve done it hundreds of times, so they know the gotchas
  • You have to trust a stranger with your site
  • Might take a few days depending on queue

Pricing at a Glance

| Migration Method | Starting

AI generated illustration
AI generated illustration

🖼️ Looking to upscale your images?

Try our free AI image upscaler — upload any image and get a 4K high-resolution version instantly. No signup required.

Upscale Your Images Free →

Free 2K preview · 4K download just $2.99 · One-time payment

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top