Check a domain
How it works
MX tells us the provider
Google Workspace uses google, Microsoft 365 uses selector1 and selector2, and so on.
Query the selector record
DKIM lives at selector._domainkey.yourdomain.com as a TXT record containing the public key.
Check the key itself
An empty p= value means the key is revoked and signs nothing, even though the record exists.
Confirm the size
2048-bit is the current standard. Some receivers now discount 1024-bit keys.
Why DKIM is the one that gets skipped
SPF is a single TXT record you can write by hand in two minutes. DMARC is another. DKIM is different — the provider has to generate a keypair, you have to enable signing, and you have to publish what they give you. Three steps across two systems, and any one of them can be quietly left undone.
Microsoft 365 is where I find this most often. The CNAMEs for selector1 and selector2 exist inside the tenant, but they were never added to the domain's DNS, or DKIM signing was never switched on in Defender. Across my own portfolio, every single one of 228 Microsoft 365 domains had this gap. Mail was flowing. Nothing bounced. Nobody had a reason to look.
What you lose without it
DKIM signs the message itself with a cryptographic key, so a receiver can verify the content was not altered and genuinely came from the domain. That signature survives forwarding. SPF does not — the moment a message is forwarded, the sending IP changes and SPF breaks.
So a domain with SPF but no DKIM authenticates fine on direct delivery and fails the instant anything relays: a prospect forwards your email internally, a mailing list re-sends it, a corporate gateway passes it along. Those are exactly the moments when your email is spreading inside an organisation, which is the worst possible time to lose authentication.
There is also a DMARC consequence. DMARC passes if either SPF or DKIM passes and aligns. Running on SPF alone means one mechanism carrying the whole policy, and SPF alignment is the harder of the two to satisfy when third parties are involved.
How to check a DKIM record manually
DKIM lives at selector._domainkey.yourdomain.com, which is why it is the hardest of the three to look up by hand — you cannot query it without knowing the selector first, and the selector is chosen by whoever generates the key. Once you have it:
- macOS or Linux —
dig +short TXT google._domainkey.example.com - Windows —
nslookup -type=TXT google._domainkey.example.com - Selector unknown — use the box above; it reads your MX records, identifies the provider and tries that provider's selectors before falling back to a list of around thirty common ones.
The other reliable way to find a selector is to open any message you have already sent, view the raw headers, and read the s= value in the DKIM-Signature line. The header analyzer extracts it for you.
Common DKIM selectors by provider
| Provider | Typical selector | Record type |
|---|---|---|
| Google Workspace | TXT | |
| Microsoft 365 | selector1, selector2 | CNAME |
| Zoho Mail | zoho, zmail | TXT |
| Amazon SES | three generated tokens | CNAME |
| SendGrid | s1, s2 | CNAME |
| Mailchimp | k1 | CNAME |
| Mailgun | smtp, or one you choose | TXT |
| Postmark | pm | TXT or CNAME |
| Brevo | TXT | |
| Klaviyo | dkim | CNAME |
| Zendesk | zendesk1, zendesk2 | CNAME |
Cold email platforms such as Instantly and Smartlead do not sign with their own keys when you connect Google Workspace or Microsoft 365 inboxes — the signature comes from the underlying mailbox provider, so the selector to check is google or selector1, not anything belonging to the platform.
What the tags in a DKIM record mean
| Tag | Meaning | Watch for |
|---|---|---|
| v | Version, always DKIM1 where present. | Optional, often omitted. |
| k | Key type. Effectively always rsa. | ed25519 exists but verification support is thin. |
| p | The public key itself. | An empty p= revokes the key. The record still resolves, and signing is dead. |
| t=y | Testing mode. | Tells receivers to treat failures as though DKIM were not deployed. Left in place, it neuters the key entirely. |
| t=s | Disallows use by subdomains. | Only set it deliberately. |
| h | Permitted hash algorithms. | Usually omitted; sha256 is implied. |
| s | Service type this key applies to. | Almost always email or absent. |
Why DKIM fails when the key is published
A resolvable record is not the same as a working signature. Five things break DKIM after the DNS side looks correct.
- Signing was never enabled. The record exists because someone added the DNS entry, but the switch inside the provider's admin console was never turned on. This is the Microsoft 365 pattern — the CNAMEs resolve and Defender still has DKIM off.
- The body changed in transit. Legal disclaimer appenders, mailing lists and some security gateways rewrite the message body, which invalidates the body hash. The signature is genuine and no longer verifies.
- An empty
p=tag. The published key has been revoked. Every check reports a record present and every signature fails. - The key was truncated. A 2048-bit key exceeds the 255-character limit for a single TXT string and must be split into quoted chunks that the resolver rejoins. Some DNS panels mangle this, leaving a key that resolves but will not verify.
- The signature does not align. DKIM passes with
d=sendingtool.comwhile your From header shows your own domain. DKIM is valid; DMARC still fails. Confirm the policy side with the DMARC checker.
Frequently asked questions
What is a DKIM selector?
A label that lets one domain publish several keys. The record lives at selector._domainkey.yourdomain.com, so a selector of "google" means the key is at google._domainkey.yourdomain.com. Providers choose their own — Google uses google, Microsoft uses selector1 and selector2, Mailchimp uses k1.
The tool found no key but my provider says DKIM is on. What now?
Two common causes. Either the record was published on the wrong host — a very frequent mistake is adding the full selector._domainkey.example.com string in a DNS panel that already appends the domain, producing a doubled name — or you use a custom selector. Enter your selector in the custom field above and check again.
Is a 1024-bit DKIM key still acceptable?
It still validates, but 2048-bit has been the recommended standard for years and some receivers now treat shorter keys with less trust. If your provider offers a rotation to 2048-bit, take it. Google Workspace defaults to 2048-bit on new keys.
Do I need DKIM on every cold email sending domain?
Yes, without exception. Each sending domain is a separate identity and needs its own key published in its own DNS. This is the single most common gap I find when auditing large sending fleets, and it is invisible until you look for it.
How do I find my DKIM selector?
Three ways. Use the box above, which reads your MX records, works out who hosts your mail and tries that provider's selectors first. Open a message you have sent, view the raw source and read the s= value in the DKIM-Signature header. Or check the provider's admin console, where the selector is shown alongside the DNS entries it asks you to publish. There is no way to enumerate selectors from DNS alone — they have to be guessed or read from a signed message.
How do I check a DKIM record?
Query selector._domainkey.yourdomain.com as a TXT record — for example dig +short TXT google._domainkey.example.com on macOS and Linux, or nslookup -type=TXT google._domainkey.example.com on Windows. Microsoft 365 publishes CNAMEs rather than TXT records, so the query follows the CNAME to the tenant before returning the key.
What does a DKIM record look like?
A long TXT record along the lines of v=DKIM1; k=rsa; p=MIIBIjANBgkqh…, where p= holds the base64 public key and makes up nearly all of the length. On Microsoft 365 you will see a CNAME pointing into onmicrosoft.com instead, with the actual key held inside the tenant.
Why is my DKIM failing?
If the record resolves, the usual causes are signing never being switched on at the provider, the message body being modified in transit by a disclaimer appender or mailing list, an empty p= tag revoking the key, a key truncated by the DNS panel, or t=y testing mode left in place. If DKIM itself passes but DMARC does not, the issue is alignment — the signing domain in d= is not your From domain.
Can I have more than one DKIM record?
Yes, and unlike SPF this is normal and correct. Each selector is a separate record, so every provider that signs for you publishes its own without conflict — Google Workspace and a marketing platform can sign the same domain quite happily. Duplicates only cause a problem when two records share one selector.
Should I use a 1024-bit or 2048-bit DKIM key?
2048-bit where the provider offers it. 1024 still verifies everywhere and is not currently treated as a failure, but it is the weaker option and there is no cost to the stronger one beyond the DNS record being split across strings. Google Workspace defaults to 1024 and has to be switched to 2048 manually, which is why so many domains sit on the shorter key.
How often should DKIM keys be rotated?
Annually is a reasonable cadence for most senders, and some providers rotate automatically. The mechanism is to publish a new selector, switch signing to it, then remove the old record once no mail in flight is still signed with it — rotation is additive, so nothing breaks mid-change. For a cold email fleet this is low priority next to making sure every domain is signing at all.
Does every sending domain need its own DKIM?
Yes. DKIM keys are published per domain and are not inherited, so each sending domain in a fleet needs its own selector and key published in its own zone. This is the check most often skipped at scale, because mail flows perfectly without it and nothing bounces — the failure only surfaces when a message is forwarded and SPF breaks with no DKIM signature to fall back on.
Last reviewed
What to run next
The checks that most often follow this one.
More in this category
Guides that go deeper
When the tools tell you something is wrong
The diagnostics here are free and always will be. When the fix is bigger than a DNS record, this is the work I do.
Deliverability rescue
Mail landing in spam, replies gone quiet, or a domain suddenly blocked. I find the actual cause rather than guessing, and fix it.
- Authentication and alignment failures
- Blocklist delistings and reputation repair
- Gateway and filter-level blocks
- A written report on what broke and why
Email & sending infrastructure
Sending domains, inboxes, authentication and warmup, built to survive volume instead of burning down in a month.
- Domain and inbox fleets at any scale
- SPF, DKIM, DMARC and tracking domains
- Google Workspace and Microsoft 365 inboxes
- Handover documentation you actually own
Domain, DNS & migration
Changing registrar, mail provider or host without a day of downtime or a week of mail silently failing.
- Registrar and nameserver moves
- Workspace and Microsoft 365 migrations
- MX, SSL and subdomain cutover
- Staged rollout with rollback at every step
Monitoring & retainer
Infrastructure drifts. Records get edited, certificates expire, domains get listed. Ongoing eyes on the fleet.
- Scheduled checks across every domain
- Alerts before your clients notice
- Monthly reporting
- Priority response when something breaks
Start with a call
Bring a domain and the symptom. I will tell you what is actually wrong and whether you need me at all — plenty of people leave that call able to fix it themselves.
Thirty minutes, no pitch
We will run the checks together on your actual domains, and you will leave knowing what is broken, what it takes to fix, and what it should cost. If that is a job you can do in-house, I will say so.