Skip to content
How to Migrate a WordPress Site: Manual, Plugin, and Hosting Methods
WordPress Tutorials📖 Tutorial

How to Migrate a WordPress Site: Manual, Plugin, and Hosting Methods

Erik KellerErik Keller••Updated on: •14 min read•496 views

Key Takeaways

  • ✓WordPress migration transfers database, theme files, plugins, uploads, and configuration between servers or domains.
  • ✓Manual migration requires exporting database via phpMyAdmin and downloading files via FTP or cPanel.
  • ✓All-in-One WP Migration and Duplicator plugins automate export, transfer, and import processes.
  • ✓Update site URL in database using search-replace scripts to prevent broken links after domain changes.
  • ✓Managed hosting providers like SiteGround and Kinsta offer free migration services handled by support teams.

Migrating a WordPress site—whether moving to a new host, changing domains, or transferring from a staging environment to production—is a task that most WordPress users face at some point. Done correctly, a migration takes 30-60 minutes with zero downtime. Done incorrectly, it can result in broken links, missing images, database errors, and hours of troubleshooting.

In this guide, we cover three migration methods: manual migration (for full control), plugin-assisted migration (for simplicity), and hosting provider migration (for convenience). Each method includes step-by-step instructions and a verification checklist.

Before You Migrate: Preparation Checklist

StepWhy It MattersHow to Do It
Create a full backupSafety net if migration failsUse UpdraftPlus or manual export
Document current settingsReference for post-migration verificationScreenshot wp-admin settings, active plugins list, permalink structure
Check server requirementsEnsure new host meets WordPress minimumsPHP 8.0+, MySQL 5.7+ / MariaDB 10.4+, HTTPS support
Note DNS settingsYou will need to update DNS after migrationExport current DNS records from registrar
Reduce TTLSpeeds up DNS propagation after migrationSet DNS TTL to 300 seconds (5 minutes) 24 hours before migration

Method 1: Manual Migration (Full Control)

Manual migration gives you complete control over the process. It is the preferred method for developers and for complex sites with custom configurations.

Step 1: Export the Database

Connect to your current hosting via SSH or phpMyAdmin and export the WordPress database:

Using command line (SSH): For related information, see our guide on How to Configure WooCommerce Shipping: Zones, Meth.

  • Run: mysqldump -u username -p database_name > backup.sql
  • Download the backup.sql file to your local machine

Using phpMyAdmin: For related information, see our guide on How to Back Up Your WordPress Site: Methods, Plugi.

  • Select your database → Export → Quick export → SQL format → Go
  • Save the .sql file

Step 2: Copy All Files

Download all WordPress files from the current server:

  • Connect via SFTP (FileZilla, WinSCP, or Cyberduck)
  • Download the entire WordPress directory (wp-content, wp-admin, wp-includes, root files)
  • Alternatively, create a compressed archive: tar -czf wordpress-backup.tar.gz /path/to/wordpress/

The wp-content directory is the most important—it contains your themes, plugins, uploads (images), and configuration files.

Step 3: Upload Files to New Server

  • Upload via SFTP or extract the archive on the new server
  • Ensure file permissions are correct: directories at 755, files at 644
  • Verify the wp-config.php file is present but will need updating

Step 4: Create Database on New Server

  • Create a new MySQL database and user on the new hosting
  • Grant the user full privileges on the new database
  • Import the database: mysql -u new_username -p new_database < backup.sql

Step 5: Update wp-config.php

Edit wp-config.php on the new server with the new database credentials:

  • DB_NAME → New database name
  • DB_USER → New database username
  • DB_PASSWORD → New database password
  • DB_HOST → Usually 'localhost' but check with your host

Step 6: Search and Replace URLs (If Changing Domains)

If your domain is changing, you need to update all URLs in the database. WordPress stores absolute URLs for images, links, and serialized data. Use the WP-CLI tool or the Search Replace DB script:

  • wp search-replace 'https://old-domain.com' 'https://new-domain.com' --all-tables
  • This handles serialized data correctly (unlike a simple SQL find-and-replace)

Step 7: Update DNS

Point your domain's DNS records to the new server's IP address. Update the A record (and AAAA for IPv6) at your domain registrar. With TTL set to 300 seconds (from preparation), propagation typically completes within 5-30 minutes.

Method 2: Plugin Migration (Simplest)

Migration plugins handle the technical details automatically. This is the recommended method for users who are not comfortable with SSH and database management.

Recommended Migration Plugins

PluginFree LimitKey Features
All-in-One WP Migration512 MB exportOne-click export/import, URL replacement included
UpdraftPlus PremiumBackup free, migration PremiumIncremental backups, cloud storage, site cloning
Duplicator Pro500 MB export (free)Creates installer package, handles serialized data
WP MigrateLimited (free)Push/pull between environments, database-only migration

Migration Process (All-in-One WP Migration)

  1. Install on source site: Install and activate the plugin on the current site
  2. Export: Go to All-in-One → Export → Export To → File. The plugin creates a .wpress archive
  3. Install WordPress on destination: Set up a fresh WordPress installation on the new host
  4. Install plugin on destination: Install the same plugin on the new WordPress installation
  5. Import: Go to All-in-One → Import → Upload the .wpress file
  6. Done: The plugin replaces the database, files, and updates URLs automatically

Method 3: Hosting Provider Migration

