Moving a $5 VPS to a different provider usually saves $2–$4 per month, which is $24–$48 per year. The move itself costs time: four to eight hours of migration labour, plus a DNS propagation window, plus whatever revenue or sign-ups stop during the cutover. For a personal project that arithmetic still works. For anything with a checkout page or an inbox, the migration can cost more than two years of the savings — and the number is computable before you start.
This article builds that number from three inputs: downtime hours, the value of the traffic lost, and the labour to move and verify the stack. It then covers the setting that decides outage length — DNS TTL. Start with our provider comparison table on the target host’s renewal terms: a move to a plan that raises prices in month thirteen amortises over one year, not three.
Downtime is a cost multiplier, not a fixed fee
Downtime is a rate multiplied by a duration, not a binary. A store doing $120/day gross at 30% margin loses $36/day of profit — about $0.025 per minute — plus abandoned carts, lost ad spend and support time that never appear in the margin figure.
The multiplier depends on how traffic is distributed through the day. A B2B site with peak hours between 9am and 5pm suffers far more from a Tuesday noon cutover than the same site moved at 2am Sunday. Measure the shape of your traffic before choosing a window, rather than defaulting to “late at night” on the assumption that nobody is awake anywhere.
The downtime cost arithmetic, on real numbers
The table uses four common budget workloads and three outage lengths. The revenue column is a gross loss estimate, so it compares directly with the annual savings of the move.
| Workload | Daily gross value | 1 hour | 4 hours | 24 hours |
|---|---|---|---|---|
| Personal blog, no revenue | $0 | $0 | $0 | $0 |
| Affiliate content site | $40 | $1.67 | $6.67 | $40 |
| Small WooCommerce store | $300 | $12.50 | $50.00 | $300 |
| SaaS app, 200 paying users | $800 | $33.33 | $133.33 | $800 |
Two conclusions follow. First, for a blog with no revenue, downtime cost is zero and migration labour dominates the total — a four-hour move against $36/year of savings is a $124 net loss in the first year at a $40/hour opportunity cost. Second, for the SaaS case, a four-hour outage exceeds three years of the savings, which means the migration should either be near-zero downtime or not happen at all.
Migration labour: hours you will actually spend
Budget labour by stack, not optimism. A static site with DNS and TLS is 2–3 hours. WordPress with a database, uploads and mail is 4–6 hours plus 1–2 of verification. A Docker stack with its own reverse proxy and volumes is 6–10 hours, and add 2 if the new provider uses a different panel.
That is effort before anything goes wrong. A missed cron job, an unrecorded .env variable or an SMTP allowlist entry is normal and costs 20–60 minutes each. A realistic WordPress figure is 8 hours end to end — $320 at $40/hour, seven to thirteen years of the annual saving. The move is justified by performance or reliability, not price.
DNS TTL: the setting that decides your outage length
DNS records carry a TTL — time to live — in seconds, which tells resolvers how long to cache the answer. A 24-hour TTL (86400) means a resolver that looked up your A record this morning may still hand out the old IP tomorrow morning. If you change the record and the old server is already gone, those users get a connection error for up to a full TTL.
The fix is to lower the TTL in advance, not during the move. Set it to 300 seconds (5 minutes) at least 48 hours before cutover — two old TTLs, so every cached copy has expired — and leave it low through the verification window. Raise it back to 3600 or higher a week after the move, once the new IP is confirmed. That single change turns a worst-case 24-hour outage into a five-minute one.
Pre-cutover TTL checklist
- T−72h: Record current TTLs for A, AAAA, CNAME, MX and TXT records. Note them in one file, with current values.
- T−48h: Lower the A/AAAA TTL to 300 seconds. Verify with
dig +noall +answer yourdomain.comthat the authoritative server returns 300. - T−24h: Confirm propagation by querying two public resolvers (1.1.1.1 and 8.8.8.8); both must show TTL 300 or lower.
- T−24h: Lower the MX TTL to 300 as well if mail moves with the site. Do not touch MX content yet.
- T−12h: Snapshot and restore the database to the new host; run a full crawl or
curl -Ipass against the new IP using a hosts-file override. - T−1h: Set the new A record, keep the old server running and serving. Do not power it off.
- T+0 to T+1h: Watch 4xx/5xx rates and TLS errors. Roll the A record back if error rates exceed 1%.
- T+7d: Raise TTL back to 3600, then decommission the old server and cancel only after final invoices are settled.
Keeping the old server alive through propagation is the most effective rollback measure available. It costs one extra month of the old plan — typically $3–$6 — and turns a failed migration into a DNS revert that resolves within one TTL.
Putting the three costs together
For the affiliate content site above moving to save $36/year: 8 hours of labour at $40/hour is $320, downtime of one hour is $1.67, and the old server kept a month adds $5. Total cost of the move is about $327 against $36/year of savings — a payback period of nine years. That does not make the move wrong, but it means the honest justification is a better host, not a cheaper one.
For the SaaS case: 10 hours of labour is $400, a one-hour outage at the wrong time of day is $33, rollback capacity $10 — $443 against $36/year. Here the move is a decision about reliability and support response, scheduled for the lowest-traffic hour with a tested rollback.
When the numbers say migrate, and when they say stay
Migrate when the total cost of moving is recovered inside twelve months by something other than the price difference — a documented SLA, a support team that answers in minutes, or a performance gain you have measured. Stay when the only argument is a few dollars a month and the current host passes the basics: stable network, working backups, a real human on tickets within 24 hours.
If you do move, write the estimate down before touching DNS. Most teams find the labour was double the estimate and downtime was the cheapest part — which is why the TTL reduction belongs 48 hours ahead, and the old box stays on until the new one proves itself. Our VPS plans and pricing list renewal rates and included transfer, so the savings side needs no support ticket.
