Shared Hosting to VPS: The Migration, and the Licence Nobody Budgets For
Two things are usually missing from advice about moving off shared hosting. The first is an honest answer to whether you should. The second is that the control panel you take for granted becomes a separate bill.
Start with both, because together they decide whether this is worth doing at all.
Should you actually move?
Three signals genuinely mean shared hosting has run out. Everything else is an upsell.
You’re being throttled. Your host emails about CPU or “entry process” limits, or your site slows at predictable times. Shared hosting works by overselling capacity, and once you’re consistently hitting the ceiling, the answer is more resources, not more tuning.
Time to first byte is above a second and stays there after caching is properly configured. If TTFB is bad on an uncached request and fine on a cached one, fix caching first — that’s much cheaper than a migration.
Your host won’t ship the PHP version you need. Shared hosting pins runtime versions, and “we don’t support that yet” is not something you can work around. If a framework upgrade requires a PHP version your panel doesn’t offer, that’s a hard stop rather than a performance complaint.
You need root. Docker, a specific PHP extension, a background worker, a cron job that runs more often than the panel allows, Node, or anything self-hosted. This is the cleanest signal, because no amount of shared-hosting optimisation produces root access.
If none of those apply, stay. A well-configured shared account serves a small site perfectly well, and a badly-configured VPS is slower than the shared hosting you left — with the added feature that security updates are now your job.
The cost nobody puts in the comparison
Here’s what changes the maths. On shared hosting, cPanel is included. On a VPS it’s a licence you buy:
| cPanel tier | Accounts | Monthly |
|---|---|---|
| Solo | 1 | $27.46 annual / $29.99 monthly |
| Admin | 5 | $32.96 / $35.99 |
| Pro | 30 | $49.46 / $53.99 |
| Premier | 100 | $69.99 |
A $12/month VPS with cPanel Solo is really a $40/month VPS, and that’s before you’ve done any of the administration you’re now responsible for. Against shared hosting at $3–11/month, the upgrade is a lot less obvious than the sticker prices suggest.
You have three honest ways out of that:
- A host whose VPS bundles its own panel — Hostinger’s hPanel, ScalaHosting’s SPanel — so there’s no separate licence
- A managed VPS where the host includes cPanel/WHM in the plan price
- No panel at all — SSH, and free tooling if you want a UI
Option three is cheapest and involves the most learning. Be honest with yourself about which you’ll actually maintain at 11pm when something is broken.
The rule that prevents failed migrations
Never copy data onto an unconfigured server.
The failure pattern is always the same: restore the files first, then discover the PHP version is wrong, the extension is missing, the database collation differs, and now you’re debugging a half-live site under time pressure.
Build the stack first. Match it to what shared hosting was running — PHP version, database version, extensions, web server. Prove it serves a placeholder page. Then import.
Two starting points
If you have cPanel, use the full account backup. From cPanel → Backup → Download a Full Account Backup. That archive contains files, databases, email accounts, cron jobs and DNS zone records, which is far more than a file copy gets you.
The catch: restoring it cleanly wants WHM on the destination, which is a cPanel licence again. Without WHM you can still extract the archive by hand — it’s a normal tarball, with homedir/ for files and mysql/ for database dumps — and reassemble the pieces yourself. That works and takes longer.
If you’re rebuilding manually, the checklist is: files, databases, email, cron jobs, SSL, DNS records. Email is the one people forget until someone’s mail stops arriving, and it’s frequently the hardest part — many people moving off shared hosting are better served leaving email with a dedicated provider rather than running a mail server on the new box.
Test the new server before DNS moves
You don’t need to gamble. Point your own machine at the new server while the rest of the world still sees the old one, by editing your hosts file:
# /etc/hosts (Windows: C:\Windows\System32\drivers\etc\hosts)
203.0.113.10 example.com www.example.com
Now your browser resolves the real hostname to the new IP. You can click through the actual site — logins, checkout, admin, forms — on the new server, under its real domain name, with zero risk to live traffic.
This is the single most useful trick in this article. It catches hardcoded absolute URLs, missing PHP extensions and broken redirects while they cost you nothing.
Remove the line afterwards. A stale hosts entry is a genuinely baffling thing to debug weeks later, when your site works for everyone except you.
The cutover
- Lower DNS TTL to 300 seconds, at least 24 hours ahead. This one is a real web migration, so DNS matters — unlike an outbound-only agent.
- Bulk-sync files and databases while the old site still serves.
- Verify via hosts file, as above.
- Freeze changes on the old site — stop publishing, and for a shop, expect to accept a short window of dual state or a brief maintenance page.
- Final delta sync of files and a fresh database dump.
- Switch DNS.
- Watch both servers. Traffic drains from the old one over the TTL; some visitors will hit it for a while, which is why the freeze matters.
- Reissue SSL on the new server once DNS resolves — Let’s Encrypt validation needs the domain pointing at the new box.
- Keep the old account for a fortnight. It’s the cheapest rollback there is.
The two things that make “zero downtime” a lie
Both are invisible until they’ve already happened.
Mail keeps routing to the old host. This is the big one. Your MX records are separate from your A record, so switching the website does not move email — and if your mailboxes lived on the shared account, mail continues arriving at a server you’re about to cancel. Worse, some stacks deliver locally: if the new server thinks it’s authoritative for your domain, PHP mail from a contact form can be delivered into a mailbox on the new box that nobody ever reads.
Move email first, as its own project, verify delivery, and only then move the website. If you’re keeping mail where it is, leave the MX records untouched and confirm they’re untouched after the migration.
The database gets written on both sides. During DNS propagation some visitors reach the old server and some the new one. Any write during that window — an order, a comment, a form submission, a password change — lands on whichever server that visitor hit, and the two copies then diverge with no way to merge them.
For a brochure site this doesn’t matter. For anything transactional it matters enormously, which is why the freeze in step 4 above isn’t optional for a shop. A brief maintenance page during the propagation window is the cheapest correct answer; a few minutes of downtime beats a day of reconciling two order tables.
Where to move to
Ordered by how much of the panel problem the host solves for you.
Hostinger — its VPS range ships hPanel, so there’s no separate control panel licence, and the RAM per tier is generous at the price. The easiest landing spot for someone whose main worry is losing cPanel, and the one we’d point most shared-hosting upgraders at first.
Hetzner — the cheapest per gigabyte when its CX tier is in stock (check first — it has been showing as unavailable, and the CPX fallback is several times dearer), with no panel at all. Right if you’re comfortable with SSH and want maximum hardware per pound; wrong if the reason you’re leaving shared hosting isn’t accompanied by an appetite for administration.
Hosting.com — the host formerly known as Hosting.com (formerly A2 Hosting), rebranded in 2025 after its acquisition by World Host Group. Sells managed VPS tiers aimed squarely at this upgrade path, positioned on speed. Worth knowing the name changed, because most comparisons of this migration still call it A2.
InMotion Hosting — managed VPS with a long track record in this exact migration, and US data centres.
ScalaHosting — ships SPanel, its own control panel, which exists precisely so you’re not paying a cPanel licence on top of the server. Worth a look if a cPanel-shaped interface is what you’re actually attached to.
Cloudways — a managed layer over cloud providers, so there’s no panel licence and no server administration; you pay for the management instead. The option for people who want the VPS resources without becoming a sysadmin.
GreenGeeks — managed VPS with an environmental positioning, if that’s a factor in your decision.
SiteGround — worth a correction: SiteGround no longer sells a traditional VPS. Its equivalent is fully-managed Cloud Hosting on Google Cloud, which is a different and pricier product. Consider it if you want managed infrastructure rather than a server.
For sizing, our cheapest VPS hosting index compares RAM per pound across providers, and VPS hosting under $5 covers the bottom end judged on renewal price rather than the banner.
How we checked this
cPanel licence tiers and prices are from cPanel’s own pricing page, read in August 2026: Solo at $27.46/month annual or $29.99 monthly for one account, rising to Premier at $69.99. That SiteGround’s current equivalent product is fully-managed Cloud Hosting on Google Cloud rather than a VPS is from SiteGround’s own cloud hosting page. Hostinger’s hPanel and Hetzner’s unmanaged positioning we’ve verified across our hosting coverage.
Where we’ve been deliberately general: the descriptions of Hosting.com, InMotion, ScalaHosting, Cloudways and GreenGeeks are positioning rather than verified plan specifics. We haven’t confirmed which of them currently bundle a cPanel or WHM licence in which tier, and that’s exactly the detail most likely to have changed since anyone last wrote about it — so confirm it on the plan page before you buy, because it’s worth roughly $30 a month.
What we did not do: we didn’t perform this migration for the article, and we haven’t measured TTFB on any of these hosts. The one step we’d treat as non-negotiable is the hosts-file preview — it costs nothing, takes two minutes, and it is the difference between finding your broken checkout yourself and hearing about it from a customer.
The vendor links above are affiliate links. The most useful advice on this page — that a lot of readers should stay on shared hosting and fix caching instead — earns us nothing.
FAQ
Does cPanel cost extra on a VPS?
Yes, and it’s the cost most migration guides omit. cPanel’s Solo licence for a single account is $27.46/month billed annually, or $29.99 monthly — often more than the VPS. Avoid it by choosing a host that bundles its own panel, one that includes cPanel in a managed plan, or by running without a panel.
When should I move from shared hosting to a VPS?
When you’re hitting CPU or entry-process limits, when uncached TTFB stays above a second after caching is properly configured, or when you need root for Docker, a specific extension or a background process. Otherwise the money is better spent on caching.
How do I test the new server before switching DNS?
Add the new server’s IP against your domain in your local hosts file. Your machine resolves the real hostname to the new server while everyone else still sees the old one, so you can test logins, checkout and admin under the real domain with no risk. Remove the entry afterwards.
What’s in a cPanel full account backup?
Files, databases, email accounts, cron jobs and DNS zone records. Restoring it cleanly expects WHM on the destination — but the archive is a normal tarball, so you can extract homedir/ and the mysql/ dumps manually if you’re not running WHM.
Will my email survive the migration?
Only if you plan for it. Email is inside the cPanel backup but is the most fiddly part to reconstitute, and running a mail server is a real ongoing commitment. Many people moving off shared hosting are better off moving email to a dedicated provider at the same time.
How long is the downtime?
Close to zero if you build first and switch DNS last, with a low TTL set a day ahead. The risk isn’t downtime, it’s the window where both servers accept writes — which is why you freeze changes before the final sync.
Should I choose managed or unmanaged?
Unmanaged is dramatically cheaper per gigabyte and makes patching, backups and security your responsibility. If the reason you’re leaving shared hosting is resources rather than a desire to administer servers, a managed VPS or a managed layer like Cloudways will cost more and annoy you less. We break down what “managed” actually covers — and what it explicitly doesn’t — in managed vs unmanaged VPS.