is it DNS?
Instant diagnosis

Is it DNS? Find out in two queries.

No install. No agent. Nothing you run here reports back about you. Paste two ordinary DNS queries into any terminal you already have. The queries are the diagnosis. You read the answer yourself. Works on a laptop, a server, a container, a router shell: anywhere DNS resolves.

0 installs 0 scripts 0 accounts 2 queries

This page itself loads two things beyond its own markup: Cloudflare Web Analytics, a cookieless page-view beacon, and Microsoft Clarity, masked session recording with cookies off (opt out with ?clarity=off). They count the page and how it is used, not you, and they play no part in the two checks below.

Run it right here, over DoH

One click. Your browser mints a fresh nonce and asks over DNS-over-HTTPS, using the JSON API that Cloudflare and Google publish rather than the RFC 8484 wire format. Nothing is stored; the query goes to a public resolver, same as any page load.

Or paste it into any terminal

macOS / Linux (dig) Windows (PowerShell) nslookup (anywhere)

1 · Is your DNS answer being rewritten?

Ask for the public tripwire name. Its answer is a fixed test address (192.0.2.111, reserved and unroutable). If you get anything else back, something on your path rewrote the answer.

$ dig +short canary.probe.isitdns.net
PS> (Resolve-DnsName canary.probe.isitdns.net -Type A).IPAddress
$ nslookup -type=A canary.probe.isitdns.net

good: 192.0.2.111   ·   anything else: your DNS answer was rewritten in flight

2 · Did your query reach the genuine authority?

Ask for a name that has never existed and never will: a fresh random label. No cache, forwarder, or interceptor can have an answer ready, so a reply means your query actually reached a real authority. The reply is a signed receipt. The label is x plus 26 characters from a-z2-7; the nslookup pane below carries a fixed one, so change a few of its letters before you run it or you are asking for a name someone else may already have cached.

$ N=$(LC_ALL=C tr -dc 'a-z2-7' < /dev/urandom | head -c26) dig +short TXT x$N.t.probe.isitdns.net
PS> $N = -join ((97..122) | Get-Random -Count 26 | % {[char]$_}) Resolve-DnsName -Type TXT "x$N.t.probe.isitdns.net" | % Strings
$ nslookup -type=TXT xk4m2vqz7ftr3nbwhs6ydc5gpjq.t.probe.isitdns.net

good: a base64url TXT string comes back   ·   empty / SERVFAIL: your path never reached the authority

Why this is trustworthy: a DNS query to a public name is not telemetry. You are reading a public authority's answer, the same way dig always has. Nothing is installed and nothing reports back about you.