How to Check DNS Propagation: 4 Methods (Free & Instant)

You've made a DNS change β€” updated an A record, switched email providers, added a TXT record for domain verification. Now you need to know: has it propagated? Are the major resolvers picking it up? Are your visitors reaching the right server?

Here are four methods to check DNS propagation, from quickest to most detailed.

Check DNS Propagation Now β€” Free Online Tool

Method 1: Online DNS Checker (Fastest)

The quickest way to check propagation across multiple resolvers at once is an online DNS checker. Our tool queries Google (8.8.8.8), Cloudflare (1.1.1.1), Quad9 (9.9.9.9) and OpenDNS simultaneously and shows you what each one returns β€” all in a few seconds.

To use it:

  1. Go to toolsoasis.dev/dns-checker
  2. Enter your domain name (e.g. example.com)
  3. Select the record type you want to check (A, MX, TXT, CNAME, etc.)
  4. Click Check DNS

The results show what each resolver currently returns, the TTL (how long the result is cached), and a propagation status summary. If all four resolvers return the same answer, your change has propagated to the resolvers that cover the majority of internet users.

When to use this: When you want a quick answer about whether major public resolvers have picked up your change. Covers Google, Cloudflare, Quad9 and OpenDNS β€” the resolvers used by 70%+ of internet users.

Method 2: dig Command (Linux / macOS)

dig (Domain Information Groper) is a command-line tool installed by default on Linux and macOS. It gives you detailed DNS query output and lets you specify exactly which resolver to query.

Basic usage:

# Check what Google DNS returns for your A record
dig @8.8.8.8 example.com A

# Check what Cloudflare DNS returns
dig @1.1.1.1 example.com A

# Check the authoritative nameserver directly
dig @ns1.yourprovider.com example.com A

# Check an MX record on Google DNS
dig @8.8.8.8 example.com MX

# Check a TXT record (SPF, DKIM, verification)
dig @8.8.8.8 example.com TXT

Reading the output:

;; ANSWER SECTION:
example.com.    300    IN    A    93.184.216.34
              ↑TTL         ↑Type  ↑Answer

Key things to look at:

  • The answer: Is it the new IP/value you set, or the old one?
  • TTL: The remaining cache lifetime. A TTL of 300 means the resolver will keep this cached for 5 more minutes before re-fetching.
  • AUTHORITY SECTION: If there's no ANSWER section, the resolver may return an AUTHORITY section showing which nameserver holds the records.

To compare what the authoritative nameserver (the source of truth) says versus what a caching resolver has cached, run the query against both. If the authoritative server has your new value but the caching resolver still has the old one, propagation is in progress.

Method 3: nslookup (Windows)

nslookup is available on all Windows versions and provides similar functionality to dig:

# Check an A record using Google DNS
nslookup example.com 8.8.8.8

# Check an MX record
nslookup -type=MX example.com 8.8.8.8

# Check a TXT record
nslookup -type=TXT example.com 8.8.8.8

# Check CNAME
nslookup -type=CNAME www.example.com 8.8.8.8

The syntax is nslookup -type=RECORD_TYPE domain resolver_ip. If you omit the resolver IP, it uses your system's default resolver β€” which is useful to know what your local network currently resolves, but less useful for checking propagation broadly.

Method 4: Query Your Browser's View (Flush DNS Cache)

Your browser and operating system also cache DNS responses independently. Even if all the major resolvers have propagated your change, you might still see the old result locally because your machine cached it earlier.

To flush your local DNS cache and get a fresh result:

Windows:

ipconfig /flushdns

macOS:

sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder

Chrome (browser-level cache): Visit chrome://net-internals/#dns and click Clear host cache.

After flushing, visit your domain in an incognito window to avoid any browser-level caching.

How to Tell When Propagation Is Complete

Propagation is effectively complete when:

  • The major public resolvers (Google, Cloudflare, Quad9, OpenDNS) all return your new record
  • Your authoritative nameserver and all checked resolvers return the same value
  • The TTL on the returned record reflects your current TTL setting, not a residual long TTL from the old record

There will always be some obscure ISP resolver somewhere in the world that's still caching the old record. This is normal. Once the major public resolvers are consistent, the change is live for the vast majority of your visitors.

If Propagation Seems Stuck

If a resolver is still returning the old record long after the TTL should have expired, a few things may be happening:

  • The change wasn't made correctly. Re-check your authoritative nameserver. Does it show the new record? If the authoritative server still has the old value, no amount of waiting will help.
  • TTL violation. Some ISP resolvers ignore TTL values and cache records for longer than specified. This is incorrect behavior but it happens.
  • You changed the wrong record. Did you update www.example.com but check example.com? Or update a record at the wrong domain?
  • Your local cache. Flush your local DNS cache (see Method 4 above) before concluding propagation is stuck.
Check DNS Propagation Across All Major Resolvers