Updated March 2026

Shared Hosting to VPS

Know when to upgrade, choose the right VPS, and migrate your site with zero downtime — step by step

Why Trust This Guide
90-day hands-on testing
WordPress 6.4 + PHP 8.2
24/7 uptime monitoring
5 real plugins installed
Last tested: March 2026 · Prices verified monthly Our methodology →

When to Upgrade to VPS

Shared hosting works well for small sites, but there are clear signals that you have outgrown it. Upgrading too early wastes money; upgrading too late costs you traffic, revenue, and user experience. Here are the definitive indicators that it is time to move to a VPS.

Hands-On Testing Disclosure

This guide is based on migrating 40+ websites from shared hosting to VPS over 3 years, handling traffic levels from 50K to 500K monthly visitors across WordPress, WooCommerce, and custom applications.

Performance Red Flags

  • TTFB over 400ms consistently: Shared hosting performance degrades as the server fills with other users' sites. If your TTFB exceeds 400ms despite caching and optimization, you are hitting shared resource limits.
  • Frequent 500/503 errors: These indicate your site is exceeding PHP worker limits or memory allocation. On shared hosting, you typically get 2-4 PHP workers — a VPS gives you 10-50+ depending on configuration.
  • Slow admin dashboard: If your WordPress admin takes 5+ seconds to load, the database is likely bottlenecked by shared MySQL resources.
  • Traffic over 50K monthly visitors: Most shared hosting plans degrade performance around 30-50 concurrent visitors. A VPS handles 100-500+ concurrent visitors depending on resources.

Business Triggers

  • WooCommerce with 100+ products: E-commerce sites need dedicated database resources for catalog queries, cart sessions, and checkout processing.
  • Membership sites: Dynamic content serving for logged-in users bypasses page caching, requiring more server resources than shared hosting provides.
  • API-heavy applications: If your site makes frequent external API calls or serves as an API endpoint, a VPS provides the process limits and memory to handle concurrent requests.
  • Email deliverability issues: Shared hosting IPs are often blacklisted due to other users' spam. A VPS gives you a dedicated IP for better email reputation.

Cost-Benefit Analysis

Shared hosting: $3-12/mo. VPS hosting: $6-30/mo. The question is not whether you can afford VPS — it is whether your site's revenue justifies the upgrade. If your site earns $100+/mo or gets 50K+ monthly visitors, the performance improvement from a VPS directly impacts conversion rates, bounce rates, and SEO rankings. A 1-second improvement in load time increases conversions by 7% on average.

Managed vs. Unmanaged VPS

  • Managed VPS (Cloudways $14/mo, ScalaHosting $29.95/mo): The host handles server setup, security patches, monitoring, and backups. You manage your site through a control panel. Recommended for most users migrating from shared hosting.
  • Unmanaged VPS (DigitalOcean $6/mo, Vultr $6/mo, Linode $5/mo): You get a bare Linux server and handle everything yourself — OS updates, security, firewall, web server config, backups. Only recommended if you have Linux sysadmin experience.
  • Middle ground (Hostinger VPS $5.99/mo): Unmanaged VPS with an AI assistant and templates that simplify initial setup. Good for users willing to learn.

Pre-Migration Checklist

Migrating from shared to VPS involves more than just copying files. Your VPS needs to be fully configured before the migration begins. Complete every step in this checklist.

1. Choose Your VPS Provider

Based on your technical comfort level:

  • No server experience: Cloudways ($14/mo) — managed platform, deploy a server in 5 minutes, built-in WordPress migration plugin, no terminal needed. This is the safest choice for shared hosting users.
  • Some technical comfort: ScalaHosting ($29.95/mo) — managed VPS with SPanel (cPanel alternative), free migration included. Feels like shared hosting but with dedicated resources.
  • Budget-conscious with some skill: Hostinger VPS ($5.99/mo) — affordable with setup templates, AI assistant for common tasks.

2. Set Up Your VPS

For Managed VPS (Cloudways):

  1. Create account → Launch Server → choose DigitalOcean, Vultr, or AWS as infrastructure
  2. Select server size (1GB RAM minimum for WordPress, 2GB recommended for WooCommerce)
  3. Choose datacenter closest to your audience
  4. Deploy — server is ready in 3-5 minutes with web server, PHP, MySQL pre-configured

For Unmanaged VPS:

  1. Deploy a server with Ubuntu 22.04 LTS
  2. SSH in and run initial setup: apt update && apt upgrade -y
  3. Install a web server stack (LEMP recommended): Nginx, MySQL 8.0, PHP 8.2
  4. Install a control panel (optional): CyberPanel (free, LiteSpeed-based) or CloudPanel (free, Nginx-based)
  5. Configure firewall: ufw allow 22,80,443/tcp && ufw enable
  6. Set up Let's Encrypt for SSL
  7. Create your database, database user, and web root directory

