Skip to content

Accuracy notes

  • RDAP is authoritative: 404 means the name is not registered.

  • WHOIS is text matching. The per-registry needle from whois.json is tried first, then generic markers. Anything unrecognised is UNKNOWN rather than a guess.

  • Needle matching is negation-aware. auDA’s availability service answers Available or Not Available and the bundled needle for .au is “Available”, so a plain substring test reports every taken .au domain as free. Matches preceded by “not”/“no”, or attached as in “unavailable”, do not count.

  • Four registry quirks are handled explicitly, because each one otherwise reads as a registration: answers that echo the queried name back before saying “no object found” (.sr, .fj), answers for a TLD the server does not serve (.tattoo, .photo), non-RDAP error bodies returned with HTTP 200 (.sn), and answers describing the parent zone instead of the name asked about (foo.ernet.in -> ernet.in).

  • Some registries answer nobody: .li and .qa refuse public WHOIS and have no RDAP, and a few bundled WHOIS hosts no longer exist. Those come back UNKNOWN with the reason attached.

  • Large sweeps get rate-limited. ds paces itself per host, backs off on 403/429, and stops querying a server that has refused it six times in a row (retrying it after 30s). Identity Digital runs ~250 gTLDs behind one RDAP endpoint with a strict quota, so a single --tld all sweep will leave some of those unresolved; re-run just those later:

    ds apple --tld "$(sed 's/^apple\.//' unknown.txt | paste -sd, -)"

These pages are generated from the project README, so they never drift from what ships with the binary.