Advertisement
Live DNS · finds the selector for you

DKIM Record Checker
Find the selector, then check the key

Most DKIM checkers stop before they start, because they need a selector you do not have. Enter a domain and this one tries a published list of provider selectors, follows any CNAME your platform delegated to, decodes the real key length, and flags the one tag that leaves a healthy-looking record doing nothing at all.

Check a DKIM record, with or without the selector

Enter the domain that appears after the @ in your email address. Leave the selector blank and the published list is tried for you. If you have a message to hand, pasting its signature header is the only method that is never a guess.

Leave the selector blank to search the published list. You can paste google._domainkey.example.com into either field — it will be split for you.

Or paste a DKIM-Signature header — never a guess

The selector and signing domain are read out of the header. Nothing is stored.

Quick Answer: how do I check a DKIM record?

A DKIM key lives at selector._domainkey.yourdomain, so you need the selector before you can look anything up. Find it in the s= tag of a message’s DKIM-Signature header, or leave the field blank above and let the published provider list be tried. A healthy record has a key of 2048 bits and no t=y flag — testing mode makes verifiers treat your signed mail as unsigned.

Advertisement
Robert Harrison, OSINT & Network Utility Expert, on DKIM record checking at TrustMyIP.com
Written & Verified By

Robert Harrison

OSINT & Network Utility Expert

Works on DNS records, network utilities and the developer tooling around them — the same lane as the DMARC checker, email header analyzer and DNS lookup on this site.

The selector list this tool searches was built by reading each provider’s own documentation rather than copying another checker — which is why k1 is searched but deliberately not attributed: two competing tools credit it to different vendors, and Mailgun’s own documentation shows no such selector. The key-length maths was verified against keys generated at 1024, 2048 and 4096 bits in both encodings, and the parser against 85 test cases plus the live records of 16 domains including Zendesk, SendGrid, Microsoft 365, Yahoo (a key split across four DNS strings) and Mailchimp (a 1024-bit key still in service).

Last reviewed 21 September 2026 · Published 21 September 2026

View all articles by Robert Harrison
Advertisement

What is a DKIM record, and what does this checker test?

DKIM stands for DomainKeys Identified Mail, defined in RFC 6376. Your mail server holds a private key and uses it to sign each outgoing message: it hashes the body and a chosen set of headers, encrypts the result, and adds a DKIM-Signature header. The matching public key sits in your DNS. A receiver reads the signature, fetches that key, and checks the maths. If it adds up, the message has not been altered in the signed parts since it left you.

Here is a record with every part named. Two of the five are not written down at all, and they still apply:

v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A...

PartWhat it doesIf you leave it out
v=DKIM1Marks this as a DKIM key record. If present it must be first, and must read exactly DKIM1.Defaults to DKIM1, so the record still works — but a wrong value means verifiers discard it
k=rsaThe key type. RFC 6376 defines rsa; RFC 8463 added ed25519.Defaults to rsa
p=MIIB…The public key itself, base64. The only required tag in the whole record.Nothing for a verifier to use — the record is useless
h=Restricts which hash algorithms this key may be used with.Defaults to allowing all of them, which is usually what you want
t=Flags. t=y means testing, t=s tightens identity matching.Defaults to no flags — and that is the safe state

Why you need a selector before you can look anything up

This is the part that makes DKIM harder to check than SPF. An SPF record always sits on the domain itself. A DKIM key does not: its DNS name is built from two tags inside the signature of an actual message.

1. Your server signs the message private key stays on the server 2. It adds a DKIM-Signature header d=example.com the signing domain s=google the selector 3. The receiver joins the two into a DNS name google._domainkey.example.com selector + _domainkey + domain 4. It fetches the public key from that TXT record following a CNAME first, if your platform delegated one 5. Signature verifies, or it does not DNS cannot be asked which selectors a domain has. There is no list to request. That is why every DKIM checker wants a selector, and why a miss means "not this one" rather than "this domain has no DKIM".