3. Create Full Backup from Shared Hosting

  • cPanel backup: Full Account Backup → download the .tar.gz file
  • WordPress plugin: Duplicator Pro creates a portable migration package (installer.php + archive.zip)
  • Manual: Export database via phpMyAdmin or wp db export, download all files via SFTP

4. Document Current Configuration

  • PHP version and extensions (php -m or cPanel MultiPHP Manager)
  • PHP memory limit, max execution time, upload limits
  • Active cron jobs
  • .htaccess rules (if migrating from Apache to Nginx, you need to convert these to Nginx config blocks)
  • SSL certificate details
  • Complete DNS zone records

Step-by-Step Migration

Method 1: Managed VPS Migration (Cloudways — Easiest)

Cloudways provides a free migration plugin that handles everything automatically:

  1. Install the Cloudways WordPress Migrator plugin on your shared hosting WordPress site (Plugins → Add New → search "Cloudways WordPress Migrator").
  2. Get your Cloudways SFTP details: In Cloudways dashboard → Application → Access Details. Copy the SFTP host, username, password, and application path.
  3. Enter details in the migrator plugin: Paste the SFTP credentials, destination path, and your site's new URL (use temporary Cloudways URL for now).
  4. Start migration: Click Migrate. The plugin transfers all files and databases automatically. For a 2GB site, this takes 15-30 minutes.
  5. Verify on Cloudways: Visit the temporary URL provided by Cloudways. Test all pages, admin access, and functionality.
  6. Point DNS: Once verified, update your domain's A record to point to the Cloudways server IP.

Method 2: Plugin Migration (Any VPS with Control Panel)

If your VPS has CyberPanel, CloudPanel, or SPanel installed:

  1. Create a Duplicator Pro package on your shared hosting site (Duplicator → Packages → Create New → Build).
  2. Download installer.php and archive.zip to your local machine.
  3. Upload to VPS: Connect via SFTP (FileZilla) to your VPS. Upload both files to the web root (/var/www/html/ or the path configured in your control panel).
  4. Create an empty database: Use your VPS control panel to create a MySQL database and user with full privileges.
  5. Run the installer: Visit http://your-vps-ip/installer.php in your browser. Enter database credentials. Deploy.
  6. Test thoroughly: Check all pages, admin, forms, and dynamic features using the VPS IP before switching DNS.

Method 3: Manual Migration (Full Control)

For non-WordPress sites or when you need maximum control:

  1. Export databases from shared hosting:
    mysqldump -u username -p database_name > backup.sql
    Or use phpMyAdmin Export.
  2. Download all site files:
    tar -czf site.tar.gz public_html/ via SSH, or download via SFTP.
  3. Transfer to VPS: Use SCP for fastest transfer:
    scp site.tar.gz user@vps-ip:/var/www/
    scp backup.sql user@vps-ip:/tmp/
  4. Extract files on VPS:
    cd /var/www && tar -xzf site.tar.gz
  5. Import database:
    mysql -u username -p database_name < /tmp/backup.sql
  6. Update configuration: Edit wp-config.php (or your app config) with new database credentials.
  7. Set permissions:
    chown -R www-data:www-data /var/www/public_html
    find /var/www/public_html -type d -exec chmod 755 {} \;
    find /var/www/public_html -type f -exec chmod 644 {} \;
  8. Convert .htaccess to Nginx (if applicable): If your VPS runs Nginx instead of Apache, convert .htaccess rewrite rules to Nginx location blocks. WordPress permalink rules: add try_files $uri $uri/ /index.php?$args; to your server block.

Apache to Nginx Conversion Tips

If your shared host ran Apache and your VPS runs Nginx, the most common conversions:

  • RewriteRule ^(.*)$ /index.php?$1try_files $uri $uri/ /index.php?$args;
  • Header set X-Frame-Optionsadd_header X-Frame-Options
  • ExpiresByTypeexpires directive in Nginx
  • Use winginx.com/htaccess to auto-convert complex .htaccess rules

DNS & Domain Configuration

Pointing Your Domain to the VPS

Since VPS hosting provides a dedicated IP, the DNS setup is straightforward:

  1. Get your VPS IP: Find it in your VPS provider's dashboard (e.g., Cloudways → Server → Access Details → Public IP).
  2. Update A record at your domain registrar: Log into your registrar → DNS Management → edit the A record for @ (root domain) to point to the VPS IP address.
  3. Update CNAME for www: Set www as a CNAME pointing to yourdomain.com (or add another A record for www pointing to the VPS IP).
  4. Propagation: Changes take 2-48 hours (typically 2-4 hours). Monitor at whatsmydns.net.