Many hosting providers offer free migration services or built-in migration tools:

  • SiteGround: Free WordPress migration with their Migrator plugin
  • Cloudways: Free first migration by their team
  • Kinsta: Free migration included with all plans, handled by their team
  • WP Engine: Automated migration plugin

Hosting-assisted migration is the easiest option but gives you the least control. For sites with custom configurations, cron jobs, or non-standard setups, manual or plugin migration is more reliable.

Post-Migration Verification Checklist

CheckHow to VerifyIf It Fails
Homepage loads correctlyVisit your domain in a browserCheck DNS propagation, verify database connection
Admin login worksGo to /wp-admin and log inCheck wp-config.php database credentials
Permalinks workClick on any post or pageGo to Settings → Permalinks → Save (regenerates .htaccess)
Images display correctlyBrowse several pages with imagesRun search-replace for old domain in uploads paths
Forms submit successfullyTest all contact formsCheck SMTP settings, form plugin configuration
SSL certificate activeCheck for padlock icon in browserInstall SSL on new host, update WordPress URL to https
Email delivery worksTrigger a password reset emailConfigure SMTP plugin (WP Mail SMTP)
WooCommerce functioningTest add-to-cart and checkout flowVerify payment gateway keys, shipping zones
Cron jobs runningCheck scheduled tasks in WP-CrontrolVerify wp-cron is enabled or set up server cron
Search functionalityTest site searchRebuild search index if using a search plugin

Common Migration Issues and Solutions

IssueCauseSolution
White screen after migrationPHP version mismatch or plugin conflictEnable WP_DEBUG, check PHP version, disable plugins via FTP
Mixed content warningsSome URLs still use http:// instead of https://Run search-replace: http://domain.com → https://domain.com
Broken imagesUpload paths not updated or files missingVerify wp-content/uploads directory, run URL search-replace
Database connection errorWrong credentials in wp-config.phpVerify DB_NAME, DB_USER, DB_PASSWORD, DB_HOST
404 on all pages except homepagePermalink .htaccess not regeneratedSettings → Permalinks → Save Changes
Redirect loopsOld CDN or caching rules conflictingClear all caches, check .htaccess for conflicting redirects

For more details, refer to the official documentation: WordPress Migration Documentation.

Frequently Asked Questions

How long does a WordPress migration take?

A typical migration takes 30-60 minutes for the technical process. DNS propagation can add 5 minutes to 48 hours depending on your TTL settings and ISP caching. Reducing TTL to 300 seconds 24 hours before migration minimizes propagation delays.

Will I lose any data during migration?

Not if you follow the backup-first approach. Create a full backup before starting, and do not delete the old site until you have verified everything works on the new host. The backup ensures you can restore the original state if anything goes wrong.

Can I migrate a WordPress site without downtime?

Yes. The key is to complete the migration on the new server before updating DNS. Set up the site on the new host, verify everything works (using a temporary URL or hosts file entry), then update DNS. Users will be served by the old server until DNS propagates, then seamlessly switch to the new server.

Do I need to reinstall plugins and themes after migration?

No. A full migration (files + database) includes all plugins, themes, uploads, and settings. Everything transfers as-is. You should verify that plugins are active and configured correctly, but reinstallation is not necessary.

What if my site is too large for a migration plugin?

Sites exceeding 2-5 GB (common with media-heavy sites) may hit upload limits or timeout issues with migration plugins. In this case, use the manual method: transfer files via SSH/SFTP and import the database via command line. Large databases can be split using the --max_allowed_packet parameter.

Should I update WordPress, plugins, and themes before or after migration?

Update before migration on the source site, and verify everything works after updating. Migrating an already-updated site avoids the complexity of troubleshooting update issues on an unfamiliar server. For security and performance best practices, see our WordPress maintenance checklist.

Reliable WordPress Backup and Migration

Get UpdraftPlus Premium for automated backups, cloud storage integration, and one-click site migration. GPL licensed for unlimited sites.

Browse UpdraftPlus Premium →

Frequently Asked Questions

How long does a WordPress migration take?
A typical migration takes 1-4 hours depending on site size and method. Small sites with plugin-based migration finish in under an hour. Large sites with extensive databases, media libraries, or complex configurations may take several hours.
Will my site experience downtime during migration?
With proper planning, downtime can be minimized to minutes. The recommended approach is to set up the site on the new host first, test everything, then update DNS records. DNS propagation typically takes 24-48 hours but visitors are gradually redirected.
Do I need to reinstall plugins and themes after migration?
No. A complete migration includes all files (themes, plugins, uploads) and the database (settings, content, options). Everything transfers as-is. You may need to update file paths or URLs if the domain changes.
Can I migrate a WordPress site to a different domain?
Yes. After moving files and database, update the WordPress URL and Site URL in the database using WP-CLI or a search-replace tool. All internal links and references need to be updated from the old domain to the new one.
What should I check after completing a migration?
Verify homepage and key pages load correctly, test forms and checkout processes, check that images and media display properly, verify SSL certificate is active, test email functionality, and check that cron jobs and scheduled tasks are running.

Share this post

About the Author

Erik Keller
Erik Keller

WordPress Expert

Senior WordPress specialist with extensive experience in themes, plugins, and WooCommerce development. Passionate about helping businesses succeed with WordPress solutions.

WordPressWooCommerceTheme DevelopmentPlugin DevelopmentPerformance Optimization

Stay Updated

Get the latest WordPress tips and tutorials delivered to your inbox.