Skip to content
Networking and DNS

DNS Propagation Checker

Queries the zone's authoritative nameservers and compares them against an inventory of more than 170 observation points in over 70 countries, revalidated every day. For each cache it shows the remaining TTL, meaning the seconds left before it expires, and separates two situations that look alike: a cache still serving the previous value, and a CDN-backed domain that answers different addresses to different networks.

Try with:

How to use it

  1. 1

    Enter the domain

    A full URL or an email address works too: the hostname is extracted. Internationalised domains are converted to punycode automatically.

  2. 2

    Pick the record type

    A and AAAA for where the site points, MX for mail, TXT for SPF, DKIM and ownership verification, NS for a nameserver change, CNAME for aliases. CAA, DS, DNSKEY, TLSA, SRV, SVCB and HTTPS are covered too.

  3. 3

    Leave the authoritative plane on

    Direct queries to the zone's nameservers provide the reference used to judge the caches. Without them the values are readable but the comparison is not.

  4. 4

    Read each row's verdict

    Every row carries a class and the reason it was assigned. An answer that differs from authoritative can be perfectly normal: it happens on every CDN-served domain.

  5. 5

    Watch the time remaining

    If a cache is still serving the previous value, the countdown shows when the last observed one expires. After that, propagation is complete across the measured points.

Why resolvers return different values

What usually brings someone to a tool like this is not "which addresses do twenty resolvers return", but "is my DNS change done, and if not, when will it be?". Those are different questions, and the first does not answer the second.

Divergent answers between resolvers have two distinct causes. The first is caching: a resolver stored the previous value before the change and keeps serving it until the TTL expires. That is propagation in progress, and the time left is a readable number. The second is geographic routing: the domain is served by a CDN or a load balancer that answers different addresses depending on the network the query comes from. In that case nothing is updating and there is nothing to wait for.

A measurable example on this very domain, with publication finished months ago: the authoritative nameservers answer 172.67.135.235 and 104.21.7.88, while 8.8.8.8 and 9.9.9.9 answer 188.114.96.7 and 188.114.97.7. Different addresses, same operator, anycast network. Read without context, that difference looks like a change that has not propagated yet.

The two cases can be told apart by observation. A cache serving a superseded value necessarily has an already-consumed TTL, because it was populated before the change and time passes; an answer just fetched from the origin arrives with a full TTL. So a different value with a full TTL indicates the origin answered that way just now, while a different value with an eroded TTL indicates a previous copy still in circulation, and the seconds left are the remaining TTL.

On top of that reading sits a direct check, when it can be obtained: query the authoritative nameserver with different EDNS Client Subnet values and see whether the answer changes. If it does, geographic routing is detected. If it does not, nothing is concluded, because several CDNs implement geography through nameserver anycast rather than ECS.

The verdicts, one by one

Every row in the result gets a class and the reason behind it. Each maps to an observed condition and to a different action.

Propagated. The value matches authoritative, or is one of the values in the published pool. Nothing else to do.

Updating. The value differs and the TTL is already eroded: the cache was populated before the change. The countdown shows how long is left. Third-party caches refresh when the TTL expires; the public flush forms Google and Cloudflare provide act only on their own resolvers.

Regional variant. The value differs but is current: the domain serves different answers to different networks. No waiting required.

Nameservers disagree. The zone's nameservers return different values with misaligned SOA serials. This is a synchronisation issue to fix at the DNS provider. While it lasts, every lookup's outcome depends on which nameserver is asked, which produces intermittent behaviour that is hard to diagnose downstream.

Not resolved everywhere. Some resolvers resolve the name and some return NXDOMAIN. On a recently created record this is almost always negative caching, which lasts as long as the SOA minimum field. If it persists, the zone delegation at the registry is not complete.

Invalid DNSSEC signature. A validating resolver rejects the answer on a signed zone. For users behind a validating resolver the domain is unreachable, so this ranks higher than slow propagation.

Server unreachable. Timeout or refusal. It concerns the resolver rather than the domain: across a wide sample, a few points not answering is ordinary, which is why the row stays grey rather than red.

How the geography is verified

Many tools in this category show a world map with coloured dots and claim to check from dozens of locations. It is worth understanding what that number means, because in most cases those locations are labels attached to the IP addresses of public resolvers.

The reason is anycast. Resolvers such as 1.1.1.1, 8.8.8.8 and 9.9.9.9 are not in one place: the same IP address is announced from hundreds of data centres, and the one closest to the asker replies. An Italian backend querying 9.9.9.9 is talking to Quad9's Italian PoP, not to Zurich. The check takes one command: dig CHAOS TXT id.server @1.1.1.1 returns fco01, meaning Rome, and dig CHAOS TXT id.server @9.9.9.9 returns res701.trn, meaning Turin.

