DNS Propagation Checker

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

Reading the result

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.

When disagreement is normal

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.

How to use the DNS Propagation Checker tool

  1. Enter the domain or subdomain, choose the record type (A by default) and click Check DNS.
  2. The tool sends the same query to twelve public resolvers at once over DNS-over-HTTPS and lists each answer with its TTL and response time.
  3. Look at the consensus box first. It shows the most common answer and the percentage of resolvers that returned it. A reading of 100% means the change has propagated everywhere we can see.
  4. Rows that differ from the consensus are highlighted. Right after a change they hold the old value and will update when their cached TTL expires. For CDN or GeoDNS hosts, a different IP per region is normal.
  5. Use the record type that matches what you changed: CNAME for a subdomain pointed at a host, MX and TXT for email, NS after moving nameservers, CAA when certificate issuance fails.

How to query a DNS record from several resolvers in code

dig

# 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.

JavaScript (DNS over HTTPS)

// 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.

Python (dnspython)

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")

Common errors and how to fix them

Some resolvers still show the old IP hours after the change
Their cached copy has not expired. The wait equals the old TTL, which was often 3600 or 86400 seconds. Nothing you do at the DNS host speeds this up; next time lower the TTL to 300 a day before the change.
NXDOMAIN on a record I just created
Either the record was saved under the wrong name (example.com vs www.example.com) or a resolver cached a negative answer from before it existed. Check the exact name at your DNS host and wait for the SOA minimum TTL.
Every resolver returns a different IP
The host uses GeoDNS or a CDN such as Cloudflare, Akamai or AWS CloudFront and answers with the nearest edge. That is correct behavior. Check that each IP belongs to the same provider with the WHOIS lookup.
SERVFAIL from several resolvers
The authoritative nameservers are not answering or the zone is broken, often a DNSSEC signature that expired or a nameserver record that points to a host that no longer serves the zone. Check the NS record and your DNS host's status page.
A CNAME record does not show for the root domain
A CNAME is not allowed at the zone apex because it would conflict with the SOA and NS records. Use an A or AAAA record, or a provider feature such as ALIAS or CNAME flattening.

Specifications and references

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.

Frequently Asked Questions

What is DNS propagation?

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.

How long does propagation take?

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.

Why do resolvers return different IPs for a site that has not changed?

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.

Which record types can I check?

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.

What does NXDOMAIN mean?

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.

Related

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.

More URL Tools

Browse all url tools

Copied to clipboard!