# DNS record diff: compare live DNS with expected records

> Compare expected DNS records with live authoritative answers. See added, missing, changed and TTL-only differences without saving a snapshot.

- Canonical HTML page: https://dodomain.io/tools/dns-diff
- This Markdown twin: https://dodomain.io/tools/dns-diff.md
- Site index for agents: https://dodomain.io/llms.txt
- Full documentation as Markdown: https://dodomain.io/docs/llms-full.txt

Generated at build time from the same React source the HTML page renders, never a hand-maintained second copy. Every public page on this host has a twin at `<url>.md`.

---

Free tools

## DNS record diff

Compare the records you expect with a fresh DNS snapshot and see what differs.

### How it works

1. **Paste the expected set.** Supply a JSON array of up to 25 records, each with a full name, type and value. TTL is optional and measured in seconds.
2. **Take a live snapshot.** The engine queries only the names and record types in your set, reading authoritative answers and public resolver views.
3. **Review the differences.** Compare added, removed, changed and TTL-only rows. Failed lookups and unavailable TTLs stay explicit, and no snapshot is saved for later retrieval.

### Use the free API

No API key required. Omit the Accept header for JSON. These read-only checks share a per-address rate limit; a 429 response means wait before trying again.

```
curl --get 'https://app.dodomain.io/api/tools/dns-diff' --data-urlencode 'expected=[ { "name": "www.example.com", "type": "A", "value": "192.0.2.10", "ttl": 300 } ]' -H 'Accept: text/markdown'
```

### A snapshot, not a zone export

Only the name/type pairs you supply are queried. Records elsewhere in the zone are outside this comparison. For ongoing checks on customer connections, DoDomain's [connect flow](https://dodomain.io/docs/connect-flow) verifies records and monitors connected domains for drift.

### Frequently asked questions

#### What format should I paste?

A JSON array with one object per expected record: name is fully qualified, type is one of A, AAAA, CNAME, TXT, MX, NS, CAA, and value is a string. Add ttl in seconds if you want to compare it. Include every expected answer for a name and type, with at most 25 records in total.

#### What do added, removed and changed mean?

The pasted set is the baseline. Added means a live answer is absent from that baseline; removed means an expected answer is missing from DNS; changed pairs a different value at the same name and type. TTL-only means the value matches but its measurable TTL differs.

#### Can every TTL be compared?

No. The DNS engine exposes TTLs for A and AAAA answers. Other record types report TTL as unavailable; the tool does not invent a value or call an unavailable TTL a match.

#### Can I compare with a previous snapshot ID?

No. This tool has no anonymous snapshot storage. Paste your expected set each time. The GET form puts that set in the page URL, so use public DNS data you are comfortable including in a shareable URL.

### Start on the free plan

No card, no sales call: create an app, mint a session, and watch the first domain verify.

[Start with 50 free](https://app.dodomain.io/signin?mode=signup) [Read the quickstart](https://dodomain.io/docs)

### More free tools

- [DNS provider detector](https://dodomain.io/tools/provider-detector)
  
  Which DNS host serves a domain, and whether one-click setup is available there.
- [DNS propagation checker](https://dodomain.io/tools/dns-lookup)
  
  One record, read from the authoritative nameservers and three public resolvers.
- [SPF record checker](https://dodomain.io/tools/spf-checker)
  
  Parse a domain's SPF, walk its includes, count the lookups against the limit of ten.
- [CNAME chain checker](https://dodomain.io/tools/cname-chain)
  
  Follow aliases and flag loops, apex CNAMEs and possible flattening.
- [Domain verification diagnoser](https://dodomain.io/tools/verify-diagnoser)
  
  Compare a domain with its expected target and find the provider's fix instructions.