The test that tells the two apart is physics. Light in fibre travels at roughly 200,000 km/s, so a round trip to a point D kilometres away cannot close in less than D/100 milliseconds. That is a hard limit: no routing, no optimisation and no cache can break it. If an address a database places 16,000 km away answers in 19 ms, the node that answered is not where the database says. This test runs against every address in the inventory, every day, from the same server that later runs the checks.

Hence the three labels next to every observation point, and the fact that there is no fourth one:

anycast means the address is global and the answer comes from the node nearest to us. Where the resolver exposes id.server or hostname.bind, the actual node that answered is shown, using the identifier it declares itself. Never a city picked by hand.

location consistent means the measured latency is compatible with the claimed distance: a closer node could not be that slow. Hovering the label shows the three numbers the conclusion rests on. The wording is deliberate: the test proves a location impossible, never a plausible one correct. A resolver at 286 ms is consistent with Sydney but could sit in Auckland; for this purpose what matters is that it is genuinely remote and genuinely distinct from the others, and that the test does guarantee.

location not verified means the test could not conclude, and in that case no location is shown at all.

There is no map, and that is not an omission. With geographic routing what you need to know is which value each area receives, not which points replied: the per-continent view carries that information without the cost of a mapping library and without implying a precision we do not have. A green dot on a map only ever says "it answered".

One last note. What decides whether a user sees the old value or the new one is less the country they are in than which resolver they use and when that resolver populated its cache. Two users on different continents both using 8.8.8.8 almost always get the answer of the regional PoP nearest to each. The remaining TTL describes that mechanism directly, which is why it is the column that stays visible on every row.

Methodology

The measurements on this page are reproducible with dig from any machine.

Querying the domain's nameservers directly. The zone containing the name is found by walking up label by label, accepting only NS sets whose owner matches the candidate; the nameservers are resolved to addresses and each one is queried directly with the recursion bit cleared, asking for the requested record and for the zone SOA. Answers with the AA bit set form the reference. If the name is an alias, the CNAME chain is followed to the zone holding the final records, and the measurement happens there. Equivalent to: dig +norecurse @ns1.example.com example.com A.

Querying the observation points. An inventory of public recursive resolvers, queried in parallel over UDP/53 with a two second timeout. The inventory is revalidated daily: an address joins the active set only if it answers, exposes the recursion flag and does not filter, and it leaves after three consecutive failed validations. The location a database claims is then compared against the physical floor imposed by the speed of light in fibre (a round trip cannot be shorter than distance/100 in milliseconds): anything answering faster than its own floor is anycast, and is never shown with a city. Three DoH resolvers queried from the browser are added on top, measuring the network of whoever is looking. The TTL returned by a cached answer is the remaining TTL.

A note on non-recursive queries. Reading the remaining TTL with recursion disabled would avoid triggering a cache refresh, but it is not workable across resolvers: Cloudflare answers, Quad9 refuses and Google returns SERVFAIL. The remaining TTL is readable from an ordinary recursive query anyway, because a cache-served answer carries an already decremented TTL; on a cold cache the query causes a fetch from the origin and the TTL comes back full, and that is exactly the signal separating a previous copy from a freshly fetched answer.

Limits of a single vantage point. When the ECS probes detect that the zone answers differently to different networks, values outside the observed set are classified as geographic variants. That is the correct reading in most cases, since a CDN can serve many different addresses and a single location cannot enumerate them; it does have a downside, though: on a geographic domain, during a migration, a lagging resolver can be read as a variant. On domains of that kind the more reliable signal is querying the domain's nameservers directly.

What is not covered. There are no distributed probes, so no geography is claimed. There is no monitoring over time with notification. There is no immutable snapshot of a result: the share link repeats the check, which for moving data is more useful than a photograph. Any extension will be documented here.

The other DNS tools

This page answers one specific question: whether a DNS change is complete. Adjacent questions have their own tools in the same section.

The DoH query tester queries a single resolver and shows the raw answer: rcode, authority section, flags, CNAME chain and the domain's RDAP data. It suits understanding what a resolver replies rather than whether it is up to date.

The email DNS validator covers the mail vertical: MX, SPF with lookup counting, DKIM, DMARC and the typical deliverability mistakes. After publishing an authentication TXT, that one verifies its correctness and this one shows when it will be visible everywhere.

On the certificate side, the security headers analyzer and the SSL certificate decoder cover the checks that follow a migration, once DNS already points to the right place.

Glossary

Technical terms used on this page, briefly explained.