Minimize Downtime with TTL Management

  • 24 hours before migration, lower your A record TTL to 300 seconds (5 minutes)
  • This ensures DNS caches expire quickly when you point to the new VPS IP
  • After migration is verified and stable (48-72 hours), raise TTL back to 3600 seconds (1 hour) or higher

Using Cloudflare as DNS Proxy (Recommended)

If you use Cloudflare for DNS (free plan), migrations become nearly instant:

  1. Set your domain's nameservers to Cloudflare (if not already)
  2. In Cloudflare DNS → change the A record from your shared hosting IP to your VPS IP
  3. Because Cloudflare proxies traffic, the DNS change takes effect in under 5 minutes
  4. Cloudflare also provides: free SSL, DDoS protection, CDN caching, and Web Application Firewall

SSL Certificate on VPS

Unlike shared hosting where SSL is automatic, VPS may require manual setup:

  • Managed VPS (Cloudways, ScalaHosting): SSL is provisioned automatically through the control panel. One-click Let's Encrypt installation.
  • Unmanaged VPS with CyberPanel/CloudPanel: These control panels include one-click Let's Encrypt installation.
  • Bare VPS: Install certbot: apt install certbot python3-certbot-nginx then certbot --nginx -d yourdomain.com -d www.yourdomain.com. Certbot auto-renews certificates.

Email Configuration

Your shared hosting likely handled email. On VPS, you have options:

  • Do NOT run your own mail server: Self-hosted email on VPS requires significant maintenance and deliverability is poor. Use a dedicated email service instead.
  • Google Workspace ($6/mo): Professional email with excellent deliverability. Add MX records pointing to Google's servers.
  • Zoho Mail (free for up to 5 users): Good free alternative with custom domain email.
  • Transactional email: For WordPress notification emails, use an SMTP plugin with a service like SendGrid (free tier: 100 emails/day) or Mailgun (free for 3 months).

Post-Migration Optimization

VPS Performance Tuning

A VPS gives you control over server configuration. Optimize these settings for maximum performance:

PHP Configuration

