Enter a domain and this tool asks seven public resolvers what they are handing out right now, then asks every one of your own nameservers directly with recursion switched off. It shows the seconds remaining on each cached answer, compares your registrar’s delegation against your zone, and tells you whether you are waiting on caches or looking at a problem that waiting will never fix.
Enter the domain, pick the record type you changed, and — if you know it — the value you are waiting for.
Quick answer: how do I check if DNS has propagated?
Ask several independent resolvers the same question and compare the answer sets they return, then ask the domain’s own nameservers directly. If the nameservers agree with each other and the resolvers differ, you are waiting on cached copies and the TTL tells you how long. If the nameservers themselves disagree, or the registry lists different nameservers than your zone does, waiting will never fix it.
Robert Harrison
OSINT & Network Utility Expert
Robert works on DNS, ports, SSL and the network utilities that sit underneath them, helping administrators audit domain infrastructure and read what the protocol is actually telling them.
This tool was built to answer the question a flag grid cannot: not how many servers have the new answer, but whether the answer is right at the source. Before release its analysis was driven through 145 assertions against hand-built DNS responses — one for every verdict it can reach, plus a rotating multi-address record, a nameserver answering without authority, a missing glue record, a registry that disagrees with the zone, and 30,000 random buffers through the response parser.
Last reviewed 23 September 2026 · Published 23 September 2026
View all articles by Robert HarrisonNothing spreads outward across the internet when you change a DNS record. The moment you save it, your own nameservers serve the new value to anyone who asks. What you are waiting for is the opposite of spreading: you are waiting for other people’s computers to forget the old value. “Propagation” is a misleading name for the expiry of thousands of independent timers.
Every answer a resolver receives arrives stamped with a TTL. RFC 1035 section 4.1.3 defines it as “a 32 bit unsigned integer that specifies the time interval (in seconds) that the resource record may be cached before it should be discarded.” That number is permission you gave in advance. A resolver that fetched your old address one minute before you changed it, with a one-hour TTL, is behaving perfectly correctly when it keeps serving that old address for the next fifty-nine minutes.
This is why the question “has it propagated yet” has no single answer. Different resolvers fetched your record at different moments, so their copies expire at different moments. The check above does not try to produce a percentage out of that; it shows you which distinct answers exist right now, how long the stale ones may still be served, and — the part that actually decides what to do next — whether the record is correct at its source. For the step-by-step version of what to change and when, our guide on fixing DNS propagation delay for new domains covers the procedure; this page is about reading the state you are in.
Key fact: a TTL of zero is a real instruction, not an empty field. RFC 1035 section 3.2.1: “Zero values are interpreted to mean that the RR can only be used for the transaction in progress, and should not be cached.” If you see a zero TTL in the results above, that record is not being cached anywhere and there is nothing to wait for.
The verdict is one of eight states, and each one implies a different next action. Four of them mean stop waiting and go and change something. There is no score and no percentage, because a number would hide exactly the distinction that matters: whether the problem is in someone else’s cache or in your own zone.
| Verdict | What it means | What to do |
|---|---|---|
| Converged | Every resolver that answered, and every one of your nameservers, returns the same set. | Nothing. It is done. |
| Still clearing | Your nameservers agree; some resolvers hold something else. | Wait. The countdown shows the longest remaining copy. |
| Negative cache | Your nameservers have the record, but most resolvers are still answering “no such record”. | Wait for the SOA minimum, not the record TTL. See the negative caching section. |
| Not published | Every nameserver of yours answered, and none has this record. | Check the zone and host name where you saved it. Waiting cannot help. |
| Not converging | Your own nameservers disagree with each other, or their SOA serials differ. | A zone transfer problem at your DNS provider. Waiting cannot help. |
| Delegation problem | The registry and your zone name different nameservers, or in-zone nameservers have no glue. | Fix it at the registrar, not the DNS host. |
| No such domain | The registry says the name does not exist. | Check the spelling, the registration and the expiry date. |
| No verdict | Too few servers replied in time to compare anything. | Try again in a minute. An honest blank beats a confident guess. |
One detail is worth knowing before you read the table of answer sets: the comparison is between sorted sets, never first records. A domain with several addresses hands them out in a rotating order, so a naive comparison would show seven different answers for a domain where nothing is wrong at all. If you want the full record inventory for a domain rather than a propagation check, our DNS lookup tool lists every type at once.
Public resolvers can only ever tell you what they were given some time ago. Your own nameservers tell you the truth right now. So this tool asks each of them directly, by address, with the recursion-desired bit switched off — which means “answer from your own zone, do not go and look this up for me”. A server that is genuinely authoritative for the zone sets the AA flag in its reply. One that answers without it is not speaking for your zone, and that is reported separately as not authoritative rather than being mixed in with the real answers.
Most zones have one primary nameserver and one or more secondaries that copy the zone from it. Each copy carries a serial number in the zone’s SOA record, and the secondaries use it to decide whether they need a fresh copy. If two of your nameservers report different serials, they are serving different versions of your zone. That is the classic invisible fault: half the internet gets the new record and half gets the old one, forever, and no amount of waiting changes it because both servers think they are right.
Seeing it requires asking each server individually, which is precisely what a resolver will never do for you — it picks whichever nameserver answers fastest and caches that. If the serials in your result differ, the fix is at the DNS provider: force a zone transfer, or find out why one secondary has stopped pulling.
Do it yourself: the same question from a terminal is dig @ns1.example.com example.com SOA +norecurse, repeated once per nameserver. Compare the serial in each answer. Our guide to finding a website’s server address covers the surrounding commands.
Two separate systems both hold a list of your nameservers. Your registrar pushes one list into the registry for your extension — that is the delegation, and it is what the rest of the internet follows. Your DNS host publishes another list inside the zone itself. They are supposed to match. When somebody moves DNS provider and only updates one of them, they do not.
A recursive resolver hides this problem rather than showing it, because it follows the registry’s list and hands you back whatever it finds. To see the disagreement you have to ask the parent zone directly, with recursion off, which is what the delegation panel above does: it walks down from the root, asks the registry for your extension what it holds for your domain, and compares that with what your own nameservers say.
If your nameservers are named inside the domain they serve — ns1.example.com serving example.com — there is a bootstrapping problem. To find ns1.example.com a resolver must ask example.com’s nameservers, which is the thing it is trying to find. The registry breaks the loop by publishing the nameservers’ addresses alongside the delegation. Those are glue records. Without them nothing resolves, and the symptom is the one that brings people to a propagation checker in the first place: three days have passed and absolutely nothing has changed.
Glue is set at the registrar, usually under a name like “host records”, “registered nameservers” or “private nameservers”. If you are not sure which company is your registrar, a WHOIS lookup names it. If a name resolves nowhere at all rather than to the wrong place, our guide to fixing “IP address not found” errors covers the wider set of causes.
There is a second kind of caching, and almost nobody is told about it. When a resolver asks for a name that does not exist, it does not just shrug — it remembers the absence. That memory has its own lifetime, and the lifetime does not come from the record you just created, because there was no record to carry a TTL. It comes from your zone’s SOA.
RFC 2308 section 4 makes this explicit: the SOA minimum field is “the TTL to be used for negative responses”. So if your SOA minimum is 3600, a resolver that asked one minute before you published can keep telling people the record does not exist for the next hour, and re-checking will not shorten it by a second.
This is the single most common reason a brand-new record “has not propagated”, and it is why the verdict above treats it as its own state rather than lumping it in with ordinary caching. The two need different waits: ordinary caching clears in one record TTL, negative caching clears in one SOA minimum, and those numbers are often very different.
Worth checking on your own zone: RFC 2308 section 5 observes that “values of one to three hours have been found to work well” for negative caching, and that “values exceeding one day have been found to be problematic”. If the negative caching panel above shows a day or more, that is a setting worth lowering before your next change, not after it.
The TTL shown next to each resolver is not the TTL you configured. It is what is left of it: the number of seconds that resolver may still serve the copy it holds. That difference turns a vague “up to 48 hours” into an actual clock, and it carries a second piece of information most people miss.
If a resolver is serving an answer that differs from your nameservers and its remaining TTL is close to your full configured TTL, that copy was fetched moments ago. A copy fetched moments ago is not a stale cache. It means that resolver was given a different answer — which happens when a domain deliberately serves different addresses by location, when a nameserver is out of sync, or when something between the resolver and your zone is not what you think it is. The tool surfaces that as evidence and stops there, because from a single vantage point those explanations are indistinguishable.
# What one resolver is holding, and how long it may keep it
dig @1.1.1.1 example.com A
# What your own nameserver says, with recursion off
dig @ns1.example.com example.com A +norecurse
# The delegation the registry publishes, not your zone's own copy
dig @a.gtld-servers.net example.com NS +norecurse
# Avoid ANY: since RFC 8482 a server may answer it with one synthesised record
Run the first command twice a minute apart and the TTL will have fallen by roughly sixty. That falling number is the whole of “propagation”. If you want to watch a server actually respond rather than watch a cache expire, our ping test answers the different question of whether the machine at the other end is up.
Every query on this page leaves one server in one location. What varies between the rows is which resolver was asked, not where the asking happened. That is a real limit and it is worth stating plainly, because a grid of country flags implies something this method does not provide.
The part that is not a snapshot, and not subject to any of the above, is the answer your own nameservers give. That is why the verdict is anchored there. Two related checks complete the picture from a different angle: our reverse IP lookup shows what else lives at the address you are being sent to, and the cluster’s background explainer, how DNS resolves domain names to IPs, walks the whole query path from browser to authoritative server.
How the queries are sent: every lookup on this page goes out on its own UDP socket, which gives each one an unpredictable source port. RFC 5452 section 9.2 asks resolver implementations to “use an unpredictable source port for outgoing queries” and “use an unpredictable query ID”; sending them in parallel rather than one after another satisfies both and is also why a check of roughly thirty queries finishes in well under a second.
Nothing is stuck in transit — there is no such thing. What is actually happening is that resolvers around the world are still serving an answer they cached before you made the change, and they are entitled to keep it until its TTL runs out. The check above separates the two cases that matter: if your own nameservers already serve the new record, you are only waiting on caches. If they do not, the change never reached your DNS provider and waiting will not help.
Because they are asking different resolvers at different moments, and each resolver has its own independently expiring copy. A difference between two resolvers is real information; the reason behind it is not visible from outside. A stale cache, a resolver that filters some names, and a domain that deliberately answers differently by location all look identical from one vantage point, which is why this page reports that they differ and never guesses why.
Two days is well past any normal cache lifetime, so the problem is almost certainly not caching. Look at the delegation panel. If the registry still lists your old nameservers, the change was not saved at your registrar or has not been pushed to the registry. If the registry lists nameservers that live inside your own domain and shows no glue, resolution cannot even start. Both are fixed at the registrar, not at the DNS host.
That is negative caching, and it is a different mechanism from ordinary caching. When a resolver asks for a name that does not exist yet, it is allowed to remember the absence — and RFC 2308 makes the lifetime of that memory the SOA minimum field of your zone. If your SOA minimum is an hour, a resolver that asked one minute before you published can keep saying "no such record" for the next hour, no matter how many times you check.
Not retroactively. Once a resolver has been given an answer with a one-hour TTL, nobody can shorten that hour from the outside — not you, not your DNS provider. What you can do is prepare: lower the TTL on the record a day before a planned change, make the change, then put the TTL back. Flushing your own machine only clears your own copy. Our guide on fixing DNS propagation delay walks through the full sequence.
It is the number of seconds that resolver is still allowed to serve the copy it is holding, counting down in real time. It is not your configured TTL — it is what is left of it. A resolver showing a number close to your full TTL was refreshed moments ago, which is useful: if it is serving an answer that differs from your nameservers and its copy is only seconds old, that is not a stale cache, it was handed a different answer.
With dig on Linux or macOS: dig @ns1.example.com example.com A +norecurse asks that one nameserver and nothing else. On Windows, nslookup example.com ns1.example.com does the same job. Avoid ANY queries — since RFC 8482 a server may answer them with a single synthesised record, which makes a healthy domain look almost empty.
No, and it says so. Every query on this page leaves one server in one place. What varies is which resolver is asked, not where the asking happens. Those seven resolvers are anycast networks, so we reach whichever of their sites is nearest to us — a visitor in another country may be talking to a different machine with a different cached copy. That limit is why the panel your own nameservers answer is the one that decides the verdict.
A propagation check answers one question. These answer the ones that usually come next.
Once the answer has settled, the next question is usually whether every other record is right too — mail, verification, certificate authority.
Last updated 23 September 2026 · queries sent live over UDP port 53 to public resolvers and to the domain’s own nameservers