So a DKIM check has two halves: find the name, then judge what is published there. This tool does both, and it tells you which half failed. Authentication is also the part of sender reputation you control outright rather than earn slowly, which is worth reading alongside how receivers build an IP reputation score.

Key fact: RFC 6376 is an Internet Standard, STD 76, updated by RFC 8301 for cryptography and RFC 8463 for ed25519 keys. A DKIM2 effort exists as IETF working-group drafts as of August 2026, but it is not a published standard and changes nothing you need to do today.

How to find your DKIM selector

Three methods, and only the first is certain.

1. Read it from a real message — the only method that cannot be wrong

Send yourself an email from the system you are checking, then open the raw source. In Gmail that is the three-dot menu and Show original; in Outlook, View then Message source. Find the DKIM-Signature header and read two tags: s= is the selector, d= is the signing domain. Those two build the DNS name. Paste that header into the box above and both are extracted for you — along with a=, which tells you the algorithm actually used, and h=, which tells you which headers were protected. For a full reading of every authentication result in a message, our email header analyzer takes the whole thing.

2. Let the published list be searched

Leave the selector blank above. Most platforms use a fixed, documented selector, so a search finds the key in one query. Here is the list this tool tries, and where each name comes from. Every attribution was taken from the provider’s own documentation, not from another checker:

Advertisement
SelectorProviderPublished asNote
googleGoogle WorkspaceTXTThe default prefix. An admin can change it
selector1, selector2Microsoft 365CNAMEBoth must exist. The idle one carries the rotation handoff
s1, s2Twilio SendGridCNAMEDefaults, and customisable
mte1, mte2Mailchimp TransactionalCNAMEFormerly Mandrill
mxMailgunTXTClassic setup
pdk1, pdk2MailgunCNAMEAutomatic Sender Security
km1…ks2KlaviyoCNAMESeparate pairs for marketing, transactional and service mail
zendesk1, zendesk2ZendeskCNAMEBoth point at a shared target Zendesk controls
smtpapiHubSpotCNAMEThe hostnames it points to are not published
acdkim1ActiveCampaignCNAME or TXTVaries with your DNS host
mailBrevoTXTAlso a common generic convention
k1, k2, k3deliberately not attributed—One rival tool credits these to Mailchimp, another to Mailgun, and Mailgun’s own docs show no such selector. We identify a hit from the CNAME target instead
zoho, default, dkim, smtpconventions, no vendor claim—Zoho documents zoho only as an example; the rest are habits, not standards

3. Check your platform’s DNS setup page

Every provider shows the exact records it wants you to publish. This is the slowest route but it is also the one that tells you whether you were supposed to publish two selectors and only published one — a specific and common Microsoft 365 failure.

Limit: five providers generate selector names that no search can find. Amazon SES uses a random per-identity token, three of them. Postmark date-stamps a selector per sender signature. Salesforce Marketing Cloud provisions one per domain. Zoho and Salesforce core let the customer choose the string. Brevo and HubSpot do not publish their CNAME hostnames. On those platforms a blank search will always come back empty, and that is not a finding.

How to check a DKIM record

  1. Enter the domain that appears after the @ in your address. If your platform signs with its own domain, use that one instead — the key lives wherever d= points.
  2. Leave the selector blank the first time. If the search finds selectors, you also learn which platforms are signing for this domain.
  3. Read the key length before anything else. It is decoded from the key itself, not read off a tag, so it is the real number.
  4. Check the flags. A record can be flawless and still contribute nothing while t=y is set.
  5. Re-check after editing DNS. Results here are cached for fifteen minutes, and your record’s own TTL keeps the old value alive at receivers for longer.

Checking it from a terminal

Query the full name, including _domainkey. These return the raw value, which is the way to see whether your DNS host stored the quoting as part of the key rather than as a delimiter.

# macOS and Linux

dig +short TXT google._domainkey.example.com

# Windows PowerShell

Resolve-DnsName -Type TXT google._domainkey.example.com

# if your provider gave you a CNAME, follow it first

dig +short CNAME selector1._domainkey.example.com

