Online dig: run dig from your browser
Type a name, pick a record type and a resolver, press run. The query is real and the answer is dig's, printed the way dig prints it. Nothing to install, no account, no ads.
// examples
- dig @1.1.1.1 example.com A the address records, with the RRSIG that signs them
- dig @1.1.1.1 example.com MX a null MX, RFC 7505: this domain takes no mail
- dig @1.1.1.1 isitdns.net TXT SPF and the rest of the text records
- dig @1.1.1.1 iana.org DNSKEY a signed zone's keys, KSK and ZSK
- dig @1.1.1.1 nonexistent.invalid A NXDOMAIN with the root SOA underneath it
- dig @94.140.14.14 doubleclick.net A an ad blocker answering 0.0.0.0, with EDE 17 Filtered
// what it runs
- One real query per run, sent from a Cloudflare edge location to the resolver you picked, or one per resolver when you pick the compare option. It is not sent from your network, so it says what that resolver answers, not what your laptop is getting.
- The wire format is DNS over HTTPS, RFC 8484
binary, POSTed as
application/dns-message. The answer is decoded from those bytes, so the sections, the flags and the rcode are the server's own. - DNSSEC is requested (
+dnssec) and checking is left on, so theadflag in the output means that resolver validated the answer. - The list above is the 16 public resolvers that publish a DoH endpoint. The last option asks all 17 on the board side by side, and a resolver with no DoH endpoint answers that one over Do53 instead, which the output says on its own line.
- The full tool takes any public resolver address, and DoT, Do53 over TCP and Do53 over UDP. UDP leaves from a probe off Cloudflare, because the Workers runtime cannot open a UDP socket (Cloudflare, TCP sockets).
- Rate limit: 100 requests a minute per address. No key, no account.
// flags
The form sends +dnssec. The rest are on the URL form of the same query,
/api/query, and in the full tool:
dnssec=0clears the DO bit. On by default here.cd=1is+cdflag: return the answer without validating it.norec=1is+norec, RD=0, which is how you ask an authoritative server rather than a recursive one.nsid=1is+nsid, RFC 5001: the node that answered names itself.ecs=192.0.2.0/24is+subnet, RFC 7871, for geo-split answers.transport=doh|dot|tcp53|udp53andfamily=v4|v6|both.- A type the list does not carry goes through as a number or as
TYPE65, decoded as generic rdata per RFC 3597. - Extended DNS Errors (RFC 8914) are printed when the server sends one, which is how a blocked name says it was blocked rather than missing.
From a terminal, the same thing:
curl -sL isitdns.net/dig/example.com/MX.
// the manual
- The dig tool, control by control: what every field does and what every output line means.
- dig flags: what
+short,+trace,+norecand the rest actually change. - dig examples: queries worth running, and what the answer tells you.
- nslookup and dig: for Windows, where dig is not installed and nslookup is.