What the DKIM Checker looks at
DKIM (DomainKeys Identified Mail, RFC 6376) lets a sending server sign each message with a private key. Receivers fetch the matching public key from DNS and check the signature. If it verifies, they know the signing domain took responsibility for the message and that the signed parts weren't changed in transit.
The public key is published at:
<selector>._domainkey.<domain>
The checker:
- Looks up the TXT record (following a CNAME if your provider uses one).
- Checks the tags:
v=DKIM1if present, key typek=(defaultrsa;ed25519is also defined), and the public keyp=. - Measures the RSA key length.
- Detects an empty
p=, which means the key has been revoked. - Flags syntax problems such as stray quotes or a key split incorrectly across strings.
Any selector names tried for you are a guess based on common conventions, not a scan. DNS can't list the selectors a domain uses.
How to read the results
- Pass. A valid key was found at the selector, with an RSA key of 2048 bits or more, or an Ed25519 key.
- Warning. A valid key that's weaker than recommended, such as 1024-bit RSA. Gmail accepts 1024 bits but Google recommends 2048.
- Fail. A record exists at the selector but can't be used: malformed, unknown key type, an RSA key under 1024 bits, or an empty
p=you didn't intend. - Not tested. We couldn't find any selector. This isn't a failure. DKIM selectors can be any name, so an unknown selector means "we don't know", not "broken". Enter the selector from a real message to get a definite answer.
- Not applicable. The domain sends no mail (for example, it publishes Null MX and
v=spf1 -all), so DKIM isn't needed.
Finding your selector
- Send a message from the account you want to test to any mailbox you can read.
- Open the full headers (in Gmail: More > Show original; in Outlook: File > Properties > Internet headers).
- Find the
DKIM-Signature:header. It looks like this:
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=example.com;
s=selector1; h=from:to:subject:date; bh=...; b=...
- Enter
d=as the domain ands=as the selector.
Or paste the whole header into the Email Header Analyzer, which pulls these values out for you.
Common problems and fixes
No key at the selector. Your provider gives you the record to publish. Microsoft 365 uses two CNAME records (selector1 and selector2) that point to keys it hosts; Google Workspace gives you a TXT record from the Admin console. Publish exactly what they show, then turn signing on in the provider's console.
Key split wrongly. Long keys exceed 255 characters, so DNS stores them as several strings. Most DNS panels handle this; if yours doesn't, split the value into quoted chunks in one record:
s1._domainkey.example.com. TXT ( "v=DKIM1; k=rsa; "
"p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA..."
"...IDAQAB" )
1024-bit key. Generate a 2048-bit key in your provider's console under a new selector, publish it, switch signing to it, and keep the old key published for at least seven days, and up to 30, as M3AAWG advises, before you revoke it. Our DKIM key rotation guide walks through each step.
Signing with the wrong domain. If a service signs with its own domain (d=mailer.example.net) rather than yours, DKIM passes but won't align for DMARC. Set up custom DKIM for your domain in that service.
Revoking a key. To retire a key deliberately, publish it with an empty p=:
old._domainkey.example.com. TXT "v=DKIM1; p="
Limitations
- We can't list selectors. DNS doesn't allow it. An unknown selector is unknown, not a failure.
- A valid key doesn't prove your mail is being signed. Check a real message's
Authentication-Resultsheader fordkim=pass. - Signatures can break in transit if a mailing list or gateway rewrites the message. That isn't a key problem.
- We check the public key only. We never see your private key.
Related
Read SPF vs DKIM vs DMARC to see how DKIM alignment feeds into DMARC.
Frequently asked questions
What is a DKIM selector?
A name you or your mail provider choose so a domain can publish several DKIM keys at once. It appears in the s= tag of the DKIM-Signature header. The key lives at selector._domainkey.yourdomain.
How do I find my selector?
Open a message you sent, view its headers and find the DKIM-Signature header. The s= value is the selector and d= is the signing domain. Your mail provider's admin console usually shows it too.
We couldn't find a selector. Is DKIM broken?
Not necessarily. Selectors can be any name, and DNS can't list them. If we can't find one, the result is unknown, not a failure. Enter the selector from a real message header to test it.
What key length should I use?
Use 2048-bit RSA where your provider supports it. Google requires at least 1024 bits for mail to personal Gmail accounts and recommends 2048.
Do I need a new key when I change providers?
Yes. Each sending service signs with its own private key, so each needs its own selector record. Keep the old one published until mail signed with it has stopped arriving.
Related guides
How to find a domain's DKIM selector, and check its key
Find a DKIM selector from the s= tag in an email header, see the selectors Microsoft 365, Google Workspace and common senders use, then check the key.
8 min read SPF, DKIM & DMARCDKIM "body hash did not verify" and other DKIM failures: causes and fixes
Fix DKIM failures: body hash did not verify, signature did not verify, no key for signature and short keys. Causes from mailing lists to broken TXT records.
9 min read SPF, DKIM & DMARCHow to set up DKIM in Microsoft 365 and Google Workspace
Step-by-step DKIM setup for Microsoft 365 (two CNAME selectors) and Google Workspace (one TXT key): 2048-bit keys, key rotation and how to verify it works.
9 min read