To read the other records a mail setup depends on — the MX hosts, the _dmarc record, or the SPF record on the same domain — our DNS lookup tool returns them with their TTLs.

Reading the result: tags, defaults and key length

A DKIM key record is short, and most of what governs it is never written down. RFC 6376 §3.6.1 applies a default to every tag you omit, so two records that look different can behave identically — and one that looks complete can be carrying a default you did not intend. The table in the result above marks which values you published and which are defaults in force.

The only tag that is required

p=, the public key, is the single REQUIRED tag. Everything else has a default. That has one consequence worth remembering: p= with nothing after it is not a mistake or a truncation. RFC 6376 §3.6.1 says “an empty value means that this public key has been revoked”. It is the correct way to retire a key — you empty it rather than delete the record, so verifiers get a definite answer instead of a lookup failure.

What the key length actually tells you

The bit count in the result is decoded from the key material itself. RFC 8301 §3.2 sets the thresholds: signers “MUST use RSA keys of at least 1024 bits” and “SHOULD use RSA keys of at least 2048 bits”, while verifiers “MUST NOT consider signatures using RSA keys of less than 1024 bits as valid”. So under 1024 is a hard failure by rule; 1024 is valid but below what the specification asks for; 2048 is the recommendation. The large receivers have settled on the same line rather than a stricter one: Google requires “a DKIM key of 1024 bits or longer” and recommends 2048, and Yahoo requires “1024 bits or greater” and also recommends 2048. So a 1024-bit key is not being refused today — treat the upgrade as a rotation task rather than an emergency, and note that the checkers competing for this search disagree with each other about it, one publishing a 1024-bit minimum and another calling anything under 2048 weak.

An ed25519 key breaks the comparison. RFC 8463 §4.2 notes that “since the key is 256 bits long, the base64 text is 44 octets”. That 256 is not weaker than RSA-2048 — it is a different kind of number, and it is also why a checker that measures every key the same way reports ed25519 keys incorrectly.

Key fact: if you see a g= tag in your record or in someone’s documentation, it is from RFC 4871, the 2007 specification that RFC 6376 replaced. It is not a DKIM tag any more and modern verifiers ignore it. Two of the checkers competing for this search still list it as current.

Five things that quietly break DKIM

None of these produce an obvious error. In every case the record looks reasonable and the mail stops being trusted.

1. Testing mode left switched on

The worst of the five, because the record is otherwise perfect. RFC 6376 §3.6.1 states that with t=y set, verifiers “MUST NOT treat messages from Signers in testing mode differently from unsigned email, even should the signature fail to verify”. Read that carefully: not “treat with suspicion” but “treat as unsigned”. A valid key with t=y cannot contribute a DMARC pass. It belongs in a rollout and nowhere else.

2. Two records at one selector, mistaken for one split record

These look nearly identical in most tools and mean opposite things. One record published as several character-strings is normal — a DNS character-string cannot exceed 255 octets and a 2048-bit key does not fit, so it must be split, and verifiers join the pieces with nothing added. Two separate records at the same selector is fatal: RFC 6376 §3.6.2.2 says “TXT RRs MUST be unique for a particular selector name; that is, if there are multiple records in an RRset, the results are undefined”. Undefined means different receivers may pick different records, so your mail passes for some recipients and fails for others. It usually happens during a migration when the new key is added beside the old instead of replacing it.

3. The key that decodes to nothing

A 2048-bit key is roughly 400 characters of base64, and DNS control panels handle that badly. Some require you to split and quote it yourself; some split it for you; some have a field limit that truncates it without saying so. The three failure signatures are a key that is valid base64 but not a readable key structure, a key with literal quote marks stored inside the value, and a key with a space inserted at the join. All three leave a record that looks present and cannot be used.

4. A delegation that stopped working

Most platforms have you publish a CNAME at the selector and keep the real key on their side. That is sound, and it introduces two failure modes of its own: publishing a TXT where a CNAME belongs, and a DNS provider that proxies or flattens the CNAME so the lookup returns something other than the intended target. Microsoft documents the second case specifically for proxied records. This tool prints the whole chain so you can see where it ends — and for a delegated setup, key length and rotation are the platform’s decision rather than yours.

