DKIM Record Checker
Look up the DKIM key at a selector, or read a DKIM-Signature header and key record tag by tag.
Checking for an existing session…
Paste a DKIM-Signature header or a key record on the left.
How it works
This checks DKIM records. It does not verify signatures. A DKIM signature is checked against the public key at
selector._domainkey over the canonicalised message body, and this page never has the message — so a
result here is a reading of what a signature or key declares, never a statement that a signature holds.
Look up the key a domain publishes
Choose Look up a selector, enter the domain and the selector (the s= value from a
DKIM-Signature header), and Quietlytic fetches the TXT record at
<selector>._domainkey.<domain> through Cloudflare's DNS-over-HTTPS resolver: whether a
key exists, its type and size, whether it is revoked or in testing mode. DNS has no way to list a domain's
selectors, so the selector has to come from a real message. Lookups need a one-time bot check and are limited per
hour.
What the tags are actually saying
d= is the signing domain, and DMARC alignment compares it against the From header rather than against
anything in the signature itself. s= names the DNS selector holding the key.
h= lists the headers the signature covers, in order — and anything absent from that list is unsigned
and can be altered or added downstream while the signature still verifies.
Two tags that weaken a valid signature
l= limits the signature to the first N octets of the body. Content appended after that point is
unsigned and still passes, which is a working mechanism for adding text to a signed message.
t=y in a key record marks the domain as testing and instructs verifiers not to treat a failure as
meaningful, which means the selector provides no protection at all. Both are flagged here.
Paste both and they are cross-checked
Given a signature and a key record together, the two are compared for internal consistency: key type against signing algorithm, the hash against the key's permitted list, and the key's service type. That is a comparison a person would otherwise do by eye, not a cryptographic check.
Example
A signature with h=to:subject:date and no from is reported as critical — the From
address can be replaced without breaking it, which removes the only thing DMARC is aligning. A key record with
p= and nothing after it is not broken; an empty p= is how RFC 6376 revokes a key.
DKIM is one of the two passes DMARC accepts; check the policy that relies on it with the DMARC Checker, and the domain's sending list with the SPF Checker.
Frequently asked questions
Can this tell me whether a signature is valid?
No, and it does not claim to. It can fetch the public key from selector._domainkey, but verification also needs the canonicalised message body hashed and checked against the signature, and this page never has the message. It reads what the signature and the key declare.
Why does the h= tag matter so much?
It lists the headers the signature covers. Anything not in it is unsigned and can be altered or added in transit while the signature still verifies. A Reply-To added downstream of a valid DKIM pass is a working business-email-compromise technique.
What does the l= tag do?
It limits the signature to the first N octets of the body. Content appended after that point is unsigned and still passes verification, so text can be added to a signed message without breaking it.
Is an empty p= in a key record broken?
No. RFC 6376 §3.6.1 defines an empty p= as revocation, so any signature naming that selector fails. It is intentional after a key rotation and a problem when it is not.
What does it check when I paste a signature and a key together?
Consistency between the two: key type against signing algorithm, the hash against the key’s permitted list, and whether the key is published for email. That is a comparison of declared values, not a cryptographic check.
Why flag t=y on a key record?
Because t=y marks the domain as testing and tells verifiers not to treat a failure as meaningful. The selector provides no protection while it is set, and it is left in place after deployment more often than not.
Where do I find the selector to look up?
In the s= tag of a DKIM-Signature header on a message the domain sent. Each sending service picks its own selector, and there is no DNS query that lists them, so the header is the reliable source.
Related tools
SPF Checker
Look up a domain’s SPF record or paste one, and see every mechanism explained and counted.
Partly sends dataDMARC Checker
Look up a domain’s DMARC record or paste one, and see what policy it actually applies.
Partly sends dataMX Lookup
See where a domain’s mail is delivered, in priority order, with its SPF and DMARC status beside it.
Sends dataEmail Header Analyzer
Read a raw email header as an ordered delivery path with authentication results.
Local