IAnswerable

DNS Propagation: What's Actually Happening

26 Nov 2025

“DNS propagation” isn’t a thing spreading across the internet like a rumor. It’s just caches expiring on their own schedules. Once you understand TTL, the “24-48 hours” advice stops being a mystery and starts being a number you control.

There’s no global sync

When you change a DNS record, you update it in one place: your authoritative nameserver (Cloudflare, Route53, wherever your domain is hosted). That change is instant. The delay people call “propagation” is every resolver between you and your visitors that already cached the old answer and hasn’t asked again yet.

A resolver — your ISP’s, Google’s 8.8.8.8, your office router — doesn’t re-check a DNS record every time someone asks. It fetches the record once, then serves that cached answer to everyone behind it until the TTL runs out. Different resolvers cached your record at different times, so they expire at different times. That’s the entire “propagation” phenomenon: staggered cache expiry, not a wave rolling across the internet.

TTL is the actual lever

TTL (time-to-live) is a number in seconds attached to every DNS record, telling resolvers how long they’re allowed to cache the answer.

TTL Meaning
300 (5 min) Resolvers must re-check within 5 minutes
3600 (1 hr) Cached for up to an hour
86400 (24 hr) Cached for a full day — the common default

If your A record has a 24-hour TTL and you change the IP, anyone whose resolver cached it 23 hours ago won’t see the change for another hour. That’s where “24-48 hours” comes from — it’s roughly two TTL cycles’ worth of worst-case staggering, not a fixed internet-wide delay.

Plan the change before you make it

If you know a migration is coming — new server, new host, a domain move — drop the TTL well before you need to change the record, not at the moment you change it:

  1. Lower the TTL to 300 (5 minutes) at least 24-48 hours ahead of the change. This has to happen before the cutover, because the low TTL itself needs to propagate through the old, longer-TTL caches first.
  2. Make the actual record change.
  3. Because the cached TTL is now 5 minutes, most resolvers pick up the new value almost immediately.
  4. Raise the TTL back to something normal (3600 or 86400) once you’ve confirmed the cutover is stable.

Skip step 1 and you’re stuck waiting out whatever the old TTL was — if it was a day, you eat the full day even for a change you planned.

Checking what’s actually cached where

Don’t trust your own browser — it has its own DNS cache on top of the OS resolver, which is on top of your router, which is on top of your ISP. Query an authoritative source directly instead:

dig example.com @8.8.8.8
dig example.com @1.1.1.1

Comparing answers from a few public resolvers tells you whether the new record has actually reached the outside world, independent of your own machine’s stale cache lying to you.

To check what TTL a record is actually serving right now:

dig example.com +noall +answer

The number in the second column is the remaining TTL in seconds for that cached copy — it counts down, so querying twice a minute apart shows it decreasing.

The one thing that ignores TTL

NS record changes (moving to a new nameserver, e.g. switching registrar-to-Cloudflare) are the one case where old-school “up to 48 hours” advice is closer to true, because some resolvers and registrars cache NS delegation more conservatively than your record’s stated TTL. For a straightforward A or CNAME record change on a domain that’s already on your target nameservers, a well-planned low-TTL cutover is minutes, not days.