5. An algorithm nobody accepts any more

RFC 8301 §3.1 is blunt: “rsa-sha1 MUST NOT be used for signing or verifying”, and signatures using it “have permanently failed evaluation”. If your record’s h= tag lists only sha1, every signature made under it fails by rule. Listing sha1 alongside sha256 is not fatal, but it buys nothing and marks the record as old. If the mail itself is being refused rather than just unauthenticated, the cause may be reputation instead — the comparison in our guide to tools that diagnose deliverability covers where each kind of failure shows up.

DKIM, SPF and DMARC: why a valid key can still fail

A DKIM signature can verify perfectly and do nothing for you, because DMARC asks a second question. Validity is whether the maths checks out. Alignment is whether the signing domain in d= matches the domain your recipient sees in the From: header — the same organisational domain under relaxed alignment, an exact match under strict. Platforms that sign with their own domain produce valid signatures that DMARC will not count. Paste your signature header above and the comparison is made for you; our DMARC checker shows which alignment mode your policy asks for.

One honest limitation of the comparison above: it treats the last two labels of a name as the organisational domain. That is right for example.com and mail.example.com, and wrong for a multi-label public suffix such as co.uk, where the real organisational domain is three labels. Getting that exactly right needs the Public Suffix List, which is more machinery than one tool page should carry. If your domain sits under a suffix like that, read the verdict as a strong indication rather than a ruling.

Why DKIM is the half that matters more

SPF and DKIM are often described as interchangeable belts and braces. The current DMARC specification does not treat them that way. RFC 9989, published in May 2026, states in §7.4 that domains publishing p=reject “MUST NOT rely solely on SPF to secure a DMARC pass and MUST apply valid DKIM signatures to their messages”. That is a requirement, not advice. The reason is practical: SPF authenticates the connecting server, so it breaks the moment a message is forwarded, while a DKIM signature travels with the message and survives the hop.

So the two are not alternatives. SPF is the one that fails on forwarding; DKIM is the one that fails when a message is modified. If you have not yet checked the other half, our SPF record checker counts the ten DNS lookups SPF is limited to and names the term that breaks the limit.

What the large receivers require

The three large consumer providers have each drawn a line, and the wording differs in ways worth reading carefully.

Google operates two tiers. Every sender, at any volume, must “set up SPF or DKIM”. Senders of more than 5,000 messages a day to Gmail accounts must “set up SPF and DKIM” plus DMARC, with the From: domain aligned to either the SPF or the DKIM domain. Those requirements took effect on 1 February 2024. Google also states a key length: “Sending to personal Gmail accounts requires a DKIM key of 1024 bits or longer”, with 2048 recommended.

Microsoft is the one that changed most recently, and it is stricter than Google in one specific way. For senders of 5,000 or more messages a day to Outlook.com and its other consumer services, Microsoft requires that “both SPF and DKIM checks must pass” — not either one — while requiring only that at least one of them be aligned. Non-compliant mail was sent to the junk folder from 5 May 2025, and rejection is now live: Microsoft publishes a dedicated page for the 550 5.7.515 bounce a failing sender receives. If your DKIM has been half-configured for years and nothing appeared to break, this is the change that breaks it.

Yahoo asks bulk senders for both SPF and DKIM and a DMARC policy of at least p=none, and requires “a DKIM key length of 1024 bits or greater”, recommending 2048. Unlike the other two, Yahoo deliberately publishes no volume threshold, stating plainly that it “will not specify a volume threshold”. Any guide quoting you a Yahoo number has invented it.

One operational detail from Microsoft’s own DKIM documentation that most guides skip: every sending subdomain needs its own record, and both selector1 and selector2 must exist or key rotation cannot happen. Leave the selector blank above and this tool tells you whether both are actually published.

What DKIM does not prove

Worth being precise about, because DKIM is routinely described as protection against spoofing and it is narrower than that.

