DNS propagation is not a thing. TTL is.

30/07/2026 · Laurent DNS
DNS propagation is not a thing. TTL is.

Every host's support page says the same thing. Your change is propagating, please allow twenty-four to forty-eight hours. It is said kindly and it is not true, and the reason it matters is that it describes a process you cannot influence, when the real mechanism is a number you control and probably set wrong.

Nothing spreads outward from your zone. No update is pushed to anyone. There is no wave.

What actually happens

Your authoritative nameserver holds the record. When it answers a query it attaches a time to live, in seconds. The resolver that asked, which is your visitor's internet provider or their office network or a public resolver, stores the answer and reuses it for exactly that long, without asking again.

So when you change a record, the authoritative server has the new value immediately. Everyone else keeps using the old one until their copy expires. Different resolvers cached at different moments, so they expire at different moments, which is what produces the appearance of a slow spread from one place to another.

Two consequences follow, and they are the whole practical content of this subject.

The worst case is exactly the TTL. Not twenty-four hours. If your TTL is three hundred seconds, the last stale resolver is five minutes behind, and the host's forty-eight-hour figure is a story about a default nobody checked.

The number has to be lowered before the change, not during it. This is the part that goes wrong, and it goes wrong in a way that feels unfair. You lower the TTL from 86400 to 300 at the moment you cut over. But resolvers that cached yesterday cached the old record and its old TTL. They will hold it for a day regardless of what your zone says now, because they are not going to ask you. Lowering the TTL only helps clients who ask after the change, which is precisely the population that was never the problem.

The sequence that works

Four steps, and the first is the only one anybody skips.

One: at least one full old-TTL period before the migration, lower the TTL on the records you are going to change. If the current TTL is 86400, do this at least a day ahead. Do not change anything else.

Two: confirm the low TTL is what resolvers are handing out now, not just what your zone contains.

dig +noall +answer example.com A @1.1.1.1
dig +noall +answer example.com A @8.8.8.8

The middle column of the answer is the remaining TTL, counting down. Ask twice a minute apart and watch it drop. When it drops from a small number rather than a large one, resolvers have taken the new value.

Three: make the change. Now the exposure is the low TTL.

Four: a day later, put the TTL back up. A permanent TTL of three hundred seconds means every resolver on earth re-queries your nameservers twenty times more often, which costs you resilience: if your DNS provider has a bad ten minutes, a long TTL means most of the world never notices.

Checking whether it worked, without the map sites

The websites that show a world map with green and red pins are checking a handful of public resolvers and rendering it dramatically. You can ask the same question directly, and get an answer you can reason about.

for r in 1.1.1.1 8.8.8.8 9.9.9.9 208.67.222.222; do
  printf '%-16s ' "$r"; dig +short example.com A @"$r"
done

And to skip every cache and ask the source of truth:

dig +trace example.com A

If the authoritative answer at the bottom of the trace is right and a public resolver still disagrees, you are looking at a cache with time left on it and there is nothing to fix. If the authoritative answer itself is wrong, no amount of waiting will help, and this is the case that gets mistaken for propagation more than any other. Somebody edits a zone at the registrar while the domain's nameservers point somewhere else entirely, then waits two days for a change that was never made where it counts.

Where this bites people who manage sites for others

Three situations, all common.

A migration that looks half-finished. Some visitors see the new site, some see the old one, and both are true. If the old server is still serving, the customer who reaches it has a working, wrong site, and if they place an order it lands in a database you are about to abandon. The mitigation is not DNS: it is to make the old origin redirect to the new one as soon as the cutover starts.

Mail that vanishes for a morning. MX records have TTLs too, and a sending server that cached the old MX will deliver to the old mailbox. Unlike a web visitor, the sender gets no clue at all.

Monitoring that lies in both directions. Your checker resolves the name too, and it caches. After a cutover it may keep hitting the old address for as long as its cache lasts, reporting a healthy site that no visitor is reaching, or reporting a failure on a new server that everyone else can already see. If a checker's answer disagrees with your browser during a migration, resolve the name yourself before you believe either of them.

That last one is a specific case of the general problem: a status code is only ever true about the machine that answered, and knowing which machine that was is half of every diagnosis. The same idea, applied to proxies rather than resolvers, is why a 502 tells you more than it seems to, and the shortlist of codes that are worth reading at all is here. Taken to its conclusion, that is the reason a 200 from the wrong machine is still a 200.

Share this post.
Stay up-to-date

Subscribe to our newsletter

Don't miss this

You might also like