Skip to main content

The hidden ICANN fee: who includes the $0.18 and who tacks it on

There is a small tax hiding inside every generic domain name you own: ICANN — the Internet Corporation for Assigned Names and Numbers — levies a flat $0.18 per domain per year on every registered gTLD (.com, .net, .org, .info, .biz, .app, .dev and the rest). It is mandatory, it is universal, and whether you ever see it as a separate line at checkout depends entirely on how your registrar prices things. Some absorb it into the advertised price; some add it on top, per domain, per year, forever. We captured pricing for all twelve registrars in our domain TCO tool with an explicit per-row flag for which model each one uses — `icannFeeIncluded` true/false across 384 price rows (12 registrars × 32 TLDs, verifiedAt 2026-08-20) — and the answer splits cleanly enough to be honest about in one paragraph and to have fooled us in code for a while.

Who includes it

Eleven of the twelve registrars we captured price ICANN-inclusive across their entire catalog: Cloudflare, Porkbun, Spaceship, Dynadot, NameSilo, Namecheap, Gandi, OVHcloud, Hover, Squarespace, and IONOS. That's 352 of the 384 price rows in our catalog. For these registrars, the number on the pricing page is the number on the invoice — $9.15 at Cloudflare is $9.15 all-in, €10.07 at OVHcloud is €10.07 all-in, $10.68 at Porkbun is $10.68 all-in. The inclusive model makes comparison honest by default: when every site quotes pre-fee numbers, the inclusive registrars look identical to the itemized ones until the itemized one's checkout line appears. We flag it explicitly so the TCO ranking does not need to guess.

Who adds it on top

One registrar in our catalog itemizes the fee: GoDaddy marks all 32 of its captured TLD rows as `icannFeeIncluded: false`, so $0.18 per domain per year appears as its own line at checkout. On a single .com that's $0.18 a year — rounding error. But the fee scales with portfolio size and time: ten domains over ten years is $18 of pure line-item noise ($0.18 × 10 × 10), a hundred domains over ten years is $180, and more importantly, it makes GoDaddy's headline prices look fractionally cheaper than they are at exactly the moment comparison shoppers are reading them. A $11.99 .com is really $12.17; a $23.19 renewal is really $23.37. Over the same ten-year horizon we use for the renewal trap ranking, GoDaddy's headline $23.19 renewal understates the decade by $1.80 per domain — not enough to swing a single-domain decision, but enough to be the entire gap between two mid-table competitors once the board is normalized to USD via the shared 1.08 hint from `fx.ts`.

Why this matters more than $0.18

The ICANN fee itself will never decide a purchase. What matters is what the flag reveals: whether a registrar's listed price is a complete price. Itemized fees are not evil by themselves — some argue they make cost structures transparent — but they interact badly with comparison shopping, because aggregators and marketplace listings almost always quote the pre-fee number, whether they intend to or not. Any registrar that adds mandatory fees on top gains a systematic appearance-of-cheapness in every table that doesn't normalize for it. The same pattern shows up with WHOIS-privacy upsells (our catalog stores a per-TLD privacy flag too) and with renewal jumps (where the "jump" percentage hides the absolute renewal price): the honest comparison unit is the all-in second-year price, which is exactly what our TCO rankings compute — including the ICANN fee exactly once, from whichever side of the flag it comes, and normalizing EUR rows at 1.08 so Gandi's €11.90 (≈$12.85) and OVHcloud's €10.07 (≈$10.88) are compared honestly against dollar rivals.

The method, including the mistake

Our catalog stores `icannFeeIncluded` per price row with capture dates (verifiedAt 2026-08-20 for the current 384-row pass), so the comparison stays checkable rather than anecdotal. The compute step in domain-tld-compute.ts single-counts: icannFeeTotal = $0.18 × icannBillableDomainCount × years, where icannBillableDomainCount counts only domains whose price row has icannFeeIncluded !== true. Before 2026-08-22, the engine initialized icannBillableDomainCount to totalDomainCount and never consulted the flag — identical to the domain-TCO bug that ignored the renewal flag. The self-audit was mechanical: the ledger said "double-count bug fixed 2026-08-22" and we proved the fix by computing a ten-domain, ten-year portfolio at two registrars — Porkbun (inclusive) and GoDaddy (exclusive) — and asserting that Porkbun's ten-year total no longer moved by $18 when we corrected the flag handling, while GoDaddy's did. That property is now pinned by tests so it cannot regress. Currency handling mirrors the EUR/USD correction from our FX article: GoDaddy bills in USD while the EUR-inclusive registrars bill in euros, so icannFeeTotal is applied in the registrar's native currency before the final toUsd step.

  • $0.18/domain/year × 10 domains × 10 years = $18 — real money only at portfolio scale, but a reliable tell of itemized-pricing habits everywhere else that registrar lists prices.
  • ICANN fees apply to gTLDs (.com, .dev, .app…) under ICANN's per-transaction fee — country-code TLDs like .io, .ai or .de are governed by their registries instead and do not carry this line.
  • If a checkout shows an 'ICANN fee' line, your quoted price was pre-fee everywhere that aggregator compared it — mentally add $0.18 to every pre-fee headline before comparing.
  • Our catalog stores the inclusion flag per price row with provenance notes, and our VPS verification applies the same honest-null discipline to SLA presence — no signal, no guess, no filler.
  • Portfolio check: multiply your real domain count by years held and by $0.18 before you decide a $0.20 price gap matters — at scale it may be the entire $0.20.

Who should care

If you hold one domain for a personal site, ignore the $0.18 entirely and focus on the renewal trap — the $11 gap between NameSilo at $10.47 and Hover at $15.77 matters 60× more than the ICANN line. If you hold a portfolio — a brand domain, docs, staging, plus defensive typos — care about it as a habit signal and as a rounding budget: at thirty .coms held for a decade, inclusive versus exclusive billing is a $54 line, enough to pay a year of VPS on Hetzner's CX22. If you run comparison tooling yourself, care about it as an invariant: inclusive prices must not be double-counted, exclusive ones must not be under-counted, and the test suite should enforce that inclusive registrars are insensitive to the fee flag.

All 384 rows, flags, capture dates, and provenance notes live in the open data behind the domain TCO tool. If a registrar changes its pricing model — for instance, if GoDaddy were to become inclusive across its 32 rows or an inclusive registrar were to start itemizing — the next recapture flips the flag, the compute flips the total, and this article gets updated rather than defended. That refreshability is why we version the catalog by verifiedAt and publish the flag rather than burying it.

Sources & provenance