Compare VPS quotes on a 12-month basis
Updated 2026-11-08 · Method page, no product prices.
A plan advertised at $4.50/month and a plan advertised at $199/year are not comparable as written. One may include a setup fee, the other may renew at a different rate. The only fair comparison is the total cost over the period you will actually use the server.
All numbers on this page are illustrative arithmetic, not quotes. We do not publish current provider prices because we have not re-verified them. See the list of fields we deliberately do not assert.
The formula
12-month total =
(unit_price × quantity × periods_per_year)
+ (recurring_add_ons × 12)
+ one_time_fees
- discounts
monthly_equivalent = 12-month total ÷ 12
periods_per_year is 12 for a monthly plan and 1 for an annual plan. A one-time fee is added once, not multiplied.
Worked example
| Quote | Basis | Fees | 12-month total |
|---|---|---|---|
| A | 9.50 / month × 2 units | 25 one-time setup | 253.00 |
| B | 199 / year × 1 unit | none listed | 199.00 |
| C | 8.00 / month × 2 units | 5 / month support | 252.00 |
These are the same illustrative inputs used by our open-source normalizer. They are not offers from any provider.
What usually breaks the comparison
- Renewal price differs from the introductory price. A first-year total tells you nothing about year two.
- Tax treatment is unstated. Checkout can be higher than the displayed figure.
- Currencies differ. Do not convert or rank across currencies without a stated rate and date.
- Commitment period is missing. A monthly figure may assume a multi-year prepay.
- Add-ons are quoted separately. Backups, control panels and extra IPv4 addresses change the total.
The rule for missing fields
Do not fill them in. A missing commitment period is reported as an unknown, and the quote is excluded from a single "lowest price" verdict. Our matcher applies the same discipline: it returns rejections with reasons rather than a score.
Try it
The quote-normalizer is a pure Python function with a CLI. It computes the total, prints a step-by-step trace, and lists unknowns. It does not extract PDFs, convert currencies, or recommend a supplier.
python3 cli.py quotes.json --trace
Some links on this site are affiliate links; full disclosure. Limitations are listed even when they make a product less attractive.