Command copied to clipboard
WP-Migrate
Works Everywhere

Migrate WordPress Sites
From Any Server

The all-in-one CLI tool that works on any server. SSH, SFTP, or FTP — automatically uses the fastest method available.

$ curl -fsSL https://wp-migrate.dev/install.sh | bash
Buy License
3 free migrations macOS & Linux Works with any host

Tired of migration headaches?

The Problems

Multiple Tools Needed

Different tools for shared hosting vs VPS. SSH-based tools don't work on shared hosting, FTP tools are slow on VPS.

WordPress Admin Needed

Plugin-based solutions require working WordPress installations on both ends.

Manual FTP Chaos

Downloading, uploading, and SQL editing is tedious and error-prone.

Broken Serialized Data

Simple find-replace destroys WordPress serialized arrays in the database.

The Solution

One Tool for Everything

Auto-detects server capabilities. Uses SSH + WP-CLI when available (fastest), falls back to FTP when needed.

No WordPress Needed

Works even when destination is empty. Perfect for fresh hosting setups.

One Command Migration

Automated file transfer, database export/import, and URL replacement.

Smart Serialization

Properly handles serialized PHP data, keeping your settings intact.

Migrate in Three Steps

1

Configure

Create a YAML config with your FTP credentials and destination URL, or use the interactive wizard.

2

Run

Execute wp-migrate and watch as files, database, and URLs are automatically transferred.

3

Verify

Test your migrated site before DNS cutover using the built-in verification tools.

Simple Configuration

migration.yaml
# migration.yaml
source:
  ftp_host: ftp.oldsite.com
  ftp_user: oldsite_user
  ftp_pass: ${SOURCE_FTP_PASS}  # Use environment variables
  wp_path: /public_html

destination:
  ftp_host: ftp.newsite.com
  ftp_user: newsite_user
  ftp_pass: ${DEST_FTP_PASS}
  wp_path: /public_html
  db_host: localhost
  db_name: newsite_wp
  db_user: newsite_dbuser
  db_pass: ${DEST_DB_PASS}
  new_url: https://newsite.com

Simple YAML configuration. Supports environment variables for security.

See it in Action

wp-migrate
$ wp-migrate
WP-Migrate v0.2.3
● ● ● ● ◉ ○
Migration
Connected to source: ftp.oldsite.com
Connected to destination: ftp.newsite.com
Exported 42 tables, 15,847 rows
Transferred 2,341 files (127.4 MB)
URL replacement: https://oldsite.com → https://newsite.com
Updated 847 rows in 12 tables
Migration Complete!

Everything You Need

🔍

Auto-Detect

Automatically detects SSH, WP-CLI, and MySQL access. Uses the fastest method available on each server.

Speed Optimized

rsync file transfer with SSH (4-10x faster). WP-CLI database operations when available. Falls back to FTP when needed.

🌐

Pre-DNS Testing

Verify your migration works before switching DNS using server_ip configuration.

📝

Wizard or Config

Interactive wizard for beginners, YAML configuration for automation and scripting.

💾

Database Handling

Full export/import with proper handling of serialized data and URL replacement.

🔁

Retry Logic

Exponential backoff for unreliable connections. Robust error recovery built in.

How We Compare

See how wp-migrate stacks up against other WordPress migration tools.

Feature wp-migrate Duplicator Pro WP-CLI All-in-One WP Migration
No SSH required
No WordPress admin needed
Works on empty destination
CLI / Terminal based
Handles serialized data
One-time pricing ✓ ($39) ✗ ($99/yr) Free ✗ ($69/yr)
Pre-DNS testing built-in Manual

Simple, Fair Pricing

Start with 3 free migrations. No credit card required.

Single User
$39
one-time payment
  • Unlimited migrations
  • All features included
  • Lifetime license
  • 2 machine activations
  • Email support
Buy Single License

Frequently Asked Questions

Any server with SSH, SFTP, FTPS, or FTP access. Works with shared hosting (GoDaddy, Bluehost, SiteGround), VPS providers (DigitalOcean, Linode), and dedicated servers. If you have SSH access, we'll use WP-CLI and rsync for maximum speed. No SSH? No problem — we fall back to FTP with a PHP agent.

Those plugins require WordPress admin access on both sites. WP-Migrate works from your terminal and can migrate to completely empty servers — no WordPress installation needed on the destination.

When SSH is available, WP-Migrate uses WP-CLI directly for database operations — no temporary agent needed. On shared hosting without SSH, we use a PHP agent instead. You get the best of both worlds automatically.

We properly unserialize PHP arrays, replace URLs, then reserialize with correct string lengths. This preserves theme settings, widget configurations, and plugin data that would break with simple find-replace.

Yes. The PHP agent uses a randomized filename, requires token authentication, auto-expires after 1 hour, and self-deletes on cleanup. We recommend SFTP for encrypted transfers.

Currently, WP-Migrate supports single-site WordPress installations. Multisite support is on our roadmap for a future release.

You'll need to purchase a license to continue. Your migration history is stored locally, and existing migrations aren't affected. It's a one-time purchase — no subscription.

Yes! Run wp-migrate deactivate on the old machine, then wp-migrate activate YOUR-KEY on the new one. Single licenses allow 2 activations, Agency licenses are unlimited.

Ready to migrate?

Get started with 3 free migrations. No credit card required.

$ curl -fsSL https://wp-migrate.dev/install.sh | bash
Buy License

Works on macOS & Linux