Skip to content

Why Is My DNS Not Propagating?

Short answer

Almost always one of six things: you edited a zone that is not authoritative, the nameserver delegation has not moved yet, the old TTL has not expired, a negative answer is cached, a CDN proxy is masking the record, or only your own machine is stale. Check the authoritative server first — that answer tells you which.

Check it yourself
DNS Propagation Checker
Check a DNS record across 85 public resolvers

Before anything else, split the problem in half. Ask the authoritative nameserver directly. If it returns the new value, your change is correct and everything remaining is caching — a waiting problem. If it returns the old value or nothing, the change never landed where it needed to — a configuration problem. Nearly every wasted hour of "DNS propagation" debugging comes from not making this distinction first.

# 1. Who is actually authoritative for the zone?
dig +short example.com NS

# 2. Ask one of those nameservers directly — no recursion, no cache
dig @a.iana-servers.net +noall +answer example.com A

# 3. Now compare against a public resolver
dig @1.1.1.1 +noall +answer example.com A
Step 2 is the source of truth. Step 3 is a cache.
NS Record Lookup
Authoritative nameservers for a domain

Did you edit the zone that is actually in use?

This is the number one cause, and it costs people days. Your registrar, your web host, and your DNS provider can be three different companies, and each of them offers a DNS editing screen. Only the one whose nameservers appear in your delegation is authoritative — edits anywhere else are written into a zone that nobody queries.

Run the NS Record Lookup and compare the result against the DNS panel you have been editing. Classic mismatches: nameservers point at Cloudflare while you edit records at GoDaddy; nameservers point at the host's ns1. / ns2. pair while you edit "DNS management" at the registrar; a www record was added at one provider and the apex at another. The WHOIS Lookup shows the nameservers the registrar has on file, which is useful when the delegation itself looks wrong.

If the NS answer names a provider you do not have a login for, stop editing DNS and go find that account. Nothing you change elsewhere will ever take effect.

Has the delegation itself moved yet?

If you changed nameservers at the registrar, you are not waiting on your own TTL — you are waiting on the parent zone. The TLD registry publishes the new NS set, and those delegation records carry the registry's TTL, commonly 86400 seconds for .com. Until that expires, resolvers that already cached your delegation keep asking your old nameservers. Query the parent directly to see what the registry has actually published:

# What the TLD servers hand out for the delegation
dig @a.gtld-servers.net example.com NS

# Full path from the root, hop by hop
dig +trace example.com A
+trace walks root → TLD → your nameservers, bypassing your resolver cache at each step.

While the delegation is in flight, both the old and the new nameservers will be receiving real queries. Keep the old zone accurate and serving until the parent TTL has fully expired, or some users will get the old answers and some will get the new ones.

Is the old TTL simply still running?

Query a public resolver twice, a few seconds apart. A TTL that counts down means the resolver is serving from cache and will re-ask when it reaches zero. A TTL that stays at its full value means you are getting a fresh answer. There is no way to shorten someone else's cache — see How Long Does DNS Propagation Take? for why, and Lower Your TTL Before a DNS Migration for how to avoid this next time.

Is a negative answer cached?

If the hostname did not exist before you created it, and anyone queried it in the meantime, resolvers cached the NXDOMAIN. That negative answer lives for up to the minimum field of your zone's SOA record — the last number in the SOA — capped by each resolver's own limit. The record's own TTL is irrelevant here; the resolver is not caching your record, it is caching the absence of it. Read your value with the SOA Record Lookup.

SOA Record Lookup
Zone serial, refresh, and primary nameserver

Is a CDN or proxy sitting in front of the record?

When a record is proxied — Cloudflare's orange cloud, or any similar reverse-proxy product — public DNS returns the proxy's anycast address, not your origin. Changing the origin IP in the DNS panel changes nothing that any resolver can see, because the published answer was never your origin in the first place. The traffic swap happens inside the proxy, and the record you are staring at will never reflect it.

Two symptoms give this away: the returned address belongs to a CDN rather than your host (check it with the ASN Lookup or a Reverse DNS lookup), and the TTL is a fixed provider value like 300 no matter what you set. To test the origin during a migration, resolve directly against the origin address rather than through the proxied name.

Or is it just your own machine?

If public resolvers return the new value and your browser does not, the problem is one laptop, not the internet. Both your operating system and your browser keep their own caches, and browsers additionally hold open keep-alive connections that survive a DNS change entirely. Flush both before you conclude anything:

# macOS
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder

# Windows (Command Prompt or PowerShell, as Administrator)
ipconfig /flushdns

# Linux with systemd-resolved
sudo resolvectl flush-caches

# Linux running nscd or dnsmasq instead
sudo systemctl restart nscd
sudo systemctl restart dnsmasq
Flush the OS resolver cache. Chrome keeps a separate one at chrome://net-internals/#dns.
  • In Chrome, open chrome://net-internals/#dns and clear the host cache, then chrome://net-internals/#sockets and flush socket pools — an open connection will ignore a fresh DNS answer.
  • Firefox: about:networking#dns has a Clear DNS Cache button.
  • Test outside the browser entirely with dig or host — those tools bypass every browser cache and, with an explicit @resolver, most OS caching too.
  • If your router or corporate gateway runs a forwarding resolver, it caches as well; a device on cellular data is a fast way to prove whether the network is the variable.
  • VPNs and split-DNS setups can resolve internal names from an entirely different zone. Disconnect and retest before blaming the public record.

If the browser shows DNS_PROBE_FINISHED_NXDOMAIN specifically, the dedicated guide Fix DNS_PROBE_FINISHED_NXDOMAIN separates the server-side from the client-side causes.

When the answer is an error rather than stale data

If lookups return SERVFAIL rather than an old value, this is not a propagation issue at all — the zone is failing to resolve. A broken DNSSEC chain after a nameserver move is the classic cause: the DS record at the registry still points at keys the new provider does not have. Test with the DNSSEC Checker, and read SERVFAIL vs NXDOMAIN to interpret the response code. If mail broke at the same time, start with Mail Bouncing After a DNS Change?.

Frequently asked questions

The propagation checker shows some locations updated and some not. Is that a problem?
No, that is the expected pattern. Each resolver cached the old answer at a different moment, so each expires at a different moment. As long as the authoritative nameservers return the new value consistently, the mixed map simply reflects caches at different points in their countdown. It resolves itself once the longest TTL elapses.
I changed the record hours ago and the authoritative server still returns the old value. Now what?
Then it is not a caching problem. Confirm you edited the exact record name — a trailing-dot or bare-host mistake often creates www.example.com.example.com instead of www.example.com. Check that the change was saved rather than left in a pending or draft state, and that the provider does not require an explicit publish step for the zone.
Does restarting my router help?
It clears any cache the router itself holds, which helps if the router is acting as a forwarding resolver for your network. It does nothing to the upstream ISP resolver, which is the cache that usually matters. A faster test is to query a public resolver explicitly with dig @1.1.1.1 and see whether the network is even the variable.
Why does my site work but email stopped after the nameserver move?
A new DNS provider usually imports the records it can detect and misses the rest — MX records may come across while SPF, DKIM, and DMARC TXT records do not, or a mail subdomain is dropped entirely. Verify with the MX Lookup and run the Email Deliverability Test against the new zone.
Can I check propagation without any command-line tools?
Yes. The DNS Propagation Checker queries the record from many locations at once, and DNS Compare runs the same query against Google, Cloudflare, Quad9, and OpenDNS side by side. Both let you see disagreement between resolvers without installing anything.

Last updated: 2026-09-01