DNS changes can appear correct in one location and wrong in another, making a problem look random when it is usually a matter of delegation, caching, record selection, or resolver behavior. This guide gives you a repeatable DNS propagation check for A, AAAA, CNAME, MX, TXT, and NS records, explains how to interpret conflicting results, and provides a practical workflow for fixing DNS changes that are not appearing as expected.
Overview
DNS propagation is the process by which a change becomes visible through recursive DNS resolvers and client networks. The authoritative nameserver may already return the new value while a resolver elsewhere continues to return an older cached value. That difference is why a single browser test or online lookup is not enough to confirm that a change is complete.
A useful DNS propagation check answers three separate questions:
- Is the record published? The authoritative nameserver should return the value you intended to add or change.
- Is the domain delegated correctly? The parent zone must point to the nameservers that actually contain your records.
- Are recursive resolvers returning consistent results? Different networks may temporarily show different answers because of cached data and TTL values.
Before troubleshooting, write down the exact hostname, record type, expected value, DNS provider, and approximate time of the change. Include the root domain and subdomain separately where relevant. For example, example.com, www.example.com, and mail.example.com may have completely different records.
Keep the record type in view throughout the investigation. An A record controls an IPv4 address, an AAAA record controls an IPv6 address, a CNAME creates an alias, MX records identify mail destinations, TXT records carry text-based verification or email-authentication data, and NS records identify delegation. Checking the wrong type can make a correct configuration appear broken.
Step-by-step workflow
1. Confirm the change at the DNS provider
Start at the control panel or API where the record was edited. Check the record name, type, value, TTL, and any proxy or routing setting. Pay particular attention to how the provider expects the name to be entered. Some interfaces treat www as relative to the zone, while others display or accept the full hostname.
Look for duplicate records and conflicting values. Two A records can be intentional, but an unexpected extra A or AAAA record may send some users to an old server. A CNAME cannot normally coexist with other data at the same name, so an alias and an address record at the same hostname deserve immediate review.
2. Query the authoritative nameserver
The authoritative answer is the best starting point because it shows what the DNS zone currently publishes. With dig, query the hostname and record type directly:
dig example.com A
dig www.example.com CNAME
dig example.com MX
dig example.com TXT
dig example.com NS
For a more focused result, use +short. To identify which nameserver is authoritative, first inspect delegation:
dig example.com NS +short
dig @ns1.example-dns-provider.com example.com A
Replace the nameserver in the second command with one returned by the delegation lookup. If the authoritative server returns the old value, the problem is not propagation. It is more likely an incorrect zone, an unsaved change, a duplicate record, or a record edited at a provider that is not authoritative for the domain.
3. Check delegation before checking global results
When nameservers were recently changed, query the parent delegation as well as the zone itself. Use:
dig example.com NS
dig +trace example.com A
The trace follows the DNS path from the root through the top-level domain to the domain's authoritative nameservers. You do not need to understand every line to benefit from it: check whether the final nameservers match the provider where you made the record change. If the registrar points to one provider but you edited another provider's dashboard, the new record will not be published for the public domain.
4. Compare recursive resolvers
Once the authoritative answer is correct, query more than one recursive resolver. Common command-line examples include:
dig @1.1.1.1 example.com A
dig @8.8.8.8 example.com A
dig @9.9.9.9 example.com A
Use resolver addresses appropriate to your environment and avoid treating any single resolver as a universal source of truth. If results differ, inspect the TTL shown in each response. A resolver returning an older value may still have that answer cached. Repeat the checks later rather than changing the record repeatedly, which can make the final state harder to identify.
5. Test the actual service separately
DNS resolution and application availability are different checks. Once the expected address resolves, test the service using tools such as curl:
curl -I https://www.example.com
An HTTP error, TLS warning, redirect loop, firewall block, or incorrect virtual-host configuration can remain after DNS is working. If the hostname points to a new server but the server is not configured for that hostname, investigate the hosting layer rather than waiting for more propagation.
For related deployment issues, see the guides on deploying a static site with a custom domain and automatic HTTPS and deploying a Node.js app on a VPS with Nginx, PM2, and SSL.
Tools and handoffs
A reliable investigation uses several tools, with each one answering a different question:
- Provider dashboard or API: confirms the intended configuration and whether the change was saved.
dig: provides precise queries for record types, nameservers, TTLs, and traces.nslookup: offers a convenient alternative on systems wheredigis unavailable.whoisor registrar tools: helps confirm domain registration and nameserver delegation details.- Web-based DNS lookup tools: provide a quick view across locations, but should be treated as supporting evidence rather than the only test.
- Service-level tools:
curl, mail delivery diagnostics, and application logs show whether the resolved destination is serving the expected service.
When handing the issue to a teammate, include the hostname, type, expected value, authoritative result, recursive results, TTL, nameservers, and exact commands or tools used. A screenshot without the query name and type is often insufficient. If the change affects email, include separate checks for MX, SPF, DKIM, and DMARC-related TXT records; a website test cannot validate mail routing or authentication.
Teams managing records through automation should also compare the live zone with the configuration in version control. Terraform, a provider API, or a deployment pipeline may restore an older value on the next apply. Review recent commits, state changes, and pipeline logs before making a manual edit that automation could overwrite. The Terraform DNS records guide covers this type of infrastructure workflow.
Quality checks
Use this checklist before declaring a DNS issue resolved:
- The hostname is spelled correctly, including the subdomain.
- The queried record type matches the intended change.
- The registrar's nameservers match the DNS provider where the record was edited.
- The authoritative nameserver returns the expected value.
- No unexpected A, AAAA, CNAME, MX, TXT, or NS records conflict with the design.
- Several recursive resolvers have been checked, with their TTLs noted.
- Local DNS cache, browser cache, VPN, corporate resolver, or hosts-file overrides have been ruled out.
- The destination service responds correctly after DNS resolution succeeds.
- HTTPS certificates, redirects, and proxy settings have been checked separately.
- Email records have been tested with the relevant mail service rather than a web browser.
Do not keep lowering the TTL after every failed test. TTL changes affect future caching behavior and do not instantly remove answers already cached by recursive resolvers. First establish whether the authoritative record is correct, then allow cached answers to age out according to the values being returned. If a resolver continues returning an old answer beyond the relevant TTL window, investigate delegation, resolver-specific caching, split DNS, or an overlooked duplicate record.
If a domain change is accompanied by redirect errors, review the guide to fixing too many redirects after a domain, proxy, or SSL change. For certificate-specific failures, use the ERR_SSL_PROTOCOL_ERROR troubleshooting guide.
When to revisit
Return to this workflow whenever you change nameservers, move DNS hosting, connect a domain to a new deployment platform, replace an origin server, add a CDN or proxy, or modify mail routing. It is also worth revisiting after a failed deployment when the application appears healthy at its direct address but not through the public hostname.
Update your team runbook when the DNS provider changes its interface, API behavior, proxy model, or record-import process. Refresh command examples if your operating system no longer includes a particular utility. Keep a small record-change log with the old value, new value, operator, timestamp, reason, and rollback value. This makes later propagation checks faster and reduces guesswork.
For the next DNS incident, follow the sequence in order: confirm the intended record, verify authoritative nameservers, compare recursive resolvers, test the service, and document the evidence. If you need a broader command-line reference, see how to use dig, nslookup, and whois to troubleshoot domain problems. A disciplined DNS propagation check turns a vague delay into a set of observable results and points you toward the layer that actually needs fixing.