Dev.to WebDev πŸ›  Dev πŸ‘ 0 πŸ“– 2 min read

That $2.57 domain renews at $43.77: check the renewal price before you register

You find a good name for a side project. The registrar shows .store for $2.57, you register it, and a year later the renewal email says $43.77. Nothing went wrong. Many extensions are priced this way on purpose: a low f

You find a good name for a side project. The registrar shows .store for $2.57, you register it, and a year later the renewal email says $43.77.

Nothing went wrong. Many extensions are priced this way on purpose: a low first year to get the registration, and the real price from year two. The renewal price is published, but checkout pages put the first-year price front and centre.

How big the gap is

I keep a weekly snapshot of one registrar's public list prices (Porkbun) for 532 extensions. In the snapshot from 9 November 2026:

  • 309 of the 532 extensions renew at 2Γ— their first-year price or more.
  • 188 renew at 5Γ— or more.

The first year tells you little about what a name costs to keep. Here are five years of ownership (first year plus four renewals) for some extensions developers often buy:

Extension First year Renewal 5 years
.xyz $2.04 $14.21 $58.88
.com $11.81 $11.81 $59.05
.dev $8.75 $12.87 $60.23
.app $8.75 $14.93 $68.47
.online $1.96 $28.84 $117.32
.shop $2.06 $31.41 $127.70
.co $15.76 $31.20 $140.56
.store $2.57 $43.77 $177.65
.tech $6.99 $50.98 $210.91
.io $28.12 $51.80 $235.32
.ai $82.70 $82.70 $413.50

.online costs less than .com in year one and about twice as much over five years. .ai is expensive from day one, but at least it doesn't change.

These are one registrar's list prices on one date, in USD. Other registrars price differently, and promotions change often, so treat the table as a reason to check rather than as a quote.

Check it yourself in a few lines

Porkbun publishes its prices at an endpoint that needs no API key. This prints the extensions whose renewal is at least five times the first year:

const res = await fetch("https://api.porkbun.com/api/json/v3/pricing/get", {
  method: "POST",
  headers: { "content-type": "application/json" },
  body: "{}",
});
const { pricing } = await res.json();

const rows = Object.entries(pricing)
  .map(([tld, p]) => ({
    tld,
    first: Number(p.registration),
    renewal: Number(p.renewal),
  }))
  .filter((r) => r.first > 0 && r.renewal / r.first >= 5)
  .sort((a, b) => b.renewal / b.first - a.renewal / a.first);

console.table(rows.slice(0, 20));

It runs in Node 18+ (save it as an .mjs file) or in the browser console.

Before you register

  1. Look for the renewal price, not just the first-year price. Most registrars list both on their pricing page.
  2. Multiply it out over the years you expect to keep the name.
  3. If you're choosing between two extensions, compare the renewals. The cheaper first year often turns out to be the dearer domain.

The full table for all 532 extensions, updated weekly, is on GitHub as CSV under CC BY 4.0: AlonDrilich/tld-renewal-prices (DOI 10.5281/zenodo.24082643). There's also a sortable version at namesale.store/renewal-prices.

Not affiliated with Porkbun. Its endpoint is simply the easiest public source to snapshot.

πŸ“° Read the original article on Dev.to WebDev

Originally published by Dev.to WebDev. Aggregated on AIWithGhost for educational purposes β€” full credit and traffic to the original publisher.