Enter a domain to compare DNS answers across resolvers
After you change a DNS record, every resolver on the internet keeps serving its cached copy until the TTL runs out. This tool asks twelve public resolvers (Cloudflare, Google, OpenDNS, NextDNS, Control D, AdGuard and others in Europe and Asia) for the same record at the same moment and shows which already have the new value, which still hold the old one, and how far along the change is.
Enter a domain to compare DNS answers across resolvers
The consensus box shows the most common answer and the share of resolvers that agree with it. Rows that differ are highlighted. Right after a change, the highlighted rows are the ones still serving the old record; the TTL column tells you how many seconds their cache has left. NXDOMAIN means the resolver believes the name does not exist, which also gets cached.
Sites behind a CDN or GeoDNS answer with a different IP depending on where the question comes from, so an A record for a large site will rarely reach 100%. The check is most useful for records you control and expect to be identical everywhere: a TXT verification string, an MX record, a CNAME to a hosting provider, or NS records after moving to a new DNS host.
# Ask three resolvers for the same record and compare
for ns in 1.1.1.1 8.8.8.8 9.9.9.9; do
echo "== $ns"; dig +short @$ns example.com A
done
# Add +ttlid or drop +short to see the remaining TTL on each cached answer
dig @8.8.8.8 example.com A | grep -A1 "ANSWER SECTION" nslookup example.com 8.8.8.8 works on Windows, where dig is not installed by default.
// Any resolver that supports the JSON flavor of DoH
const resolvers = {
cloudflare: "https://cloudflare-dns.com/dns-query",
google: "https://dns.google/resolve",
};
for (const [name, base] of Object.entries(resolvers)) {
const res = await fetch(base + "?name=example.com&type=A", {
headers: { accept: "application/dns-json" },
});
const data = await res.json();
console.log(name, data.Answer?.map((a) => a.data + " (ttl " + a.TTL + ")"));
} The tool itself speaks the binary DNS wire format (RFC 8484) so it can use resolvers that have no JSON endpoint.
import dns.resolver # pip install dnspython
for server in ["1.1.1.1", "8.8.8.8", "9.9.9.9"]:
r = dns.resolver.Resolver(configure=False)
r.nameservers = [server]
try:
answer = r.resolve("example.com", "A")
print(server, [str(x) for x in answer], "ttl", answer.rrset.ttl)
except dns.resolver.NXDOMAIN:
print(server, "NXDOMAIN") This tool follows the specifications below. Read them when you need the exact normative wording, for example to settle an edge case between two implementations.
The time it takes for a changed DNS record to be seen everywhere. Resolvers cache each answer for the record's TTL, so after you change an A record at your DNS host, some resolvers keep serving the old value until their copy expires. The tool shows which resolvers have the new value and which still hold the old one.
Usually as long as the old TTL, often 300 seconds to 24 hours, plus a few minutes for the registry if you changed nameservers. Lower the TTL to 300 a day before a planned change, make the change, then raise the TTL again once every resolver agrees.
The site uses GeoDNS or a CDN that answers with the server closest to the resolver. That is working as designed. A mismatch is only a problem when the answers differ for a record you control and expect to be identical, such as a TXT verification or an MX record.
A, AAAA, CNAME, MX, NS, TXT, SOA, CAA, SRV and PTR. Use A or AAAA for a site move, CNAME for a subdomain pointed at a host, MX and TXT for email and domain verification, NS after changing nameservers, and CAA when a certificate issuance fails.
The resolver says the name does not exist. Right after creating a record, some resolvers may have cached that negative answer for the SOA's minimum TTL, so they keep saying NXDOMAIN for a while even though others already see the record.
Confirm the domain is registered and see its nameservers with the WHOIS lookup, then check the site itself with the website down checker. Use what is my IP to find your own address for a PTR lookup.