Skip to main content

Free first year = infinite markup: promo domains, dissected

How the math breaks

What the promos actually look like

RegistrarTLDYear 1RenewalJumpTen-year total
IONOS.store$1.00$79.50+7850%$716.50
IONOS.online$1.00$62.50+6150%$563.50
IONOS.site$1.00$57.40+5640%$517.60
IONOS.com$1.00$20.00+1900%$181.00
GoDaddy.store$5.20$90.50+1640%$819.70
OVHcloud.store€2.98€49.50+1561%≈ €448.48
Namecheap.store$3.82$61.95+1522%$561.37
Spaceship.store$3.35$50.90+1419%$461.45
Steepest year-1 → renewal jumps in our captured catalog (verifiedAt 2026-08-20, 12 registrars × 32 TLDs). The .store rows renew in the same $50–$91 range — only the promo depth differs. EUR rows normalized at 1.08 for USD comparison.

Look at what unifies that table: everyone is racing to renewals in the $20–$91 range from different depths of loss-leader. The .store first-year prices range from $1.00 to $5.20 across registrars — while every one of them lands on a steep ongoing price set at or near registry rates plus the registrar's margin. That is the signature of a promo war: the discount competes for your checkout click, and the renewal pays for it. OVHcloud's €49.50 renewal on .store, once normalized via `fx.ts` at 1.08, is ≈$53.46 — still behind GoDaddy's $90.50, but the depth of the promo ($1 vs $5.20) does not tell you that. None of these numbers are secret; they're just never shown next to each other in the flows that sell domains, because showing them next to each other kills the promo's magic. The table also exposes why percentages explode as entry approaches zero: IONOS's $1→$79.50 is +7850%, while GoDaddy's $5.20→$90.50 is only +1640%, yet GoDaddy renews eleven dollars higher every year thereafter. Percentage measures marketing depth; renewal measures cost.

Infinite, not zero: the honest rendering

Our compute layer (`domain-tld-compute.ts`) handles the edge exactly once and in one place. If year1Cost === 0 and annualRenewal > 0, renewalHikePct is set to Number.POSITIVE_INFINITY — mathematically correct, since any positive annual cost over a zero entry is an unbounded multiple. If year1Cost > 0, the hike is Math.round(((annualRenewal − year1Cost) / year1Cost) * 100). The serializer `formatRenewalHikePct` then renders infinity as the intentional glyph "∞" everywhere — table cell, CSV export, and share-link — rather than letting JavaScript's "Infinity" leak into a spreadsheet or being normalized to "0". We chose the glyph after watching exports: the HTML page could show "∞" while the CSV it generated wrote "Infinity", a cosmetic divergence that made the export look like a bug. Two registrars with simultaneous $0 promos now correctly compare as equal (0 === 0 in the numeric ladder's cmpNum, not NaN from Infinity − Infinity), and their final tie-break is the next key in the deterministic composite — renewalHikePct is the second key in the ladder, not the first, so a free-first-year pair never outranks a cheaper TCO on percentage alone. The same ∞ handling applies to portfolio math: two domains with one free and one paid entry but the same ten-year total will badge ∞ while sorting identically on totalCostUsd.

Ten-year totals are the antidote

  • If a comparison site shows a 0% hike next to a $0 first-year offer, its math is broken — treat every number on that page with suspicion, not just that row.
  • Infinity is the honest percentage for a free first year; we render it explicitly as ∞ rather than rounding predation into innocence or hiding it in a blank cell.
  • Promo depth tells you about marketing budgets, not value: the deeper the first-year discount, the higher the true ongoing cost tends to be — compare ten-year totals, not first-year headlines.
  • EUR promo math stacks: IONOS's €2.98 → €49.50 looks smaller in euros than dollars until you normalize — then the true gap appears. Check the FX piece for that correction.
  • Always compute your holding-period total before checkout: 1-year thinking is exactly what the promo is optimized for — 10-year thinking collapses it.

Who this protects, and how to shop past it

If you buy one domain for a personal site, the ∞ badge is a warning label: do not sort by first-year price, and do not let a marketplace that sorts by entry skim you into a registrar whose renewal you never saw. Sort by renewal (annualRenewalUsd) or, better, by ten-year TCO — the same discipline we bring to VPS SLA tradeoffs, where €4.99 can be excellent compute-per-euro with a 95% contractual window, and to email deliverability where a free tier can be free per month but capped per day. If you manage a portfolio — brand domain, docs, staging, defensive typos across .store/.online/.site — the promo war taxes you once per TLD; the defense is a rules-based ranking that ignores entry price entirely, which is what our domain TCO rankings give you when you toggle to the renewal ladder. The same ∞-safe logic applies portfolio-wide: if any row in a mixed-cart average hides a $0 entry, the average hike becomes ∞ rather than a diluted finite number — the flag propagates, not the lie.

Every row cited here is captured data with a timestamp (verifiedAt 2026-08-20, 384 rows), not a scraped marketing claim — and the interactive version lets you flip between ten-year totals and per-year renewal rates so you can watch the promo war collapse into a plain ranking, with ICANN fees single-counted and EUR amounts normalized at the shared 1.08 hint.

Sources & provenance