DNS propagation #
Informal name for the gradual expiry of resolver caches after a change. There is no distribution process: previous copies simply expire.
TTL #
Time To Live, the number of seconds a record may stay cached. The TTL a resolver returns is the time left on its copy, not the value configured in the zone.
Authoritative nameserver #
The server holding the zone, answering with the AA bit set. It is the source of the data: everything else is a copy with an expiry.
SOA serial #
The zone's version number. If two authoritative nameservers of the same provider report different serials, one of them has not received the latest version.
Anycast #
One IP address announced from many data centres; the nearest one to the asker replies. It is why a public resolver's IP does not identify a place.
GeoDNS #
A setup where the authoritative server answers different values depending on where the query comes from. It produces stable, expected divergence between resolvers.
EDNS Client Subnet #
An extension (RFC 7871) that lets a resolver tell the authoritative server the client's subnet. Querying with different ECS values makes geographic routing detectable.
Negative caching #
Recording that a name does not exist. It lasts as long as the SOA minimum field, which is why a freshly created record can stay invisible for a few minutes.
DNSSEC #
Cryptographic signing of the zone. If validation fails, a validating resolver returns SERVFAIL and the domain is unreachable for its users, regardless of propagation.
Delegation #
The NS records the registry publishes for the zone. Incomplete delegation produces intermittent resolution, which downstream resembles slow propagation.
CNAME #
An alias to another name. The final records live in the target's zone, so the authoritative check follows the chain to that zone.

Frequently asked questions

How long does DNS propagation take?
As long as the record's TTL, plus the time the provider needs to publish the change on the authoritative servers. With a 300 second TTL that means five minutes. The "24 to 48 hours" answer dates back to when TTLs were far longer and some ISPs did not honour their expiry: today it is rarely relevant.
Why do two resolvers give me different addresses even though I changed everything days ago?
In most cases because the domain is served by a CDN or a geographic load balancer that answers different addresses to different networks. It happens with Cloudflare, Akamai, Fastly and latency-based Route53. This tool classifies those rows as a geographic variant, so the difference stays readable without resembling an incomplete change.
Can I force propagation or flush the caches?
You can flush your own operating system and browser caches, and use the public flush forms Google and Cloudflare provide for their own resolvers. On other resolvers the copy refreshes when the TTL expires: there is no mechanism to bring that forward from the outside.
How do I prepare a DNS change to shorten the window?
Lower the record's TTL to 300 seconds at least 24 hours before the change, wait for the previous TTL to expire, perform the migration, verify, and only then raise the TTL back to its usual value. That is the procedure that reduces the misalignment window to a few minutes.
Why does querying authoritative nameservers need a server?
Because authoritative nameservers speak DNS over UDP and TCP port 53: they do not expose DNS-over-HTTPS and send no CORS headers, so a browser cannot reach them. The rest of the tool runs in the browser; if querying the nameservers does not answer, the result says so and the measurements from your network remain valid.
What does it mean when SOA serials differ?
That the zone's nameservers do not all hold the same version of the data: one or more secondaries have not received the latest transfer. There is a common case to distinguish, though: if the zone is served by two separate providers, each uses its own numbering and the serials are not comparable. This tool compares them only within the same master declared in the SOA.
I just created the record and some resolvers say it does not exist. Is that normal?
Yes, this is negative caching: that resolver had already been asked for the name before it existed, stored the negative answer and keeps it for the period given by the SOA minimum field, typically a few minutes to an hour.
How many observation points are queried?
It depends on the profile. The quick one, the default, queries about thirty: the large anycast operators plus a geographic sample spread across the continents. The full one queries the whole active inventory, more than 170 points in over 70 countries. Either way the zone's authoritative nameservers are added, since they are the reference, and the "where these measurements come from" section reports the exact count of the moment and the date of the last validation. The per-operator count stays the informative one: an operator's primary and secondary share infrastructure and policy, so they do not constitute two independent viewpoints.
Why is there no world map?
Because public resolvers are anycast: the same IP address is announced from hundreds of data centres and the nearest one to the asker replies, so tying it to a city would not describe the query's actual path. What is stated here is where each measurement starts from: your browser for the first plane, a server in Germany for the second.
Is the domain I check stored anywhere?
No. The measurement from your network never touches any server of this site. Querying the nameservers goes through an endpoint that caches the result for twenty-five seconds, to avoid repeating the same queries, and does not record the domain queried. There is no history and no account.
Can I add my own resolver?
Yes, up to three public IP addresses. Private addresses are not accepted: an internal resolver would not be reachable from the server running the queries, and accepting them would open the door to probing private networks. For an internal resolver the right tool is dig, from the network it lives in.
Does it work with CDN-backed domains?
Yes. If the name is an alias, the check follows the CNAME chain to the zone holding the final records and measures there. The result shows the chain followed and the zone actually queried, which for a CDN-backed name differs from the domain you typed.
Does it work for mail and certificates too?
Yes. MX for mail routing, TXT for SPF and DKIM, CAA for the authorities allowed to issue certificates, TLSA for DANE, SVCB and HTTPS for the records used by ECH and Alt-Svc. For a full mail-record analysis there is the email DNS validator.

Who builds these tools?

Maurizio Fonte, senior IT consultant with 20+ years in PHP, Laravel, unmanaged Linux infrastructure, applied cybersecurity and AI/LLM integration. Production backends, legacy code modernization, security audits, custom AI agents and MCP servers: the work behind every tool published here.

About Maurizio Fonte