It does not prove who sent the message. A signature proves that the holder of the private key signed this content, and that the signed parts have not changed. It says nothing about the envelope, nothing about the connecting server, and nothing about intent. The specification says so itself: RFC 6376 §8.6, “Replay/Spam Attacks”, notes that “a message signed by a particular domain can be sent to many recipients and still verify correctly at each recipient’s mail system”. Nothing in a signature ties it to one delivery.

It does not protect the headers you did not sign. The h= tag inside a signature lists which headers were covered. Anything absent from that list can be added or altered in transit without breaking the signature. The same applies to the l= tag, which limits how much of the body was signed — text appended after that limit is unsigned and unprotected. RFC 6377 calls l= unworkable for MIME messages and discourages its use.

It does not survive a mailing list unaided. RFC 6377 lists what list software does that invalidates a signature: adding a subject prefix, appending a footer, replacing Reply-To or Sender, reordering or stripping MIME parts. ARC exists to carry the original authentication result across such a hop, but honouring ARC is optional for the receiver. No change to your DNS fixes this, which is worth knowing before you spend an afternoon editing a record that was already correct.

It does not make you trusted. Authentication and reputation are separate. A correctly signed message from a domain with poor sending history still lands in spam. If your record checks out and mail is still being refused, the next place to look is the reputation of the address you send from — our sender reputation check covers the signals receivers weigh, and the walkthrough for diagnosing an SPF, DKIM or DMARC failure starts from what the receiver told you rather than from your DNS.

Practical tip: after any DKIM change, send one message through the affected platform and read the authentication result on arrival. A record that looks right in DNS and a signature that verifies at a receiver are two different facts, and only the second one counts.

Frequently asked questions about DKIM records

How do I find my DKIM selector?

Three ways, fastest first. Send yourself a message and open the raw source: the DKIM-Signature header carries s=, which is the selector, and d=, the signing domain. Paste that header into the box above and this tool reads both for you. Or leave the selector blank and let it try the published list of provider selectors. Or check your email platform’s DNS setup page.

Can I check DKIM without knowing the selector?

Yes, within limits. Leave the selector blank and this tool queries a published list of selectors used by Google Workspace, Microsoft 365, SendGrid, Klaviyo, Zendesk, Mailgun and others. What it cannot do is prove a negative: DNS offers no way to list the selectors a domain has published, so a miss means “none of these”, never “no DKIM”. Several providers generate selector names that cannot be guessed at all.

What does an empty p= tag mean?

The key has been retired on purpose. RFC 6376 §3.6.1 states that “an empty value means that this public key has been revoked”. It is the correct way to end a key’s life: you publish p= with nothing after it rather than deleting the record, so verifiers get a definite answer instead of a lookup failure. If you did not expect it, someone rotated keys and left this selector behind.

Is a 1024-bit DKIM key still acceptable?

It is valid, and it is below what the specification asks for. RFC 8301 §3.2 says signers “MUST use RSA keys of at least 1024 bits” and “SHOULD use RSA keys of at least 2048 bits”. Anything under 1024 is a hard failure: verifiers “MUST NOT consider” those signatures valid. We found no major provider actually rejecting 1024-bit keys, so treat this as a rotation task, not an emergency.

What does the t=y flag do to my DKIM?

It switches the protection off while leaving the record looking healthy. RFC 6376 §3.6.1 says verifiers “MUST NOT treat messages from Signers in testing mode differently from unsigned email, even should the signature fail to verify”. So a perfectly valid key with t=y set cannot contribute a DMARC pass. It belongs in a rollout, not in production — remove it once you have confirmed signing works.

Why is my DKIM record split into two parts in DNS?

Because it has to be. A DNS character-string cannot exceed 255 octets, and a 2048-bit key does not fit, so the record is published as several strings that verifiers join with nothing added between them. That is correct and expected. The failure to watch for is a DNS editor that inserts a space at the join, or stores the quote marks as part of the value — both leave a key that will not decode.

Can I have two DKIM records for one selector?

