Understanding DNS Propagation (And Why It Takes Forever)
You changed your DNS record. You checked the authoritative nameserver—it's there! But half the internet still sees the old value. Welcome to DNS propagation, the most frustrating waiting game in web development.
What Actually Is "Propagation"?
First, let's debunk a myth: DNS doesn't actually "propagate." There's no wave of updates spreading across the internet. The word "propagation" is a misnomer, but we're stuck with it.
What's really happening: DNS records are cached everywhere, and those caches expire at different times.
When you change a DNS record, you're updating it on your authoritative nameserver. But millions of DNS resolvers around the world have the old value cached. They'll keep serving that old value until their cache expires (based on the record's TTL).
The Layers of DNS Caching
DNS records get cached at multiple levels. When you change a record, you're waiting for caches to expire at ALL of these layers:
1. Your Browser
Most browsers cache DNS lookups independently. Chrome, Firefox, Safari—they all do it. Even if every DNS server in the world has the new record, your browser might still have the old one cached.
How long? Usually 60 seconds to a few minutes.
How to clear it:
- Chrome: Visit
chrome://net-internals/#dnsand click "Clear host cache" - Firefox: Restart the browser
- Safari: Quit and reopen
2. Your Operating System
Windows, macOS, and Linux all cache DNS lookups at the OS level. Applications query the OS cache before hitting external DNS servers.
How long? Varies by OS and TTL, usually minutes to hours.
How to clear it:
- Windows:
ipconfig /flushdns - macOS:
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder - Linux:
sudo systemd-resolve --flush-caches(if using systemd-resolved)
3. Your Router
Many routers cache DNS queries. All devices on your network share this cache.
How long? Depends on the router, often several hours.
How to clear it: Restart your router (or change your device's DNS to 8.8.8.8 to bypass it).
4. Your ISP's DNS Resolver
This is the big one. ISP resolvers handle DNS for millions of users. They cache aggressively to reduce load on authoritative servers.
How long? Supposed to respect TTL, but many ISPs ignore it and cache for 24+ hours.
How to bypass it: Use public DNS like Google (8.8.8.8) or Cloudflare (1.1.1.1).
5. Public DNS Resolvers (Google, Cloudflare, etc.)
These generally respect TTL values. If your TTL is 300 seconds, they'll cache for 300 seconds.
How long? Exactly the TTL you set (usually).
6. CDNs and Reverse Proxies
If you use Cloudflare, AWS CloudFront, or similar services, they cache DNS lookups too.
How long? Varies by service and configuration.
The Role of TTL (Time To Live)
TTL is how long (in seconds) a DNS record should be cached. When a resolver queries your authoritative nameserver, the response includes a TTL:
example.com. 300 IN A 93.184.216.34That 300 means "cache this for 300 seconds (5 minutes)." After 5 minutes, the resolver should fetch fresh data.
Common TTL Values
- 300 seconds (5 min) — Good for active sites with potential for changes
- 3600 seconds (1 hour) — Standard for most domains
- 86400 seconds (24 hours) — For rarely-changing records
- 60 seconds (1 min) — For testing or when changes are imminent
The Problem: Not Everyone Respects TTL
In a perfect world, if you set TTL to 60 seconds, everyone would refresh after 60 seconds. In reality:
- Some resolvers ignore TTL and cache longer
- Some enforce minimum TTLs (e.g., "never cache less than 5 minutes")
- Some over-respect TTL and cache even longer "to be safe"
This is why DNS propagation is unpredictable. You can set TTL to 60 seconds, but some resolver in Romania might cache it for 6 hours anyway.
Why "Up to 48 Hours"?
You've seen this warning everywhere: "DNS changes can take up to 48 hours to propagate globally."
This is outdated but conservative advice. Back in the early internet, many resolvers had default cache times of 24-48 hours. Today, most respect reasonable TTLs.
The reality in 2026:
- If your TTL is 5 minutes, most users see changes within 5-15 minutes
- If your TTL is 1 hour, most users see changes within 1-2 hours
- If your TTL is 24 hours, yeah, it might take 24-48 hours
The "48 hour" rule is worst-case scenario. Most changes propagate much faster.
Nameserver Changes Are Different
Changing an A record? That's fast (TTL-dependent).
Changing your domain's nameservers (pointing your domain to different DNS providers)? That's slow.
When you change nameservers at your domain registrar, the change has to propagate through the parent zone (the .com zone, .net zone, etc.). These zones have their own TTLs, often 24-48 hours.
Strategy for nameserver changes:
- Set up the new nameservers with identical records to the old ones
- Change the nameserver delegation at your registrar
- Wait 48-72 hours
- Verify all traffic is hitting new nameservers
- Only then make record changes
How to Speed Up DNS Propagation
Before Making Changes
Lower your TTL 24-48 hours in advance. If your record has a 24-hour TTL and you change it today, some resolvers will cache the old value for 24 hours. But if you lower the TTL to 5 minutes a day before your change, most caches will have expired by the time you make the actual change.
After Making Changes
- Clear your local caches (browser, OS) so you're not fooled by your own cache
- Use public DNS (8.8.8.8, 1.1.1.1) to bypass ISP caches
- Check from multiple locations using tools like DNS Checker or What's My DNS
- Query authoritative nameservers directly to verify the change is live:
dig @ns1.yourprovider.com yourdomain.com
Use Low TTLs for Dynamic Records
If a record changes frequently (like for blue/green deployments or failover), keep its TTL at 60-300 seconds. Yes, this means more queries to your nameservers, but authoritative DNS is cheap and fast.
Checking Propagation Status
Command Line
Query different public resolvers:
dig @8.8.8.8 yourdomain.com # Google dig @1.1.1.1 yourdomain.com # Cloudflare dig @208.67.222.222 yourdomain.com # OpenDNSIf they all return the same value, propagation is mostly complete.
Web Tools
- DNS Checker — Shows results from 20+ locations worldwide
- What's My DNS — Clean interface, global coverage
Common Propagation Issues
I Updated the Record but Nothing Changed
- Did you update the right zone? (Check your authoritative nameserver directly)
- Did you save/publish the change? (Some DNS panels require a "publish" step)
- Are you checking cached values? (Clear local caches, query public DNS)
Some Locations See New Value, Others See Old
This is normal during propagation. Caches expire at different times. Check the TTL on the old record— that's how long the stragglers will take.
It's Been Way Longer Than the TTL
- Some resolvers ignore TTL (especially small ISPs)
- Some caches have minimum TTL overrides
- Cloudflare and other CDNs may have additional caching layers
Different Regions See Different Values (And It's Not Caching)
You might have GeoDNS or Anycast configured. Some DNS providers return different answers based on the querying location. This is intentional, not a propagation issue.
The Lifecycle of a DNS Change
- T+0 min: You update the record on your authoritative nameserver
- T+0 min: Queries to authoritative server immediately return new value
- T+5 min: Public DNS resolvers (Google, Cloudflare) see new value (if TTL was 5 min)
- T+15 min: Most users worldwide see new value
- T+1 hour: 90%+ of traffic sees new value
- T+24 hours: Virtually everyone sees new value
- T+48 hours: Even the most stubborn ISP caches have expired
Best Practices
- Use reasonable TTLs — 5 minutes to 1 hour for most records
- Lower TTL before big changes — 24-48 hours in advance
- Raise TTL after changes stabilize — Reduces query load
- Test changes on staging domains first — Catch issues before they affect production
- Keep old infrastructure running during propagation — Don't turn off the old server the second you change DNS
- Monitor from multiple locations — Don't assume your local view is what everyone sees
- Have a rollback plan — Know how to revert changes if things go wrong
Final Thoughts
DNS propagation isn't magic, and it's not really "propagation." It's just caches expiring at different rates across millions of resolvers worldwide.
Understanding this makes it less frustrating. You can't force instant propagation (the internet doesn't work that way), but you can:
- Plan around TTLs
- Lower TTLs before changes
- Clear local caches to test
- Monitor propagation status
- Be patient
Most importantly: it's not broken, it's just slow. If your authoritative nameserver has the new record, propagation is happening. Just give it time.
And remember: it's always DNS, but sometimes it's just DNS... waiting.