Migrate WordPress: complete guide for safe migration
Published on 11 December 2025
# Migrate WordPress: complete guide for safe migration
You want to move your WordPress website to a new hosting provider. Maybe your current hosting is too slow, too expensive, or you have bad experiences with support. A migration seems scary - what if your site crashes or you lose data?
This complete guide shows you exactly how to migrate safely without downtime, without data loss and without technical knowledge. Step by step, from backup to DNS change.
## Why move WordPress to other hosting?
**Common reasons to migrate:**
**Better performance**
Your site loads slowly on current hosting. New host with SSD storage and better servers makes your site 2-3x faster.
**Lower costs**
You pay €15/month but find comparable hosting for €6/month. Save €100+ per year.
**Better support**
Current provider responds slowly or insufficiently. New host has 24/7 Dutch support.
**More features**
You want staging environment, automatic backups, or better security features that current host doesn't offer.
**Hosting problems**
Regular downtime, server errors, or hosting provider is shutting down.
**Upgrade needed**
Your website grows and your shared hosting can't handle the traffic anymore. Time for managed WordPress hosting or VPS.
[Compare WordPress hosting providers](/en/wordpress/hosting)
## Before you start: preparation
**Checklist before migration:**
**1. Choose new hosting provider**
Popular choices:
- **TransIP** - €4.95/month, Dutch datacenter, good price-quality
- **Antagonist** - €15/month, premium managed WordPress hosting
- **Vimexx** - €5.95/month, user-friendly, free migration service
[View best WordPress hosting options](/en/best-wordpress-hosting)
**2. Check what you need to migrate**
- WordPress installation (core files, uploads, plugins, themes)
- Database (all content, users, settings)
- Email accounts (if you host email with hosting)
- Custom configurations (.htaccess, wp-config.php modifications)
**3. Make complete backup**
This is ESSENTIAL. Backup prevents data loss if something goes wrong.
**4. Note current settings**
- PHP version
- WordPress version
- MySQL/MariaDB version
- Active plugins list
- Theme version
**5. Test website functionality**
Check everything works before migration:
- Contact forms
- Webshop checkout (if applicable)
- Login functionality
- Custom features
## Method 1: Free migration service (easiest)
Most good hosting providers offer free migration service. They do all the work for you.
**Providers with free migration:**
- TransIP - free migration service
- Vimexx - free migration by support team
- Antagonist - free migration with all packages
- Hostnet - free migration service
**How it works:**
**Step 1: Order new hosting**
1. Choose hosting package at new provider
2. Order WITHOUT domain (use existing)
3. Receive login credentials for control panel
**Step 2: Request migration**
1. Log in to new hosting control panel
2. Look for "Free migration" or "Move website"
3. Fill in form:
- Current hosting provider
- FTP/cPanel login credentials old hosting
- WordPress admin login
4. Submit request
**Step 3: Hosting provider migrates**
1. Support team logs in to old hosting
2. Make backup of all files and database
3. Upload to new hosting
4. Configure WordPress on new location
5. Test if everything works
6. Duration: 1-3 business days
**Step 4: You test the migration**
1. You receive test URL (e.g. temp-yoursite.com)
2. Check if website works completely
3. Test all functionality
4. Give approval if everything is OK
**Step 5: Change DNS**
Support often helps with this or you do it yourself (see later).
**Advantages free migration:**
- No technical knowledge needed
- Zero downtime
- Support solves problems
- Free service
**Disadvantages:**
- Takes 1-3 days
- You must share FTP/admin access
- Less control over process
## Method 2: Migrate with plugin (DIY)
If you want to migrate yourself or new host doesn't have free service, use a migration plugin.
**Best migration plugins:**
**All-in-One WP Migration** (free/pro)
**Free version:**
- Migrate sites up to 512MB
- Export to file
- Import with one click
**Pro version** (€69):
- Unlimited site size
- Multisite support
- Direct from host to host
**Duplicator** (free/pro)
**Free version:**
- Complete site backup as package
- Import wizard
- Database replacement
**UpdraftPlus** (free with Migrator add-on)
Free backup, paid Migrator add-on (€30/year) for migrations.
**Step-by-step with All-in-One WP Migration:**
**Preparation:**
1. Install All-in-One WP Migration on OLD site
2. Install WordPress on NEW hosting (empty installation)
3. Install All-in-One WP Migration on NEW site
**On old site (export):**
1. Log in to WordPress admin
2. Go to All-in-One WP Migration > Export
3. Choose "Export To" > File
4. Plugin makes package (can take 5-30 min)
5. Download .wpress file to your computer
**On new site (import):**
1. Log in to WordPress admin (new hosting)
2. Go to All-in-One WP Migration > Import
3. Drag .wpress file to upload box
4. Or choose "Import From" > File and upload
5. Plugin imports everything (10-60 min)
6. Get message "Import complete"
7. Log in again (old credentials now work)
**Database and URLs automatically replaced:**
Plugin automatically replaces:
- Database URLs (from old to new domain)
- File paths
- Serialized data
**Test new site:**
1. Check homepage
2. Test all pages
3. Try contact forms
4. Check admin panel
5. Verify uploads/images load
**Troubleshooting:**
**"Maximum upload size exceeded":**
- Free version: max 512MB
- Solution: buy Pro version or use Duplicator
- Or ask hosting support to increase upload limit
**"Not enough space":**
- Check disk space on new hosting
- Remove unnecessary backups/uploads
- Upgrade hosting package
**Import time-out:**
- Increase PHP max_execution_time
- Via hosting control panel > PHP settings
- Set to 300 seconds or higher
## Method 3: Manual migration (advanced)
For advanced users or large/complex websites.
**Requirements:**
- FTP client (FileZilla)
- phpMyAdmin access (or MySQL command line)
- Text editor (Notepad++, Sublime)
**Step 1: Make backup on old hosting**
**Download files via FTP:**
1. Open FileZilla
2. Connect with FTP credentials old hosting
3. Navigate to WordPress root folder (usually public_html)
4. Download ALL files and folders
5. This can take 30-120 min depending on site size
**Export database:**
1. Log in to cPanel old hosting
2. Open phpMyAdmin
3. Select WordPress database (left)
4. Click "Export" tab
5. Choose "Quick" export method
6. Format: SQL
7. Click "Go"
8. .sql file is downloaded
**Step 2: Upload to new hosting**
**Upload files via FTP:**
1. Connect FileZilla with new hosting FTP
2. Navigate to public_html (or wordpress folder)
3. Upload ALL downloaded files
4. This can take 30-120 min
**Import database:**
**First: create database on new hosting:**
1. Log in cPanel new hosting
2. Go to "MySQL Databases"
3. Create new database (e.g. wp_newsite)
4. Create database user with password
5. Assign user to database with ALL PRIVILEGES
6. Note: database name, user, password
**Import SQL file:**
1. Open phpMyAdmin on new hosting
2. Select new database
3. Click "Import" tab
4. Choose File: select .sql file
5. Click "Go"
6. Wait for "Import has been successfully finished"
**Step 3: Update wp-config.php**
1. Open wp-config.php in text editor
2. Update database credentials:
```php
define('DB_NAME', 'new_database_name');
define('DB_USER', 'new_database_user');
define('DB_PASSWORD', 'new_password');
define('DB_HOST', 'localhost'); // sometimes different, check with hosting
```
3. Save and upload via FTP (overwrite old)
**Step 4: Update database URLs**
URLs in database still point to old domain. Replace all instances.
**Via plugin (easiest):**
1. Download Better Search Replace plugin
2. Upload and activate on new site
3. Go to Tools > Better Search Replace
4. Search for: `http://oldsite.com`
5. Replace with: `http://newsite.com` (or temp URL)
6. Select all tables
7. Check "Run as dry run" first to test
8. Click "Run Search/Replace"
9. Check results
10. Run again WITHOUT "dry run" to actually replace
**Via phpMyAdmin (SQL query):**
```sql
UPDATE wp_options SET option_value = replace(option_value, 'http://oldsite.com', 'http://newsite.com') WHERE option_name = 'home' OR option_name = 'siteurl';
UPDATE wp_posts SET guid = replace(guid, 'http://oldsite.com','http://newsite.com');
UPDATE wp_posts SET post_content = replace(post_content, 'http://oldsite.com', 'http://newsite.com');
UPDATE wp_postmeta SET meta_value = replace(meta_value,'http://oldsite.com','http://newsite.com');
```
**Note:** Replace `wp_` with your database prefix if you changed it.
**Step 5: Fix file permissions**
```
Folders: 755
Files: 644
wp-config.php: 440
```
Via FTP or SSH (see WordPress security article).
**Step 6: Test new site**
1. Visit new site via temp URL or IP address
2. Test all functionality
3. Check WordPress admin
4. Verify plugins work
5. Test contact forms
## Change DNS: from old to new hosting
After successful migration you need to change DNS so your domain points to new hosting.
**Method 1: Change nameservers (domain at other registrar)**
If your domain is at different party than hosting:
**Step 1: Find nameservers new hosting**
Login to new hosting control panel, look for:
- "Nameservers" or "DNS information"
- For example: ns1.transip.nl and ns2.transip.nl
**Step 2: Update nameservers at domain registrar**
1. Log in at domain registrar (where you bought domain)
2. Find your domain
3. Go to DNS settings or nameservers
4. Remove old nameservers
5. Add new nameservers
6. Save/update
**Propagation time:** 2-48 hours (usually within 6 hours)
**Method 2: Change A-record (faster, more control)**
**Step 1: Find IP address new hosting**
1. Login new hosting control panel
2. Look for IP address (often in account overview)
3. Note IP (for example: 185.3.94.42)
**Step 2: Update A-record**
1. Log in at DNS management (usually at domain registrar)
2. Go to DNS records
3. Find A-record for @ (root) and www
4. Update IP address to new hosting IP
5. TTL: set to 300 (5 min) for fast propagation
6. Save changes
**Propagation:** 30 min - 4 hours (faster than nameservers)
**Test DNS propagation:**
- whatsmydns.net - check DNS worldwide
- nslookup yourdomain.com (in terminal/cmd)
**During propagation:**
- Site can intermittently show old/new hosting
- No data loss (site runs on both)
- Don't make changes on old site
## Migrate email
If you host email with hosting, you also need to migrate email accounts.
**Option 1: Recreate email accounts**
**On new hosting:**
1. Create email accounts (same names as old)
2. Configure passwords
3. Wait until DNS propagated
4. New email arrives at new hosting
**Transfer old emails:**
**Via IMAP (easiest):**
1. Configure old account in email client (Thunderbird/Outlook)
2. Configure new account in same client
3. Drag emails from old to new account
4. IMAP syncs automatically to new server
**Via cPanel Email Forwarder:**
1. Setup forwarding from old to new account
2. All new email is forwarded
3. Keep old account active 1-2 weeks
**Option 2: Use external email (recommended)**
Host email externally for better deliverability and independence:
**Google Workspace** (€5.75/user/month)
- Professional
- 30GB storage
- Excellent deliverability
- Always online, independent of hosting
**Microsoft 365** (€4.20/user/month)
- Outlook + Office apps
- 50GB mailbox
- Good spam filtering
**Advantage external email:**
- Switch hosting without email problems
- Better uptime
- More professional email services
## Solve common migration problems
**Problem: "Error establishing database connection"**
**Causes:**
- Wrong database credentials in wp-config.php
- Database not imported
- Database user has no permissions
**Solution:**
1. Check wp-config.php database settings
2. Verify database exists in phpMyAdmin
3. Check database user permissions
**Problem: Site shows only text, no styling**
**Cause:** URLs in database still point to old domain
**Solution:**
- Run Better Search Replace to update URLs
- Or use WP CLI: `wp search-replace 'oldsite.com' 'newsite.com'`
**Problem: Images don't load**
**Causes:**
- Uploads folder not completely copied
- URLs in database still old
- File permissions wrong
**Solution:**
1. Check /wp-content/uploads/ folder is complete
2. Update URLs in database
3. Fix permissions (755 folders, 644 files)
**Problem: Plugins don't work**
**Cause:** Plugins not active after import
**Solution:**
1. Go to Plugins page
2. Select all plugins
3. Bulk Actions > Activate
4. Or deactivate and reactivate individually
**Problem: Can't login**
**Cause:** Cookies point to old domain
**Solution:**
1. Clear browser cookies
2. Try incognito mode
3. If still doesn't work: reset password via "Lost password"
**Problem: 404 errors on all pages except homepage**
**Cause:** Permalinks not regenerated
**Solution:**
1. Login WordPress admin
2. Settings > Permalinks
3. Click "Save Changes" (don't change anything)
4. This regenerates .htaccess rules
## Checklist after successful migration
**Immediately after migration:**
- [ ] Test all pages (click through entire site)
- [ ] Check contact forms (send test message)
- [ ] Verify webshop checkout works (test order)
- [ ] Test WordPress admin access
- [ ] Check if all images load
- [ ] Verify plugins active and working
**Within 24 hours:**
- [ ] Monitor email (arriving?)
- [ ] Check DNS propagation (whatsmydns.net)
- [ ] Setup SSL certificate on new hosting (if not yet)
- [ ] Force HTTPS redirect
- [ ] Update Google Search Console (new hosting IP)
- [ ] Check Google Analytics data coming in
**First week:**
- [ ] Monitor uptime and loading times
- [ ] Setup new backups on new hosting
- [ ] Check all cron jobs work
- [ ] Verify email sending works (SMTP/transactional emails)
- [ ] Test all custom functionality
**After 1-2 weeks:**
- [ ] Cancel old hosting (if everything works perfectly)
- [ ] Remove test/temp files
- [ ] Update DNS TTL back to normal value (3600)
## Tips for zero-downtime migration
**Method: build parallel site**
1. **Setup new site with temp domain** (e.g. temp.newhosting.com)
2. **Migrate and test completely** before DNS changes
3. **Synchronize shortly before DNS switch:**
- Export new database entries (posts created since migration)
- Sync new uploads
- Or use WP Migrate DB Pro for sync
4. **Change DNS** when new site is perfect
5. **Zero downtime** - both sites worked, seamless transition
**Note for webshops:**
- Plan migration during quiet sales moment
- Put shop briefly in maintenance mode (5-10 min during final sync)
- Test checkout flow extra thoroughly
- Verify payment gateways work
## Frequently asked questions about WordPress migration
**How long does WordPress migration take?**
Free migration service: 1-3 business days. DIY with plugin: 1-3 hours work. Manual: 3-6 hours. DNS propagation: 2-48 hours extra.
**Do I lose data when migrating?**
No, if you make correct backup and follow steps. Old site stays online until DNS propagated. No data loss.
**Can I migrate without downtime?**
Yes, with parallel site method. Build new site completely, test thoroughly, then change DNS. Seamless transition.
**Should I cancel old hosting immediately?**
No! Keep old hosting active minimum 1-2 weeks after DNS switch. As backup and to make sure everything works on new hosting.
**What if migration fails?**
Change DNS back to old hosting (reverse nameserver change). Old site stays online. Or restore from backup. Therefore: always make backup BEFORE migration.
**Can I migrate from WordPress.com to self-hosted WordPress?**
Yes, but different process. WordPress.com has export tool (Settings > Export). Import in self-hosted WordPress via Tools > Import. Themes and plugins you must reinstall.
## Practical next steps
**Before you migrate:**
1. **[Choose new hosting provider](/en/best-wordpress-hosting)** - compare options
2. **Make complete backup** - via UpdraftPlus or hosting backup
3. **List all plugins and themes** - for reference
4. **Test current functionality** - know what works before migration
**During migration:**
1. **Choose method** - free service (easiest) or DIY with plugin
2. **Follow steps carefully** - check each point
3. **Test thoroughly** - before you change DNS
4. **Document issues** - solve problems before go-live
**After migration:**
1. **Monitor first week** - uptime, loading times, functionality
2. **Setup new backups** - on new hosting
3. **Update tools** - Google Search Console, Analytics
4. **Keep old hosting active** - minimum 2 weeks as backup
5. **Cancel old hosting** - only when 100% sure everything works
**Need help with migration?**
- [Use move wizard](/en/move-wizard) - find hosting with free migration
- [Knowledge base](/en/knowledge-base) - more WordPress guides
- Contact new hosting support - they often help for free
Moving your WordPress website is less scary than it seems. With this guide you do it safely and without stress. Good luck with your migration!
Related articles
What is Plesk? Powerful Hosting Control Panel
Learn what Plesk is, how it differs from cPanel and why many hosters use it for server management.
What is DirectAdmin? Lightweight Control Panel
Discover what DirectAdmin is, its benefits and why it is a cheaper alternative to cPanel.
What is TTFB? Time To First Byte Explained
Learn what TTFB is, why it is important for SEO and how to improve Time To First Byte.