No. RFC 6376 §3.6.2.2 is explicit: “TXT RRs MUST be unique for a particular selector name; that is, if there are multiple records in an RRset, the results are undefined.” Different verifiers may pick different records, so mail passes for some recipients and fails for others. It usually happens during a provider migration when the new key is added beside the old instead of replacing it.

Why does DKIM pass but DMARC still fail?

Because DMARC checks alignment as well as validity. The signature’s d= domain has to match the domain in the visible From: header — exactly under strict alignment, or the same organisational domain under relaxed. Platforms that sign with their own domain produce a valid signature that DMARC ignores. Paste your signature header above and this tool compares d= against the domain you entered.

How often should I rotate DKIM keys?

M3AAWG’s key rotation guidance recommends twice a year, keeping the retired public key in DNS for a minimum of seven days and up to thirty before setting its p= to empty. The waiting period matters: mail already in flight still needs the old key to verify. Microsoft 365 automates this, which is why it requires both selector1 and selector2 to exist.

My provider gave me a CNAME instead of a TXT record — is that right?

Yes, and it is the common arrangement. Microsoft 365, SendGrid, Klaviyo, Zendesk, HubSpot, Mailchimp and ActiveCampaign all have you publish a CNAME at the selector name that points at a record they control, so they can rotate keys without touching your DNS. The trade-off is that key length and rotation become their decision. This tool follows the chain and shows you where it ends.

How do I check DKIM for Google Workspace or Microsoft 365?

Leave the selector blank and this tool searches both platforms’ defaults for you. Google Workspace signs with google unless an administrator changed it, and publishes the key as a TXT record on your own domain. Microsoft 365 uses selector1 and selector2, published as CNAMEs pointing into onmicrosoft.com — and both must exist, because Microsoft rotates between the two. If only one resolves, rotation cannot happen and the setup is half-finished. The selector table above reports the key length and state of each one it finds, so you can see whether the second selector is genuinely ready.

I published the record but the checker still says nothing is there. How long does it take?

There is no fixed number — it depends on two TTLs, and the second one catches people out. The first is the TTL on the record itself, which governs how long resolvers keep the old answer. The second is negative caching: when a resolver is told a name does not exist, it caches that absence too. RFC 2308 sets that duration from “the minimum of the SOA.MINIMUM field and SOA’s TTL” for the zone. So if you checked the selector before publishing, the “nothing here” answer can stay cached for a while afterwards. Wait out the zone’s SOA minimum before concluding the record is wrong.

Does DKIM stop someone spoofing my domain?

Not on its own. DKIM proves a message was signed by the holder of the key and has not been altered in the signed parts. It does not prove who sent it, and it does not check the envelope. RFC 6376 §8.6 notes that “a message signed by a particular domain can be sent to many recipients and still verify correctly at each recipient’s mail system” — the replay problem. DKIM is one input to DMARC, which is what acts on the result.

Do I need DKIM if I already have SPF?

Yes. Google requires both from senders above 5,000 messages a day to Gmail, and Yahoo requires both from bulk senders. More pointedly, RFC 9989 §7.4 states that domains publishing p=reject “MUST NOT rely solely on SPF to secure a DMARC pass and MUST apply valid DKIM signatures”. DKIM also survives forwarding, which SPF does not, so the two fail in different situations.

What happens to DKIM when mail is forwarded or goes through a mailing list?

It often breaks, and the record is not at fault. RFC 6377 lists what mailing lists do that invalidates a signature: adding a subject prefix, appending a footer, replacing Reply-To, reordering or stripping MIME parts. ARC exists to carry the earlier authentication result through such a hop, but honouring ARC is optional for receivers. No DNS change fixes this.

Related email authentication tools

DKIM is one of three checks a receiver runs. These cover the other two, the reputation behind them, and the DNS underneath.

A valid key is one of three checks

DKIM survives forwarding and SPF does not. DMARC decides what happens when either one fails. Check the other two while you are here.

Last updated 21 September 2026 · Rules from RFC 6376, RFC 8301 and RFC 8463; all data read live from public DNS