Emergency server help: get in touch

Migrate Plesk to cPanel (and cPanel to Plesk): Tools and Limits

Move sites from Plesk to cPanel with the WHM Transfer Tool, or cPanel to Plesk with Plesk Migrator: requirements, CLI steps, exclusions and DNS cut-over.

Published Updated 7 min read

Short answer: To move from Plesk to cPanel, use WHM’s Transfer Tool on the new cPanel server: it lists Plesk as a remote server type and pulls accounts over SSH with root access. Going the other way, install the Plesk Migrator extension on the new Plesk server; it supports cPanel 11.5 and later as a source and migrates whole subscriptions. Neither tool copies everything, so check the exclusions below before you switch DNS.

Applies to Plesk to cPanel & WHM (Transfer Tool); cPanel 11.5+ to Plesk (Plesk Migrator)

Commands checked against the official documentation (linked below) on 6 October 2026; not yet run on our lab servers.

Which tool for which direction

DirectionToolRuns onUnit of migration
Plesk to cPanelWHM Transfer Tool (remote server type “Plesk”)The new cPanel servercPanel account per Plesk subscription
cPanel to PleskPlesk Migrator extension (GUI or plesk-migrator CLI)The new Plesk serverSubscription with all its domains; service plans too
Either way, hands-offcPanel’s free migration service (Plesk listed as a supported source)cPanel staffPer their scope

Both tools work from the destination side and log in to the old server over SSH as root (or as a user who can become root). Make sure the old server allows that, at least from the new server’s IP, for the duration of the move.

Plesk to cPanel with the WHM Transfer Tool

Prepare the source Plesk server

  • Root over SSH: the Transfer Tool needs root through SSH, either directly or by logging in as another user and escalating with su or sudo. It connects on port 22 by default.
  • Forwarding domains: cPanel’s docs say Plesk domains set up as forwarding (no hosting) must be converted to physical hosting before transfer if they carry mail.
  • Mail addresses with a plus sign and FTP accounts with an underscore are not transferred. List them now so you can recreate them by hand.
  • Lower DNS TTLs on every zone a day before the move.

The conversion command for a forwarding domain, as given in the cPanel Transfer Tool documentation (replace the domain, login and password with your own):

/usr/local/psa/bin/domain --update example.com -hst_type phys -login "bob" -hosting true -ip 127.0.0.1 -passwd "use-a-strong-password"

This changes the domain on the live Plesk server. Take a Plesk backup of that subscription first and check the domain still resolves as expected afterwards.

Run the transfer

  1. In WHM on the new server open Transfers > Transfer Tool.
  2. Enter the Plesk server’s address and choose Plesk as the remote server type (Auto Detect also exists).
  3. Give root credentials, or a normal user plus the su/sudo escalation method.
  4. Start the scan of the remote server, then pick the accounts to copy. Start with one small test account.
  5. Leave the WHM tab alone until it finishes. cPanel warns against restarting services or running system updates during a transfer.

cPanel allows up to five transfer and restore threads at once and may lower that based on server load.

What does not come across from Plesk

cPanel’s migration page and Transfer Tool docs list these Plesk items as not migrated:

  • SpamAssassin configuration and per-user allow and block lists.
  • Custom DNS zone files: zones are rebuilt from cPanel’s templates, so re-add custom TXT, SRV and CNAME records.
  • Email addresses that contain + and FTP accounts with _ in the name.
  • Roundcube data, feature lists, extra Horde address books, and mailing lists on addon domains.
  • Two-factor authentication settings; users must enrol again.
  • Custom software configuration on the Plesk side (nginx directives, PHP handler tweaks, Fail2Ban rules).

Known issue: Plesk 18.0.76 and empty account lists

In July 2026 several admins reported that the Transfer Tool analysed a Plesk Obsidian 18.0.76 server successfully but showed no accounts. cPanel confirmed it as case CPANEL-54330 and said the fix would ship in cPanel 136.0.28. If you hit an empty list, update cPanel to the current build on the destination before you dig further.

cPanel to Plesk with Plesk Migrator

Plesk Migrator is a Plesk extension. In the Plesk UI go to Extensions > Plesk Migrator > Start a New Migration, choose cPanel as the source, give the source IP, SSH port and root credentials, and pick a temporary folder. Plesk then fetches the list of accounts and you choose which subscriptions to move.

Rules worth knowing before you start:

  • The smallest unit is a subscription with all its domains. You cannot pick a single addon domain.
  • Reseller and customer accounts that own no domains are not migrated.
  • Server-wide settings are not migrated: PHP handlers, Fail2Ban, ModSecurity and firewall rules must be set up on Plesk by hand.
  • After the switch you can run a re-sync of content, and a mail-only sync to pick up mail that arrived on the old server after DNS changed.

Command-line migration

For many accounts the CLI is easier to repeat. The binary and config paths from the Plesk migration guide:

