How to use it
- Put the name in the first field. Underscore labels such as _dmarc.google.com are ordinary names here; an internationalised one becomes its A-label. Type an IP address instead for the in-addr.arpa or ip6.arpa form.
- Choose the record type — A, AAAA, CNAME, MX, TXT, NS, SOA, CAA, PTR or SRV — and the resolver. Cloudflare and Google are both named, privacy policies linked, before any request line exists.
- Press Copy request and run it yourself: a plain GET with an accept: application/dns-json header. A dig equivalent sits beside it.
- Paste the answer below and press Decode answer: the table gives owner name, type, remaining TTL and parsed value, with authority records kept apart.
- Copy JSON keeps the decoded structure, Copy table the rows. Share carries the question — never the answer.
Name a domain, pick a record type, and this page writes the exact DNS-over-HTTPS request for the resolver you chose. You run that one line and paste the JSON answer back. What returns is split into typed fields — preference and exchange for MX, the string sequence inside a TXT, the alias hops ahead of an address — with the resolver named and the answer's age stated.
Examples
example.com A
↓example.com A → NOERROR · A 172.66.147.243 (TTL 300) · A 104.20.23.154 (TTL 300)
Two addresses for one name: a load-balanced host, and the client picks. Both rows show 300 seconds of remaining TTL. Schema-derived fixture, addresses from dig on 2026-08-14 — not a live capture, so run it today and they may differ.
google.com MX
↓google.com MX → NOERROR · MX 10 smtp.google.com (TTL 300)
MX data is two tokens: a 16-bit preference, then the exchange name (RFC 1035 §3.3.9). Lower is tried first, so it is an order, not a score. A bare-dot exchange at preference 0 is RFC 7505's null MX — no mail accepted.
_dmarc.google.com TXT
↓_dmarc.google.com TXT → NOERROR · TXT v=DMARC1; p=reject; rua=mailto:mailauth-reports@google.com (TTL 300)
An underscore label is a normal name — RFC 8552 reserves that space — so rejecting one is wrong about DNS. What the policy string means belongs to the email-authentication page.
www.microsoft.com A
↓www.microsoft.com A → NOERROR · CNAME www.microsoft.com-c-3.edgekey.net (TTL 300) · CNAME e13678.dscb.akamaiedge.net (TTL 300) · A 23.199.2.40 (TTL 20)
Asking for an address returned two aliases first. The chain keeps the resolver's order: the address belongs to the last name in it, hence that row's own 20-second TTL.
nonexistent-g325-probe.example A
↓nonexistent-g325-probe.example A → NXDOMAIN · no answer records · authority SOA a.root-servers.net nstld.verisign-grs.com 2026081402 (TTL 85162)
A refusal that is still an answer. Status 3 says no such name exists below the zone that replied, and the authority SOA names the server that said so.
Every example on this page is executed against the same engine that powers the tool, on every build.
Gotchas worth knowing
NXDOMAIN and an empty answer differ
NXDOMAIN (status 3) means no such name. NOERROR with an empty answer section means the name is real and holds no record of the type asked for — NODATA, in operator shorthand. Reading one as the other gets a domain renewed that never expired.
The TTL shown counts down in someone else's cache
A resolver reports how much longer it will serve its copy, not the value the zone publishes: ask ten seconds later and it is ten lower. A small figure means a nearly stale cache entry, not a record that changes often. The published value is visible only from an authoritative server.
AD is the resolver's claim about its own work
The AD bit (RFC 4035 §3.2.3) is set when a resolver says it validated the answer with DNSSEC. Nothing here checks a signature, so believing it means trusting that resolver and the path to it — a labelled claim, not a tick.
A TXT value is a sequence of strings, not one string
DNS caps each character-string at 255 octets (RFC 1035 §3.3.14), so longer values arrive split; sequence and concatenation are both shown. In presentation form \255 is a decimal octet and \" a quote (RFC 1035 §5.1).
Common errors
That is not a DNS name that can be looked up: label 1 (`-bad`) starts or ends with a hyphen. Names are dot-separated labels of letters, digits, hyphens and underscores — like `example.com` or `_dmarc.example.com`.- Labels may contain hyphens but never begin or end with one, and the offender named by position — usually a copied bullet.
That text is not valid JSON. A DoH answer is a JSON object — copy the whole response body, from the opening `{` to the closing `}`.- Almost always a partial copy; the reported offset is where parsing stopped — where the paste was cut.
That JSON parsed, but it is not a DNS answer: there is no numeric `Status` field. A DoH-JSON answer is an object with a numeric `Status` field and optional `Question`, `Answer` and `Authority` arrays (RFC 8484 §4.1).- Valid JSON from the wrong place. A numeric Status is what makes a body a DNS answer, so the missing field is named, not guessed at.
The resolver answered NXDOMAIN (RCODE 3): this name does not exist at all. That is different from a name that exists with no records of the type you asked for — check the spelling before concluding the domain is unregistered.- Not a fault in the paste: the resolver answered, and its answer is that the name is absent. The question and denying zone still render.
Your network returned a block page instead of a DNS answer. A filter, captive portal or corporate proxy is intercepting DNS-over-HTTPS on this connection — this is not a fault in the name you asked about.- An HTML document arrived where JSON was expected — a filter or captive portal replied instead of the resolver, as both endpoints do on the network this page was built on.
FAQ
Why does this page not run the lookup itself?
Because a lookup from here would be a third-party request made on your behalf. The request line is handed over instead: read it, send it from whichever network you choose, paste back what returns.
Which resolver answers, and what does it learn?
Whichever is in the request you run: cloudflare-dns.com or dns.google, both named on the page with privacy policies linked. It sees the name asked about and the address it came from, as any DNS query does.
Why do two resolvers give different answers for one name?
Usually caching: each holds its copy until the TTL expires, so just after an edit one may serve the old record and the other the new. Geography is the second reason: authoritative servers often answer near the asker. A worldwide check needs vantage points this page does not have.
Keyboard shortcuts
- ⌘/Ctrl + Enter
- Copies the request line for the current name and type.
- ⌘/Ctrl + Shift + Enter
- Decodes the answer field; nothing decodes as you type.
- ⌘/Ctrl + ↑/↓
- Steps to the previous or next record type.
- ⌘/Ctrl + C
- Copies the request line when nothing is selected inside the tool; a live selection copies itself.
- ⌘/Ctrl + Shift + C
- Copies the request line whatever the current selection is.
- ? or ⌘/Ctrl + /
- Shows the shortcut list; the single-key form is ignored in a field.