DNS Lookup & SPF/DMARC/DKIM Inspector

Perform live DNS-over-HTTPS (DoH) queries, inspect A, MX, TXT, and CAA records, or construct valid SPF, DMARC, and DKIM email security policies 100% in browser.

Live DNS-over-HTTPS Query

Samples:

{{ lookupError }}

Mail Provider DNS Setup & Presets

Select your mail service to generate the complete, production-ready DNS configuration (MX servers with priorities, SPF records, DKIM selectors, DMARC policy, and domain verification tokens) customized for your domain.

Choose Provider

{{ p.name }}
ℹ
{{ currentProvider.name }}: {{ currentProvider.description }} Official DNS Setup Docs →

SPF (Sender Policy Framework) Builder

Quick Presets for Popular Mail Providers

+ Zoho Mail + Zoho Mail EU + Proton Mail + Google Workspace + Microsoft 365 + SendGrid + Mailgun + Yandex 360 + Fastmail + iCloud Mail

Live include/redirect chain check

Follows the domain's live SPF record through every include:/redirect= it finds (via {{ resolverLabel }} DoH — same resolver selected on the Lookup tab), counting toward RFC 7208's hard limit of {{ spfLookupLimit }} DNS-lookup mechanisms (include/a/mx/ptr/exists/redirect) and flagging include cycles. Checks the domain's live, published record, not the one being edited above.

{{ spfChainResult.lookupCount }} / {{ spfLookupLimit }} lookups

{{ spfChainError }}

Over budget — RFC 7208 §4.6.4 requires a "permerror" (hard SPF failure) once more than {{ spfLookupLimit }} lookup-causing mechanisms are evaluated. Everything flagged below would never actually be reached by a real mail server.

{{ node.mechanism }} {{ node.domain }} {{ node.record }} {{ node.error }}

Scope: include/redirect chains are fully followed since they reference another domain's own SPF policy. Bare a/mx/ptr/exists mechanisms are counted toward the budget as leaves but not expanded further — they check addresses, not another domain's SPF record. The per-mx-record sub-limit of 10 address lookups (RFC 7208 §4.6.4) is not modeled.

DMARC Policy Generator

DKIM (DomainKeys Identified Mail) Record Constructor

Common Selector Presets

zoho (Zoho Mail) protonmail (Proton Mail) google (Google Workspace) selector1 (Microsoft 365) mail (Yandex 360) default

WHOIS Lookup

Real WHOIS domain-registration lookup (registrar, creation/expiry dates, name servers) via the actual WHOIS protocol (port 43) — not a hardcoded per-TLD table, but a live referral chain through IANA, the TLD registry, and (when needed) the sponsoring registrar. Browsers can't open a raw TCP socket, so this is the only feature on this page that goes through this site's own backend, protected by Cloudflare Turnstile and rate-limited.

{{ whoisError }}

WHOIS: {{ whoisResult.domain }} via {{ whoisResult.servers_queried.join(' → ') }}

Registrar
{{ whoisResult.registrar }}
Created
{{ whoisResult.creation_date }}
Expires
{{ whoisResult.expiry_date }}
Last updated
{{ whoisResult.updated_date }}
DNSSEC
{{ whoisResult.dnssec }}
Name servers
{{ whoisResult.name_servers.join(', ') }}
Domain status
{{ whoisResult.domain_status.join(', ') }}
Show raw WHOIS response
{{ whoisResult.raw }}

DNS Records for {{ queryDomain }} — {{ records.length }} found

Showing {{ visibleRecords.length }} of {{ records.length }} records. Copy/Download includes all.

{{ rec.typeLabel }} {{ rec.name }} TTL {{ rec.TTL }}s
{{ displayValue(rec) }}

{{ rec.parseError }}; raw data preserved.

{{ key }}{{ value }}

DNS resolver comparison for {{ queryDomain }}

These four recursive resolvers are not a worldwide propagation test. Cache age, GeoDNS/ECS and resolver policy can cause differences. TTL is excluded from comparison. Quad9 and Control D use unfiltered services. Quad9 uses its ECS variant, which can forward approximate client location to authoritative DNS servers. AD is the resolver-reported flag, not an independent DNSSEC verification.

Answers differ. This does not by itself prove incomplete DNS propagation.

Query{{ group.label }}Comparison
{{ summary.type }}{{ cell.state }} · {{ cell.count }} records · AD — {{ cell.error }}{{ summary.different ? 'Different answers' : summary.complete ? 'Same answers' : 'Incomplete' }}

{{ group.label }} · {{ group.state }}

Showing 300 of {{ group.records.length }}. Export includes all.

{{ query.type }}: {{ query.state }} — {{ query.error }}

{{ rec.typeLabel }}{{ rec.name }}TTL {{ rec.TTL }}s
{{ displayValue(rec) }}

{{ rec.parseError }}; raw data preserved.

{{ key }}{{ value }}

{{ currentProvider.name }} Records for {{ providerDomain || 'example.com' }}

{{ rec.type }} {{ rec.displayHost }} Priority {{ rec.priority }} · TTL {{ rec.ttl }}s
{{ rec.value }}
{{ rec.note }}

Generated SPF TXT Record

{{ spfRecord }}

Generated DMARC TXT Record (Host: _dmarc.{{ dmarcDomain || 'example.com' }})

{{ dmarcRecord }}

Generated DKIM TXT Record (Host: {{ dkimSelector || 'default' }}._domainkey.{{ dkimDomain || 'example.com' }})

{{ dkimRecord }}

About DNS Lookup, DoH & WHOIS

A found TXT record that looks like SPF, DMARC or DKIM gets an "Edit in ... Builder" button that loads it straight into the matching tab instead of retyping it by hand. The Lookup tab can also query Cloudflare and Google DoH side by side, flagging any record where the two disagree. The SPF Builder's live chain check follows a domain's real include:/redirect= chain via live lookups and counts them against RFC 7208's hard limit of 10 DNS-lookup mechanisms — exceeding it is a "permerror" that silently breaks SPF for the whole domain, and is one of the most common real-world SPF misconfigurations, usually from stacking too many mail providers' include: statements.

Privacy: DNS lookups use DNS-over-HTTPS (DoH) through public secure resolvers (Cloudflare, Google, unfiltered Quad9 (ECS variant) and unfiltered Control D) queried live directly from your browser — the domain you look up goes straight to that resolver, never through this site's own server. WHOIS is different: browsers cannot open a raw TCP socket, so the WHOIS tab (opt-in, gated by Cloudflare Turnstile) sends the domain to this site's own backend, which performs the real WHOIS query (IANA → registry → registrar) server-side and returns the result. Nothing from a WHOIS lookup is stored beyond a rate-limit counter keyed to a hash of your IP.