# binary
/usr/local/psa/admin/sbin/modules/panel-migrator/plesk-migrator

# sample configs to copy from
ls /usr/local/psa/admin/plib/modules/panel-migrator/backend/conf/samples/
# cpanel.simple.ini  cpanel.ini  ...

# your config
/usr/local/psa/var/modules/panel-migrator/conf/config.ini

The minimal cPanel config from the documentation; fill in the IPs (and use SSH keys rather than a password where you can):

[GLOBAL]
source-type: cpanel
source-servers: cpanel
target-type: plesk

[plesk]
ip:
os: unix

[cpanel]
ip:
os: unix
ssh-password:

Then run the documented steps in order:

M=/usr/local/psa/admin/sbin/modules/panel-migrator/plesk-migrator
$M generate-migration-list   # writes a file named migration-list; edit it to choose subscriptions
$M check                     # pre-migration checks
$M transfer-accounts         # the migration itself
$M test-all                  # post-migration checks on the target

DNS cut-over and mail

Both tools copy DNS zones, but the Internet keeps asking the old server until you change nameservers or A records. Work in this order:

  1. Migrate a test account and browse it through a hosts-file entry.
  2. Migrate the rest. Note any warnings per account.
  3. Switch DNS: change A/AAAA (and MX targets) at the external DNS host, or move your nameserver glue records to the new server.
  4. For cPanel to Plesk, run Plesk Migrator’s mail-only sync after the switch. For Plesk to cPanel there is no built-in delta sync, so copy late mail with an IMAP sync tool or plan a short freeze.
  5. Let AutoSSL (cPanel) or Let’s Encrypt (Plesk) issue certificates once DNS points to the new server.

Check that it worked

  • Count accounts and domains on both sides and compare.
  • Check PHP versions per site: Plesk and cPanel name PHP builds differently, and the tools map them as best they can.
  • Log in to a few mailboxes, send and receive, and check SPF, DKIM and DMARC records in the new zones.
  • Compare database counts per account (mariadb -e "SHOW DATABASES" on both servers).
  • Keep the old server online for at least a week and watch its mail log for stragglers.

Common problems

  • Transfer Tool cannot log in: root SSH login is disabled on Plesk. Use a normal user with sudo, or allow root by key from the new server’s IP only.
  • No accounts listed after a successful scan (Plesk 18.0.76): update cPanel on the destination; see CPANEL-54330 above.
  • Custom DNS records missing: expected for Plesk to cPanel. Export the old zones before the move and re-add records by hand.
  • Plesk Migrator skips a reseller: resellers with no domains are not migrated. Create them on Plesk manually.
  • Sites load but look broken: nginx-only rules from Plesk do not exist under Apache on cPanel. Rewrite them as .htaccess rules.

Official documentation: cPanel: Transfer Tool · cPanel: Migration services and guides · Plesk Migrator: Introduction · Plesk Migrator: Command line

Related: Transferring accounts between servers with the WHM Transfer Tool · Migrate cPanel accounts to a new server without customers noticing · cPanel Migration Preflight Check · Migrate DirectAdmin to cPanel: Complete 9-Step Migration Playbook · DNS Propagation Checker

See also: Migrate DirectAdmin to DirectAdmin: Move All Users to a New Server · Plesk AlmaLinux 10: Supported Version and What Is Missing

See also: cPanel vs Plesk (2026): Which Control Panel for Hosting? · Plesk “Unable to connect to database”: PleskDBException Fix

Frequently asked questions

Can the cPanel Transfer Tool migrate from Plesk?

Yes. The Transfer Tool lists Plesk as a remote server type next to cPanel, DirectAdmin and Ensim. It needs root access to the Plesk server over SSH.

Does Plesk Migrator support cPanel as a source?

Yes. Plesk’s migration guide lists cPanel 11.5 and later as a supported source platform.

Can I migrate a single domain from Plesk to cPanel?

The Transfer Tool works per account. In the other direction Plesk Migrator works per subscription, so all domains in that subscription move together.

What do I have to redo by hand after a Plesk to cPanel move?

Custom DNS records, SpamAssassin settings, mail addresses with a plus sign, FTP users with an underscore, two-factor enrolment and any nginx-specific rules.

Is there a free migration service?

cPanel lists a free migration service for customers coming from Plesk. Check its current scope on the cPanel migration services page before relying on it.

Maintenance record

This guide changes servers, data or security settings, so we re-check it against current versions on a fixed schedule. Take a backup or snapshot before you start.

Maintained by
srvScripts editorial team
Supported versions
Plesk to cPanel & WHM (Transfer Tool); cPanel 11.5+ to Plesk (Plesk Migrator)
Last full review
Next review

Free website test

Is your website set up right?

Check SSL, security headers, redirects, robots.txt, sitemap, llms.txt and security.txt in one test. It takes about 30 seconds.