Before You Start: Pre-Migration Checklist
Migrations fail for one reason: people skip the preparation. The actual file transfer takes minutes. Recovering from a botched migration without a proper backup takes days. Run through this checklist before you touch anything.
This guide is based on hands-on testing of 17+ hosting providers over 90-day cycles. I maintain active paid accounts on every host featured here, deploy real WordPress sites with production plugins, and monitor performance around the clock. Recommendations reflect actual test results, not marketing claims or affiliate incentives.
- Take a full backup — files, database, and emails. Not just one of these. All three. Store the backup somewhere other than either host (your local computer or cloud storage).
- Document your current DNS records — Screenshot your DNS zone file or export it. You need to know your current A record, MX records, CNAME records, and TXT records (SPF/DKIM). If something breaks, this lets you revert.
- Note all email accounts and forwarders — Log into cPanel or your email admin and write down every email address, alias, and forwarder. These won't transfer automatically.
- List installed software versions — Check your PHP version (
php -vor cPanel > PHP Selector), MySQL version, WordPress version, and any custom modules. Your new host needs to support the same versions. - Verify new host compatibility — Does the new host support your PHP version? Your MySQL version? Does it have enough storage and bandwidth? Does it support the specific features you use (cron jobs, SSH access, specific PHP extensions)?
- Keep old host active for at least 1 week — Do not cancel your old hosting before migration is fully confirmed. DNS propagation can take 24-48 hours, and you need a fallback if anything goes wrong.
Once you've checked every item on this list, you're ready to start. The entire migration process takes 2-4 hours of active work for a typical site. Large sites with extensive databases or email archives may take longer.
Step 1: Sign Up with Your New Host
If you haven't chosen a new host yet, prioritize one that offers free migration. A professional migration service eliminates the most error-prone parts of the process — file transfers, database imports, and configuration adjustments — and it costs you nothing.
Hosts with Free Professional Migration
| Host | Price | Renewal | Migration Offer |
|---|---|---|---|
| SiteGround | $4.99/mo | $27.99/mo | Free migration via WordPress Migrator plugin + manual migration for non-WP sites |
| ChemiCloud | $2.49/mo | $11.95/mo | Free migration for up to 3 websites, handled by their team |
| FastComet | $1.79/mo | $8.95/mo | Free migration + free domain transfer, white-glove service |
| Hostinger | $3.99/mo | $12.99/mo | Automated WordPress migration tool (Business plan and above) |
When signing up, choose a server location closest to your primary audience. If most of your visitors are in the US, pick a US data center. If they're in Europe, pick a European one. Server location affects page load time by 50-200ms, which matters for both user experience and SEO.
After signing up, note down your new hosting account's:
- Server IP address (found in cPanel > Server Information or your welcome email)
- FTP/SFTP credentials (usually in cPanel > FTP Accounts)
- cPanel login URL and credentials
- Nameservers (e.g.,
ns1.newhost.comandns2.newhost.com)
You'll need all of these in the following steps.
Step 2: Backup Everything
This is the most important step. A complete backup means you can always restore your site to its current working state, no matter what goes wrong during migration. Back up using multiple methods — redundancy is your safety net.
Method A: cPanel Full Backup (Recommended First Step)
If your current host uses cPanel, this is the fastest way to get everything at once:
- Log into cPanel on your current host
- Go to Files > Backup (or Backup Wizard)
- Click "Download a Full Account Backup"
- Choose "Home Directory" as the backup destination
- Wait for the backup to generate (this can take 5-30 minutes depending on site size)
- Download the
.tar.gzfile to your local computer
This backup includes files, databases, email accounts, email forwarders, and cron jobs — everything in one archive.
Method B: WordPress Plugin Backup
If you're running WordPress, use a dedicated backup plugin for the cleanest restoration:
UpdraftPlus (Free):
- Install UpdraftPlus from the WordPress plugin directory
- Go to Settings > UpdraftPlus Backups
- Click "Backup Now" — check both "Include your database" and "Include your files"
- Download all five backup components: Database, Plugins, Themes, Uploads, Others
All-in-One WP Migration (Free up to 512MB):
- Install All-in-One WP Migration
- Go to All-in-One WP Migration > Export
- Select "Export to File"
- Download the
.wpressfile
Method C: Manual Database Backup via phpMyAdmin
For custom PHP sites or as an additional safety measure:
- Open phpMyAdmin from cPanel
- Select your website's database from the left sidebar
- Click the "Export" tab
- Choose "Quick" export method and "SQL" format
- Click "Go" — this downloads a
.sqlfile
For large databases, use "Custom" export and check "Add DROP TABLE" under Object creation options. This ensures a clean import without duplicate table errors.
Method D: FTP/SFTP File Download
Download your entire website's file structure:
- Open an FTP client (FileZilla is free and reliable)
- Connect to your current host using SFTP (port 22, not plain FTP on port 21)
- Navigate to
/public_html/(or your document root) - Select all files and folders, then download to a local directory
# Estimated download times by site size:
# 500MB = ~8 minutes (on 10 Mbps connection)
# 1GB = ~15 minutes
# 5GB = ~70 minutes
# 10GB+ = Consider SSH + rsync instead
Method E: Email Backup via IMAP
This is the step most migration guides skip entirely. If you use email through your hosting (e.g., you@yourdomain.com via cPanel), your emails are stored on the server and will be lost if you don't back them up.
- Install Mozilla Thunderbird (free email client)
- Add your email account using IMAP settings from your current host
- Wait for Thunderbird to sync all folders and messages
- Right-click your account > Settings > ensure "Keep messages for this account on this computer" is checked
- All your emails are now stored locally as a backup
Step 3: Create a Database on the New Host
If your site uses a database (WordPress, Joomla, Drupal, custom PHP with MySQL), you need to create an empty database on the new host before you can import your data.
Creating a MySQL Database in cPanel
- Log into cPanel on your new host
- Go to Databases > MySQL Databases
- Under "Create New Database," enter a name (e.g.,
mysite_wp) and click "Create Database" - Under "MySQL Users," create a new user with a strong password
- Under "Add User To Database," select the user and database, then click "Add"
- On the privileges page, check "ALL PRIVILEGES" and click "Make Changes"
- Database name:
username_mysite_wp(cPanel prefixes your account username) - Database user:
username_wpuser - Database password: (the password you just created)
- Database host:
localhost(almost always localhost on shared hosting)
For static HTML sites with no database, skip this step and Step 5 entirely.
Step 4: Upload Files to the New Host
Now transfer your website files from your backup to the new hosting account. Choose the method that matches your comfort level and site size.
Option A: FTP/SFTP Upload (Any Site Size)
- Open FileZilla (or your preferred FTP client)
- Connect to your new host using the SFTP credentials from your welcome email
- Navigate to the
/public_html/directory on the remote server - On the local side, navigate to your backup folder
- Select all files and drag them to the remote panel
- Wait for the transfer to complete
# Estimated upload times (on 10 Mbps upload):
# 500MB site = ~8 minutes
# 1GB site = ~15 minutes
# 5GB site = ~70 minutes
# 10GB+ site = Use SSH + rsync (see Option C)
Option B: cPanel File Manager (Small Sites < 500MB)
If your backup is a single .tar.gz or .zip archive under 500MB:
- Log into cPanel on the new host
- Go to Files > File Manager
- Navigate to
/public_html/ - Click "Upload" and select your archive file
- After upload, right-click the archive and select "Extract"
- Verify the files are in the correct directory structure
Option C: SSH + rsync (Large Sites, Fastest)
If both hosts provide SSH access, you can transfer directly between servers:
# SSH into your NEW host, then pull files from the old host:
rsync -avz --progress user@old-host-ip:/home/user/public_html/ /home/user/public_html/
# Or if you only have SSH on the old host, push to the new:
rsync -avz --progress /home/user/public_html/ user@new-host-ip:/home/user/public_html/
Rsync is significantly faster than FTP for large transfers because it compresses data during transfer and only copies changed files (useful if you need to re-run the transfer).
Option D: cPanel Full Backup Restore
If both your old and new hosts use cPanel, and you have a full cPanel backup file (.tar.gz), your new host's support team can often restore it directly. Contact their support and provide the backup file. This is the most hands-off approach — they'll restore files, databases, email accounts, and cron jobs in one shot.
755 and files set to 644. The wp-config.php file should be 600 or 640 for security. Incorrect permissions are one of the top causes of "500 Internal Server Error" after migration.
Step 5: Import Your Database
With your empty database created (Step 3) and your .sql backup file ready (Step 2), it's time to import your data.
Method A: phpMyAdmin Import (Databases Under 50MB)
- Open phpMyAdmin on your new host (cPanel > Databases > phpMyAdmin)
- Select the empty database you created in Step 3 from the left sidebar
- Click the "Import" tab
- Click "Choose File" and select your
.sqlbackup file - Leave format as "SQL" and encoding as "utf-8"
- Click "Go" and wait for the import to complete
You should see a success message listing all the tables that were created.
Method B: Command Line Import (Large Databases > 50MB)
phpMyAdmin has upload limits (usually 50-256MB depending on the host's PHP configuration). For large databases, use SSH:
# SSH into your new host, then:
mysql -u username_wpuser -p username_mysite_wp < backup.sql
# You'll be prompted for the database password
# For very large databases, add --force to continue past errors:
mysql -u username_wpuser -p --force username_mysite_wp < backup.sql
Method C: BigDump Script (Large DB, No SSH)
If your new host doesn't offer SSH and the database exceeds phpMyAdmin's limit, use BigDump — a free PHP script that imports large SQL files in chunks:
- Download BigDump from
bigdump.php(free PHP script) - Edit the script with your database credentials
- Upload both
bigdump.phpand your.sqlfile to your new host - Open
yourdomain.com/bigdump.phpin a browser - Follow the on-screen instructions to import in chunks
- Delete bigdump.php immediately after import — it's a security risk if left on the server
wp_posts, wp_options, wp_users, etc. If any tables are missing, re-import.
Step 6: WordPress-Specific Adjustments
If you're migrating a WordPress site, the files and database aren't enough — you need to update the configuration to match your new hosting environment. Skip this step if you're migrating a static site or used a WordPress migration plugin that handles this automatically.
Update wp-config.php
Open wp-config.php in the root of your WordPress installation on the new host. Update these four lines with the credentials from Step 3:
// Replace these with your NEW host's database credentials:
define('DB_NAME', 'username_mysite_wp'); // Your new database name
define('DB_USER', 'username_wpuser'); // Your new database user
define('DB_PASSWORD', 'your_new_password'); // Your new database password
define('DB_HOST', 'localhost'); // Usually 'localhost' on shared hosting
Search-Replace URLs (If Domain Is Changing)
If you're changing your domain name during migration (e.g., from olddomain.com to newdomain.com), you need to update every URL in the database. WordPress stores absolute URLs in many places — post content, option values, widget settings, and serialized data.
Using WP-CLI (recommended):
# SSH into your new host, navigate to your WordPress directory:
cd /home/user/public_html
# Dry run first (shows what would change, changes nothing):
wp search-replace 'https://olddomain.com' 'https://newdomain.com' --dry-run
# If the dry run looks correct, run for real:
wp search-replace 'https://olddomain.com' 'https://newdomain.com'
# Also replace the non-SSL version:
wp search-replace 'http://olddomain.com' 'https://newdomain.com'
WP-CLI handles serialized data correctly, which is critical. Manual find-and-replace in phpMyAdmin will break serialized data (used by most plugins and theme settings).
Without SSH access: Install the "Better Search Replace" plugin on your WordPress site, run the replacements from the admin panel, then uninstall the plugin.
Update .htaccess If Needed
Some hosts require specific .htaccess rules. If your old host had custom rewrite rules, PHP version directives, or security headers, verify they work on the new host. A standard WordPress .htaccess looks like this:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
If your site uses a custom PHP version, add this at the top of .htaccess:
# Force PHP 8.2 (adjust version as needed):
AddHandler application/x-httpd-php82 .php
The exact syntax varies by host. Check your new host's documentation for PHP version switching.
Step 7: Test Before Changing DNS (Critical Step)
This is the step that separates a smooth migration from a disaster. By editing your local hosts file, you can view your website on the new server while everyone else still sees the old server. This lets you find and fix every problem before it affects a single visitor.
Edit Your Local Hosts File
Your computer's hosts file overrides DNS lookups. By adding an entry that maps your domain to the new server's IP, your browser will connect to the new host while the rest of the world still sees the old one.
On Windows:
- Open Notepad as Administrator (right-click > "Run as administrator")
- Open the file:
C:\Windows\System32\drivers\etc\hosts - Add this line at the bottom (replace with your actual values):
# Temporary migration test — REMOVE THIS AFTER MIGRATION
123.456.789.0 yourdomain.com
123.456.789.0 www.yourdomain.com
On Mac/Linux:
# Open the hosts file with sudo:
sudo nano /etc/hosts
# Add these lines at the bottom:
123.456.789.0 yourdomain.com
123.456.789.0 www.yourdomain.com
# Save: Ctrl+O, Enter, Ctrl+X
# Flush DNS cache:
# Mac: sudo dscacheutil -flushcache
# Linux: sudo systemd-resolve --flush-caches
What to Test
Open your website in a browser. It's now loading from the new server. Run through this checklist:
- Homepage — Does it load without errors? Do images display correctly?
- Internal pages — Click through at least 10 pages. Check for broken links and missing images.
- Forms — Submit a test contact form. Does it process? Do you receive the email?
- WordPress admin — Can you log in at
/wp-admin? Can you create and preview a draft post? - E-commerce — If you have a shop, add a product to cart, go through checkout (use test/sandbox mode).
- SSL — Does the site load with
https://? Check for mixed content warnings (padlock icon should be solid, not showing a warning). - Email — Send a test email from the site (contact form, WooCommerce test order, etc.).
- Speed — Does the site feel reasonably fast? Significant slowdown may indicate a misconfigured server or missing caching.
If everything passes your test, proceed to email migration and DNS changes. If something is broken, fix it now — you have all the time in the world since the live site is unaffected.
Step 8: Migrate Email
Email migration is where most guides fall short. If you host email with your web host (cPanel email, webmail, etc.), your email data lives on the server and needs to be moved separately from your website files.
First: Do You Actually Need to Migrate Email?
Check which of these applies to you:
- You use Google Workspace, Microsoft 365, or Zoho Mail — Your email is hosted by a third party, not your web host. No email migration needed. Just make sure your MX records continue to point to your email provider after the DNS change.
- You use cPanel/host-provided email — Your email is stored on the hosting server. You need to migrate it. Keep reading.
- You don't use email on this domain — Nothing to do here.
Option A: IMAP Sync via Email Client (Most Reliable)
This method uses an email client as a bridge between the old and new mail servers:
- Create the same email accounts on the new host — In cPanel > Email Accounts, create each email address with the same name (e.g.,
info@yourdomain.com) - Open Mozilla Thunderbird (or any IMAP-capable email client)
- Add the OLD email account using IMAP settings:
- Incoming:
mail.yourdomain.comor the old server's hostname, port 993 (IMAP SSL) - Outgoing:
mail.yourdomain.com, port 465 (SMTP SSL)
- Incoming:
- Add the NEW email account as a separate account in Thunderbird:
- Use the new server's IP address or hostname (not the domain, since DNS still points to the old host)
- Same ports: 993 for IMAP, 465 for SMTP
- Wait for the old account to fully sync — all folders and messages should appear
- Select all messages in each folder and drag them from the old account to the corresponding folder in the new account
- Repeat for every email account
Option B: cPanel Email Backup and Restore
If your new host's support team can restore a cPanel backup, your email accounts and messages will be included automatically. This is the easiest path but requires both hosts to use cPanel.
Option C: Skip Migration, Start Fresh
If your email history isn't critical, simply create new email accounts on the new host and start fresh. Any important emails from the old account can be forwarded to a Gmail/Outlook account as an archive before you switch.
Step 9: Update DNS
Once you've tested your site on the new host (Step 7) and migrated email (Step 8), it's time to point your domain to the new server. You have two approaches.
Option A: Change Nameservers (Simplest)
This is the easiest method. You change the nameservers at your domain registrar, and the new host controls all DNS records.
- Log into your domain registrar (Namecheap, GoDaddy, Cloudflare, etc.)
- Find DNS/Nameserver settings for your domain
- Replace the current nameservers with your new host's nameservers (from your welcome email), e.g.:
ns1.siteground.net ns2.siteground.net - Save changes
Pros: Simple, one change handles everything. The new host manages all DNS records automatically.
Cons: You lose control of individual DNS records until propagation completes. If you have custom DNS records (SPF, DKIM, DMARC, CNAME for third-party services), you'll need to recreate them on the new host.
Option B: Update Individual Records (More Control)
If you want to keep your DNS at your current registrar (or use Cloudflare for DNS management), update records individually:
- A Record: Change the IP address for
@andwwwto your new host's IP - MX Records: Update only if you're also migrating email to the new host. If you use Google Workspace or Microsoft 365, leave MX records unchanged.
- CNAME Records: Update any that pointed to old-host-specific hostnames
- TXT Records: Update SPF record if it references the old host's servers
DNS Propagation: What to Expect
| Timeframe | What Happens |
|---|---|
| 0-2 hours | Some ISPs pick up the new DNS. ~30% of your traffic hits the new server. |
| 2-12 hours | Most ISPs have updated. ~80% of traffic hits the new server. |
| 12-24 hours | Nearly complete. ~95% of traffic hits the new server. |
| 24-48 hours | Full propagation. 100% of traffic hits the new server. Some stubborn ISPs (particularly in Asia) can take the full 48 hours. |
During propagation, both servers must work. Some visitors will see the old server, some will see the new one. Since you kept the old host active (as we recommended in the pre-migration checklist), all visitors see a working site regardless of which server they reach.
Step 10: Post-Migration Cleanup
The migration is technically done, but there are several housekeeping tasks that prevent problems in the coming days and weeks.
Immediate (Within 24 Hours)
- Verify SSL certificate — Go to your site with
https://. If the SSL isn't working, install it through cPanel > SSL/TLS or your host's SSL manager. Most hosts auto-install Let's Encrypt within minutes of DNS propagation. SiteGround and Hostinger do this automatically. - Test all critical pages — Homepage, contact form, product pages, checkout, login. Do this from a device where you have not edited the hosts file to ensure you're testing through actual DNS.
- Remove the hosts file entry from Step 7 on your local computer.
- Check site speed — Run a quick test at GTmetrix or PageSpeed Insights. If the site is significantly slower than before, check if caching plugins are active and the server location is correct.
Within the First Week
- Google Search Console — Check for crawl errors. Google may temporarily show errors during DNS propagation, but these should resolve within 48 hours. If errors persist, something is misconfigured.
- Update CDN settings — If you use Cloudflare or another CDN, update the origin IP to point to the new host. Purge the CDN cache to serve fresh content from the new server.
- Test email deliverability — Send test emails to Gmail, Outlook, and Yahoo. Check that they land in the inbox, not spam. Verify SPF and DKIM records using MXToolbox.
- Verify cron jobs — If your site relies on scheduled tasks (WordPress cron, custom cron jobs), verify they're running on the new host.
- Monitor uptime — Use a free uptime monitor like UptimeRobot to catch any outages during the first week.
After One Week: Cancel Old Hosting
Once you've confirmed everything works perfectly on the new host for at least seven days:
- Take one final backup of the old host (just in case)
- Log into your old hosting account
- Cancel the account or let it expire
- Keep the final backup stored locally for at least 90 days
Common Migration Problems and How to Fix Them
Even with careful planning, issues can arise. Here are the five most common problems and their solutions.
500 Internal Server Error
The most common post-migration error. Usually caused by one of three things:
- .htaccess issues — Rename
.htaccessto.htaccess.bak. If the site loads, the file has rules incompatible with the new server. Regenerate it by going to WordPress > Settings > Permalinks and clicking "Save Changes." - PHP version mismatch — The new host may default to a different PHP version. Check cPanel > PHP Selector and set it to match your old host. WordPress 6.x requires PHP 7.4+ and works best on PHP 8.1/8.2.
- File permissions — Directories should be
755, files should be644. Fix via SSH:find /home/user/public_html -type d -exec chmod 755 {} \; find /home/user/public_html -type f -exec chmod 644 {} \;
Database Connection Error
"Error establishing a database connection" means WordPress can't reach the database. 99% of the time, it's a wp-config.php issue:
- Verify
DB_NAMEmatches exactly (including the cPanel username prefix) - Verify
DB_USERmatches exactly - Verify
DB_PASSWORDis correct (re-copy it, don't re-type it) - Verify the user has been assigned to the database with all privileges
- Verify
DB_HOSTislocalhost(some hosts use a specific hostname — check your welcome email)
Missing or Broken Images
If pages load but images show as broken:
- Check file paths — If your images use absolute paths like
https://olddomain.com/wp-content/uploads/image.jpgand you changed domains, run the search-replace from Step 6. - Check uploads directory — Verify that
/wp-content/uploads/exists on the new host and contains all your image files. - Check case sensitivity — Linux servers are case-sensitive (Windows servers aren't). If
Image.JPGis referenced asimage.jpg, it'll break on Linux. This is a common issue when migrating from Windows hosting to Linux hosting.
SSL Certificate Issues
If you see "Not Secure" warnings or redirect loops:
- SSL not installed yet — Let's Encrypt can only issue a certificate after DNS points to the new server. Wait for propagation, then install SSL via cPanel or your host's SSL tool.
- Mixed content — Some resources (images, scripts) are loading via
http://instead ofhttps://. Run search-replace to change allhttp://URLs tohttps://. - Force HTTPS redirect loop — If your
.htaccesshas an HTTPS redirect but SSL isn't installed yet, you'll get an infinite redirect. Remove the HTTPS redirect temporarily, install SSL, then re-add it.
Email Not Working After Migration
- MX records still point to old host — Check your MX records at MXToolbox. Update them to the new host's mail server if you're hosting email with the new provider.
- SPF record not updated — If you changed nameservers, the old SPF record (which authorized the old host's mail server) is gone. Add a new SPF TXT record:
v=spf1 +a +mx +ip4:NEW_SERVER_IP ~all - Emails going to spam — Set up DKIM and DMARC records on the new host. Without proper email authentication, major providers (Gmail, Outlook) may filter your emails as spam.
Migration Tools Comparison
The right tool depends on your site type, technical comfort, and site size. Here's how the major options compare.
| Tool | Best For | Limit | Price | Ease of Use |
|---|---|---|---|---|
| All-in-One WP Migration | Small WordPress sites | 512MB (free) | Free / $69 unlimited | Easiest — export + import, drag and drop |
| UpdraftPlus | WordPress backup + restore | No size limit (free) | Free / $70+/yr premium | Easy — backup, download, restore on new site |
| Duplicator | Full WordPress clone | 500MB (free) | Free / $49.50+/yr | Medium — creates a package with installer script |
| cPanel Transfer | Any site (cPanel to cPanel) | No limit | Free (ask new host) | Easiest — host does everything |
| WP-CLI + rsync | Developers, large sites | No limit | Free | Advanced — command line required |
| Host Migration Service | Any site | No limit | Free with SiteGround, ChemiCloud, FastComet | Easiest — professionals handle everything |
Our Recommendation by Scenario
- Small WordPress site (<500MB), non-technical user: All-in-One WP Migration plugin. Export from old host, import on new host. Done in 15 minutes.
- WordPress site of any size, comfortable with plugins: UpdraftPlus. No size limit on free tier, reliable backup-and-restore workflow.
- Any site, want zero effort: Choose a host with free migration (SiteGround, ChemiCloud, FastComet) and let their team do everything.
- Large site (>5GB) or custom PHP site: Manual migration with SSH + rsync + command-line MySQL import.
- cPanel to cPanel: Full cPanel backup + restore. Contact new host support to restore the backup.
Frequently Asked Questions
How long does website migration take?
Active hands-on time is typically 2-4 hours for a standard website. Small WordPress sites (under 1GB) can be done in under an hour using a migration plugin. Large sites with multiple databases, extensive email archives, or custom configurations may take 4-8 hours of work. DNS propagation adds another 2-24 hours of waiting time, but your site remains live throughout — there's no downtime for visitors if you follow this guide.
Will my site have downtime during migration?
No — not if you do it right. The key is to keep your old hosting account active until DNS has fully propagated to the new server. During the propagation window (typically 2-24 hours), approximately half your visitors hit the old server and half hit the new server. Since both servers have a working copy of your site, nobody experiences downtime. Only cancel your old hosting after at least one week of confirmed stable operation on the new host.
Can I migrate without technical knowledge?
Absolutely. The easiest approach is choosing a host that offers free migration. SiteGround, ChemiCloud, and FastComet will migrate your site for you at no cost — their support teams handle the file transfer, database import, and configuration. Alternatively, WordPress plugins like All-in-One WP Migration turn migration into a simple export-and-import process. If your WordPress site is under 512MB, you can realistically do it yourself in under 30 minutes with zero command-line work. See our best hosts with free migration guide for the full list.
What if something goes wrong during migration?
This is exactly why we insist on keeping your old host active throughout the process. If the migration fails, if the new site has broken functionality, or if anything else goes wrong — your original site is still running untouched on the old server. To revert, simply change your DNS back to the old host's nameservers. The most common issues (database connection errors, missing images, PHP version mismatches) are all fixable without affecting your live site. As long as you took a full backup in Step 2, the worst-case scenario is starting the migration over from scratch.
Do I need to migrate email separately?
It depends on how your email is set up. If you use a third-party email service like Google Workspace, Microsoft 365, or Zoho Mail, your email is completely independent of your web host — no email migration is needed. Just ensure your MX records stay pointed at your email provider during the DNS change. However, if you use cPanel email or any email hosting tied to your web host, you must migrate email separately. Your mailbox contents are stored on the server and won't transfer automatically with your website files. See Step 8 for the full email migration process.
Should I change my domain during migration?
We strongly recommend against changing your domain name at the same time as migrating hosts. Each change introduces its own set of potential issues — and when you change both simultaneously, debugging becomes significantly harder because you can't isolate which change caused which problem. Migrate to the new host first. Confirm everything works perfectly for at least one to two weeks. Then, if you still want to change domains, handle it as a separate project with proper 301 redirects to preserve your SEO rankings and link equity. Two clean, tested changes are far safer than one messy combined change.
Bottom Line: You've Got This
Website migration sounds intimidating, but it's really just 10 steps in a logical order. The entire process boils down to three things: copy your files, copy your database, point DNS to the new server. Everything else is preparation and verification.
Here's what to remember:
- Backup everything first — files, database, and emails. Store the backup locally. This is your safety net.
- Test before switching DNS — Use the hosts file trick (Step 7) to verify the site works on the new server before any visitor is affected.
- Keep the old host active for a week — This gives you a fallback and ensures no downtime during DNS propagation.
- Don't forget email — If you host email with your web host, it needs to be migrated separately.
If you want the simplest possible experience, choose a host that handles migration for you:
- SiteGround GrowBig ($4.99/mo) — Free WordPress migration plugin + manual migration for non-WP sites. Best overall for performance and support.
- ChemiCloud ($2.49/mo) — Free migration for up to 3 sites. Best value with lowest renewal rates ($11.95/mo).
- FastComet ($1.79/mo) — Free migration + free domain transfer. Best intro price with reasonable renewal ($8.95/mo).
All three hosts include free SSL, daily backups, and responsive support — the essentials for a worry-free migration. For the full comparison of hosts that offer free migration, see our Best Hosting with Free Migration 2026 guide. Or if you're still deciding on a host, start with our Best Web Hosting 2026 overall rankings.
For WordPress-specific hosting features (staging, one-click installs, managed updates), our Best WordPress Hosting 2026 guide covers that in detail.