If you have ever used a domain availability checker and gotten a "likely available" result, only to find the domain is actually taken when you try to register it, you are not alone. The technology behind availability checking is messier than most people realize. Here is how it actually works.

The DNS Layer

The fastest way to check if a domain is registered is a DNS lookup. When you query example.com, the DNS system returns one of a few responses:

DNS lookups are fast -- typically under 50ms using DNS-over-HTTPS (DoH) through providers like Cloudflare's 1.1.1.1. But they have a fundamental limitation: they can tell you if a domain has DNS records, but they can't tell you with certainty whether a domain is registered but not using DNS.

The RDAP Layer

RDAP (Registration Data Access Protocol) is the modern replacement for WHOIS. It is a structured JSON-based protocol that lets you query domain registration databases directly. When DNS returns NXDOMAIN, a good availability checker will follow up with an RDAP query to confirm.

An RDAP query to rdap.org/domain/example.com returns either:

RDAP is more reliable than DNS alone, but it is also slower (200-500ms per query) and not all TLDs support it yet. The major ones (.com, .net, .org, .dev, .app, .io) do, but many country-code TLDs and newer gTLDs have spotty RDAP coverage.

Why Checkers Get It Wrong

There are several scenarios where availability checks produce incorrect results:

DNS propagation delays: A domain can be registered but not yet propagated to all DNS servers. During this window (which can last up to 48 hours, though it is usually much faster), a DNS-only checker will report it as available.

Registry-reserved names: Some TLD registries reserve certain names (common words, geographic names, etc.) without them showing as registered in RDAP. A checker will say "available" but the registrar will reject the registration.

Premium pricing: The domain might technically be available, but at a premium price that the registry or a secondary market is setting. A checker says "available" but the registration costs $5,000 instead of $12.

Redemption period domains: When a domain expires, it enters a redemption period (typically 30-45 days) where the original owner can still reclaim it. During this time, DNS and RDAP might report it as unregistered, but you still can't buy it.

The NS Record Trick

One technique that improves accuracy is checking NS (nameserver) records in addition to A records. A domain can have NS records (meaning it is delegated to nameservers) without having any A records (meaning no website). This catches cases where someone has registered a domain and pointed it to nameservers but has not set up a website yet.

// DoH query for NS records
const r = await fetch(
  'https://cloudflare-dns.com/dns-query?name=example.com&type=NS',
  { headers: { 'Accept': 'application/dns-json' } }
);
const data = await r.json();
// If Answer array has entries, domain is registered

Rate Limiting and Ethical Checking

If you are building your own availability checker, be aware that bulk DNS queries and RDAP requests will get you rate-limited quickly. Cloudflare's DoH endpoint handles moderate volumes well, but if you are checking thousands of domains, you need to batch requests and add delays between batches.

RDAP is particularly sensitive to bulk queries. Most RDAP servers will start returning 429 (Too Many Requests) after 20-30 queries per minute. The polite approach is to use DNS as a first filter and only hit RDAP for domains that pass the DNS check.

What We Do Here

The availability checker on this site uses a three-step approach: DoH query for A records, DoH query for NS records if needed, and RDAP verification for supported TLDs. We batch 4 domains at a time with delays between batches to stay within rate limits. Results are labeled "Likely Available" rather than "Available" because no remote check can guarantee availability -- only your registrar can confirm that. Try it out and see how the multi-layered checking works in practice.