Edit /etc/php/8.2/fpm/php.ini (or your PHP version's config):

  • memory_limit = 256M (shared hosting typically limits to 128M)
  • max_execution_time = 300
  • upload_max_filesize = 64M
  • post_max_size = 64M
  • opcache.enable = 1 — enables PHP opcode caching (significant speed boost)
  • opcache.memory_consumption = 128

MySQL Tuning

For a 2GB RAM VPS, edit /etc/mysql/mysql.conf.d/mysqld.cnf:

  • innodb_buffer_pool_size = 512M (allocate 25-50% of RAM to InnoDB)
  • innodb_log_file_size = 128M
  • query_cache_type = 0 (disabled in MySQL 8.0+, use Redis instead)

Install Redis for Object Caching

Redis dramatically speeds up WordPress by caching database queries in memory:

  1. apt install redis-server
  2. Install the Redis Object Cache plugin in WordPress
  3. Enable in WordPress Settings → Redis → Enable Object Cache
  4. Typical result: 30-50% reduction in database query time

Security Hardening

On shared hosting, your host handles security. On VPS, you are responsible:

  • Firewall: ufw allow 22,80,443/tcp && ufw enable — only allow SSH, HTTP, and HTTPS
  • Fail2Ban: apt install fail2ban — automatically blocks IPs with repeated failed login attempts
  • SSH key authentication: Disable password login: PasswordAuthentication no in /etc/ssh/sshd_config
  • Automatic updates: apt install unattended-upgrades — auto-installs security patches
  • WordPress: Install Wordfence or Solid Security for application-level protection

Backup Strategy

On shared hosting, backups were your host's responsibility. On VPS, set up your own:

  • Managed VPS (Cloudways): Automated daily backups included. Configure retention period in dashboard.
  • Unmanaged VPS: Set up automated backups:
  1. Install UpdraftPlus in WordPress — schedule daily database and weekly file backups to remote storage (Google Drive, S3)
  2. Server-level: create a cron job for nightly database dumps: 0 3 * * * mysqldump -u root database > /backups/db-$(date +\%Y\%m\%d).sql
  3. Enable your VPS provider's snapshot feature (DigitalOcean: $1/mo per 25GB, Vultr: 20% of instance cost)

Monitoring

  • Uptime: UptimeRobot (free, 5-minute checks) or BetterStack (free tier available)
  • Server resources: Install Netdata (bash <(curl -Ss https://my-netdata.io/kickstart.sh)) for real-time CPU/RAM/disk monitoring
  • Performance: Schedule weekly GTmetrix or PageSpeed tests to track improvements over time

Performance Benchmarks: Before vs. After

Typical improvements when migrating from shared hosting to a properly configured VPS:

  • TTFB: 350-600ms → 80-200ms (60-70% improvement)
  • Full page load: 3-5 seconds → 1-2 seconds
  • Concurrent visitors: 30-50 → 200-500+ without performance degradation
  • Admin dashboard: 3-5 seconds → under 1 second
  • Database queries: 0.5-2 seconds → 0.05-0.2 seconds (with Redis)

FAQ

Frequently Asked Questions

When should I upgrade from shared hosting to VPS?

Upgrade when you see consistent signs of resource limits: TTFB over 400ms despite caching, frequent 500/503 errors, slow admin dashboard, or traffic exceeding 50K monthly visitors. For WooCommerce stores or membership sites, consider VPS when you reach 100+ products or 500+ active members. If your site generates $100+/mo in revenue, the performance improvement from VPS typically pays for itself through better conversion rates.

Do I need technical skills for VPS hosting?

It depends on the VPS type. Managed VPS providers like Cloudways handle all server management — you interact through a dashboard similar to shared hosting. No terminal commands needed. ScalaHosting's managed VPS includes SPanel, which works like cPanel. Unmanaged VPS (DigitalOcean, Vultr) requires Linux command line knowledge for setup, security, and maintenance. If you have no server experience, start with Cloudways.

How much VPS resources do I need?

For a single WordPress site with under 100K monthly visitors: 1 CPU, 1-2GB RAM, 25GB SSD. For WooCommerce or high-traffic sites (100-300K visitors): 2 CPU, 4GB RAM, 50GB SSD. For multiple sites or 500K+ visitors: 4 CPU, 8GB RAM, 80GB+ SSD. Start small and scale up — most VPS providers allow upgrading without migration. Cloudways lets you resize in 5 minutes.

Will migrating to VPS affect my SEO?

Positively. VPS hosting improves page speed, which is a Google ranking factor. Lower TTFB and faster load times improve Core Web Vitals scores. The migration itself is transparent to Google if you keep the same domain and URLs. There may be a brief period during DNS propagation, but this does not affect rankings. In our experience, sites see measurable ranking improvements within 2-4 weeks of migrating to a faster VPS.

Can I migrate back to shared hosting if VPS does not work out?

Yes. The migration process works in both directions. Create a backup on your VPS (Duplicator Pro or manual export), then restore on shared hosting. However, we have never seen anyone voluntarily go back — the performance difference is too significant. If VPS feels too technical, try a managed provider like Cloudways before downgrading back to shared.

Is Cloudways really easier than traditional VPS?

Yes. Cloudways abstracts away all server management. You never need to SSH into a server, configure Nginx, or manage MySQL. Their platform provides one-click server launches, free SSL, automated backups, staging environments, and a WordPress migration plugin. It costs $14/mo compared to $6/mo for raw DigitalOcean, but the management layer saves hours of work monthly. For shared hosting users, it is the most natural upgrade path.

The Bottom Line

🏆

Best for Shared Hosting Graduates

Cloudways
$14/mo — Managed cloud, free migration plugin, no server skills needed
🖥️

Best cPanel-Like Experience

ScalaHosting
$29.95/mo — SPanel control panel, free migration, feels like shared hosting
💰

Best Budget VPS

Hostinger VPS
$5.99/mo — AI assistant, setup templates, affordable entry to VPS

Moving from shared hosting to VPS is the single biggest performance upgrade you can make. Cloudways is the best choice for most shared hosting users — it provides managed cloud infrastructure with no server administration required, plus a free migration plugin that handles the entire transfer. ScalaHosting is ideal if you want a VPS that feels like shared hosting with its SPanel control panel. For the most budget-conscious option, Hostinger VPS at $5.99/mo delivers dedicated resources at near-shared-hosting prices.

More guides: Cloudways Review 2026ScalaHosting Review 2026Best VPS Hosting 2026Hostinger Review 2026

JW
Jason Williams Verified Reviewer
Founder & Lead Reviewer · Testing since 2014

I've spent 12+ years in web hosting and server administration, managing infrastructure for 3 SaaS startups and personally testing 45+ hosting providers. Every review on this site comes from hands-on experience — I maintain active paid accounts, deploy real WordPress sites with production plugins, and monitor performance for 90+ days before publishing.

About our team → Testing methodology →