tld.expert / how to check if a domain is taken

How to check if a domain is taken

To check reliably whether a domain is taken, do not trust “it doesn’t load” — a registered domain can still fail to resolve. Query DNS first (any NS/A record means it’s taken), then the registry’s RDAP record, then WHOIS for the TLDs RDAP doesn’t cover, and confirm anything that looks free against a registrar. A domain is only truly “available” when a registrar confirms it — no single earlier signal can prove it.

The one rule that matters

Domain-availability signals are asymmetric: any single signal can prove a domain is taken, but no single signal can prove it’s available. A domain that doesn’t load might be registered and simply have no name servers, be parked, be on hold, or be sitting in the ~30-day redemption window after expiry. That’s why a trustworthy check always resolves ambiguity toward “taken,” and only calls something “available” after a registrar confirms it.

The four checks, strongest last

  1. Try DNS first — but only to prove it’s taken. Look up the domain’s NS, SOA, or A records (Cloudflare and Google both offer DNS-over-HTTPS you can call from a browser). If any exist, the domain is delegated and therefore registered — TAKEN. Crucially, the reverse is not true: no DNS records does NOT mean available. Freshly registered, parked, or on-hold domains resolve to nothing while being fully owned.
  2. Query the registry’s RDAP record. RDAP is the modern successor to WHOIS and is mandatory for every generic TLD (.com, .org, .app, .ai…). A 200 response with a status array means the domain is registered; a genuine 404 from the registry’s own server means it is not on file. Resolve the correct RDAP endpoint from the IANA bootstrap (data.iana.org/rdap/dns.json), which currently covers about 1,200 TLDs — do not trust a proxy’s 404, which can be a routing miss rather than a real answer.
  3. Fall back to WHOIS for the TLDs RDAP can’t answer. Many popular country-code TLDs — including .io, .co, .me, .de, and .us — are NOT in the RDAP directory, so RDAP simply can’t answer for them. For those you query WHOIS on port 43 and match each registry’s own “no match” wording. WHOIS is brittle free-text, server-side only, and its ICANN mandate for generic TLDs was removed on 28 January 2025 — so it’s a fallback, not the primary source.
  4. Confirm anything that looks free at a registrar. Only a registrar’s availability API knows the whole truth: premium pricing, registry-reserved names, and trademark/sunrise restrictions. A name can return “not registered” from RDAP yet still be un-buyable at standard price. Treat a registrar’s confirmation as the final gate before believing a domain is genuinely available — and note the renewal price, not just the first-year teaser.

The .io / .co trap

The historical bug that fooled naive checkers is the country-code TLD with no RDAP. About 1,200 TLDs publish RDAP (mandatory for all generic TLDs), but popular ccTLDs — including .io, .co, .me, .de, and .us — are absent from the IANA RDAP bootstrap. Note that .ai does publish RDAP while .io and .co do not. On those RDAP-less extensions, a checker that only reads DNS or a thin WHOIS response can miss a real registration and flash a false green. The fix isn’t a fancier lookup — it’s refusing to call anything “available” until an authoritative registrar signal confirms it.

Why tld.expert never shows a false “available”

A false “taken” is a mild annoyance; a false “available” is a trust-destroying error — you’d fall in love with a name someone already owns. So tld.expert only renders a green “available” when a registrar confirms the name is registrable at standard price. Everything else is labeled honestly as “taken” or “check at registrar.” That single rule is the product.

Common questions

If a website doesn’t load, is the domain available?

No — this is the most common mistake. A domain can be fully registered and still fail to load: it may have no name servers yet, be parked, be on client/server hold, or sit in the redemption or pending-delete window after expiry. “Doesn’t resolve” only means “not currently serving a site,” never “free to register.”

Why do some checkers say a taken domain is available?

Because they read the weakest signal. A DNS-only or thin-WHOIS check on a country-code TLD without RDAP (like .io or .co) can miss a real registration and flash a green “available.” A false “available” is a trust-destroying error — one you only rule out by confirming against an authoritative registrar signal before ever showing green.

How do I check a .io or .co domain specifically?

.io and .co are country-code TLDs that are not in the RDAP directory, so RDAP can’t answer for them. Use WHOIS as the fallback signal and then confirm at a registrar. This is exactly the class of TLD where naive checkers produce false positives — always resolve ambiguous cases toward “taken,” never “available.”

What does “expired but not available” mean?

After a domain expires it enters a roughly 30-day redemption period (only the former owner can restore it, for a fee), then a ~5-day pending-delete purge before it actually drops. The full cycle runs about 75–80 days. During all of it the domain is registered and cannot be bought — it just looks free because it stops resolving.

Does tld.expert ever show a false “available”?

No. That’s the whole design. Signals are asymmetric: any one signal can prove a domain is taken, but no single signal can prove it’s available. We only render a green “available” when a registrar confirms it’s registrable at standard price. Everything ambiguous resolves to “taken” or “check at registrar,” never to a false green.

Ready to check a specific name? Head to the checker, or read our .io vs .ai and best-TLD guides if you’re still choosing an extension.

Check a domain at a registrar