You've updated your A record or switched nameservers. You refresh your browser and… nothing has changed. Or worse — some people can see the new site and some still see the old one. This is DNS propagation, and it's one of the most confusing parts of managing a domain.
When someone types your domain into their browser, their computer asks a DNS resolver (usually provided by their ISP, or a public one like Google's 8.8.8.8) for the IP address of your domain. That resolver either has the answer cached from a previous lookup, or it goes and fetches it from your authoritative nameservers.
The key word is cached. Resolvers don't fetch the record fresh every time — they store it for a period defined by the TTL (Time To Live) value in your DNS record. Until that cache expires, visitors using that resolver will still get the old answer.
TTL is a number (in seconds) that tells resolvers how long they should cache a DNS record before checking for an updated value. Common values:
If your A record has a TTL of 86400 and a resolver cached it 23 hours ago, it will use the old value for another hour before re-checking. This is why "DNS propagation" can take up to 48 hours — you're waiting for every resolver on the internet to expire their individual caches.
The trick is to lower your TTL before you make the change. Here's the standard process for a domain migration:
💡 Lowering the TTL after making a change does nothing — resolvers have already cached the old value for the original TTL duration. Always lower TTL 24–48 hours before your planned change.
Changing your domain's nameservers (the NS records at the registry level) takes longer than updating individual records within your zone. This is because:
For nameserver changes, plan for up to 48 hours of mixed propagation where some users see the old site and some see the new one.
Different resolvers cache independently. Google's 8.8.8.8 might have cached your old record 2 hours ago, while Cloudflare's 1.1.1.1 checked 10 minutes ago and has the new answer. This creates the situation where "it works for me but not for my client."
Use Fred's propagation checker to query multiple resolvers simultaneously and see exactly where your change has and hasn't reached yet.
If your change isn't showing after 48 hours, check these common culprits:
ipconfig /flushdns (Windows) or sudo dscacheutil -flushcache (macOS)