Changed a DNS record and some people still see the old one? Learn how TTL and resolver caching cause "propagation" and how to check it worldwide.
You pointed your domain at a new server, and half your users still land on the old one. That delay is what people call DNS propagation. Nothing is actually propagating — old answers are sitting in caches around the world, waiting to expire.
When someone visits your domain, their device asks a recursive resolver (their ISP's, or a public one like 1.1.1.1 or 8.8.8.8). That resolver asks your authoritative name servers once, then caches the answer for as long as the record's TTL (time to live) allows. Until the TTL runs out, everyone using that resolver keeps getting the cached, old answer.
So the maximum delay for a change is roughly the old TTL of the record. A record with a TTL of 86400 seconds can take up to a day to update everywhere; one with a TTL of 300 takes about five minutes.
Changing which name servers a domain uses (at your registrar) involves the TLD's servers, whose NS records commonly carry TTLs of a day or two. Plan for up to 48 hours.
The DNS lookup queries your record from resolvers in many countries at once, so you can see which locations already return the new value and which still serve the old one. You can query A, AAAA, CNAME, MX, TXT, NS, SOA and PTR records, and choose a specific resolver to test.
Typical things to verify after a change:
Your own machine and browser cache DNS too. Flush it (ipconfig /flushdns on Windows, sudo resolvectl flush-caches on most Linux systems, sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder on macOS) or test with a different resolver. Then confirm the site itself answers on the new server with a website check.