Module 2: DNSLesson 7 of 135 min read
DNS TTL and propagation: why changes take time
After changing a DNS record, people are often told to wait up to 48 hours for propagation. That makes it sound as if the new value slowly spreads across the internet. It doesn't. The change is complete on your DNS provider's servers almost immediately. What takes time is the old answer expiring from caches, and that time is set by a number you control: the TTL.
TTL: a cache timer on every record
RFC 1035 defines the TTL as a 32-bit number giving the time interval, in seconds, that a record may be cached before the source of the information should be consulted again. A value of 0 means the record can only be used for the transaction in progress and should not be cached.
Cloudflare's guide describes caches at several levels: the browser, the operating system's stub resolver and the recursive resolver at your ISP or DNS service. Each holds a copy for at most the TTL it received. A resolver passes on the remaining time, not the original, so a record with TTL 3600 that has sat in a cache for 20 minutes is handed out with about 2,400 seconds left.
Long or short?
Cloudflare's documentation sums up the trade-off: longer TTLs speed up lookups by increasing the chance of cached results, but updates take longer to take effect. On Cloudflare, records that are not proxied can use a TTL from 60 seconds (30 on Enterprise plans) to 1 day; Auto means 300 seconds.
Why propagation looks random
Different resolvers cached the old record at different moments, so they expire at different moments. One resolver may have fetched it a second before your change and keep it for the full TTL; another may not have had it cached at all and fetches the new value immediately. Checking from several places at once shows this patchwork, which is what propagation checkers do.
Some differences are not caching at all. Content delivery networks give different addresses depending on where the question comes from, so two regions can disagree permanently, and both answers are correct.
Negative answers are cached too
If you look up a name before creating its record, the resolver gets a negative answer: NXDOMAIN when the name does not exist, or NODATA when the name exists but has no record of that type. RFC 2308 requires negative answers to include the zone's SOA record so they can be cached, and sets their cache time to the smaller of the SOA record's own TTL and its MINIMUM field.
So a test lookup made too early can make a new record look missing for a while after you add it. RFC 2308 suggests resolvers limit negative caching, noting that values of one to three hours work well and values above one day cause problems.
Negative cache time
Negative TTL = min(SOA TTL, SOA MINIMUM). Example: SOA TTL 3600, MINIMUM 1800 → min(3600, 1800) = 1800 seconds. A resolver that got NXDOMAIN for new.example.com at 10:00 may keep repeating it until 10:30, even if you create the record at 10:01.
Worked example: moving a website with a short switch
The A record for www.example.com points to 192.0.2.10 with a TTL of 14,400 seconds (4 hours). The site is moving to 198.51.100.20. Changing the address directly would leave some visitors on the old server for up to 4 hours. Lowering the TTL first shortens that to minutes.
Timeline
Monday 10:00: change only the TTL, from 14,400 to 300. Resolvers that cached the record at 09:59 still hold it, with the old 4-hour TTL, until 13:59. Monday 14:00 or later: every cached copy now has a TTL of at most 300 seconds. Tuesday 10:00: change the address to 198.51.100.20. By 10:05 at the latest, every resolver that follows TTLs asks again and gets the new address. Keep the old server running a little longer for clients that don't, then raise the TTL back to 14,400.
Reading a propagation check
When you check a record shortly after a change, a mixed result is expected. What matters is the remaining TTL of the old answers: once the longest of them has run out, every resolver that respects TTLs must ask again. If old answers persist past that point, either the change was not saved on the authoritative servers, or the domain's NS records point somewhere other than where you edited.
Ask many resolvers the same question at once. Type the value you expect in Expected value (optional) and press Check: the table marks each answer Matches or Doesn't match and shows its TTL left. Longest TTL seen is the latest moment an old answer can still be served.
DNS propagation checkerQuick check
Three questions. Pick an answer to see why.
You changed an A record at 12:00. Its TTL was 7200 seconds. When is the latest a TTL-respecting resolver can still serve the old address?
Show the answer
Answer: Around 14:00, two hours after the change A resolver that cached the record just before 12:00 may keep it for the full 7,200 seconds.
Why should you lower a record's TTL before changing its value, not at the same time?
Show the answer
Answer: Because caches holding the old record still use its old, long TTL until it expires Only after the old TTL has passed do all cached copies carry the new short TTL.
A zone's SOA record has TTL 3600 and MINIMUM 900. How long may a resolver cache an NXDOMAIN answer from it?
Show the answer
Answer: 900 seconds min(3600, 900) = 900 seconds, or 15 minutes.
Standards, not guesses
These guides explain how the internet's plumbing works, using the published standards (RFCs) and official documentation. Each guide shows the date it was last checked.
Sources
- RFC 1035: Domain Names – Implementation and Specification
- RFC 2308: Negative Caching of DNS Queries (DNS NCACHE)
- Cloudflare Docs – Time to Live (TTL)
- Cloudflare Learning Center – What is DNS? (DNS caching)
Last checked October 28, 2026