DNSfinder.net
DKIM Key Inspector

DKIM Checker

Enter a domain and, if you know it, the selector, and the checker fetches the TXT record at selector._domainkey.yourdomain, decodes the public key and reports its type, length, testing flag and hash settings. Leave the selector empty and it probes 49 selectors used by common providers, twelve at a time, and lists every key it finds. Each key gets a Valid, Weak, Problem or Revoked label with the reasons underneath.

Loading DKIM Checker...

Querying live edge resolvers and network infrastructure...

How to use the DKIM Checker

  1. Type the domain and press Check DKIM with the selector box empty to probe the common selectors, or enter the selector to check one name directly.
  2. Find your selector in a message you sent: view the raw headers, locate DKIM-Signature and copy the s= value; d= tells you which domain the key lives under.
  3. Read each key card: the pill says Valid, Weak, Problem or Revoked, and the rows show selector, key type, key length, testing mode and hash algorithms.
  4. Fix anything listed in the findings. If no key was found, confirm the selector spelling and that the TXT or CNAME record was published at your DNS host.

What to look for

Key length drives the verdict

The public key in p= is decoded to measure it. RSA at 2048 bits or more passes, 1024 to 2047 bits is a warning, below 1024 is a failure because major receivers reject such keys, and a key that cannot be decoded is a failure that usually means a truncated or mangled TXT record.

Revoked is not broken

A record whose p= tag is present but empty is a revoked key. The card shows a Revoked pill and an informational note rather than an error, because publishing an empty p= is the documented way to retire a selector after rotation. Mail still signed with it will fail.

Testing mode and SHA-1

t=y tells receivers the domain is testing DKIM and asks them to be lenient about failures. Remove it once signing is confirmed. An h= tag that allows only sha1 is flagged too, since RFC 8301 deprecates SHA-1 signatures and requires sha256.

Guide

Finding and judging a DKIM public key

How DKIM uses selectors

A signing server adds a DKIM-Signature header to each message: d= names the signing domain, s= the selector, and b= holds the signature over the chosen headers and the body hash. The receiver builds the name s._domainkey.d, fetches its TXT record, takes the public key from p= and verifies the signature. If the body or a signed header changed in transit, verification fails.

Selectors exist so a domain can publish several keys at once: one per sending service, or an old and a new key during rotation. No DNS query lists them, which is why the checker either needs the selector from a real message or probes names providers are known to use, such as google, selector1, selector2, k1 and s1.

What the checker looks up

With a selector, it queries one name: selector._domainkey.yourdomain. If you paste the full name, the ._domainkey part and everything after it is stripped. A selector may contain letters, digits, dots, hyphens and the _ character. Without a selector, the 49 common names are queried twelve at a time and every name that returns a record containing v=DKIM1, k= or p= is listed.

Keys delegated by CNAME, which is how many providers hand you a record to publish, resolve the same way because the resolver follows the CNAME to the provider's TXT. The raw record is printed under each card so you can compare it with what the provider gave you. Results are cached for about a minute, so re-check after a short wait if you have just changed DNS.

Reading the key card

Key type comes from k= and defaults to RSA when absent. ed25519 keys are recognized and measured as 256 bits when the raw key is 32 bytes long. Key length is the RSA modulus size decoded from the SPKI structure in p=, with a fallback for the older bare RSAPublicKey form. Testing mode reflects t=y, and Hash algorithms shows h= or any (sha256) when the tag is absent.

The findings explain the pill. A version tag that is not DKIM1 is a warning. A record with no p= at all is a failure, because there is nothing to verify against. An Ed25519 key passes with a note to publish an RSA key alongside it, since not every receiver verifies Ed25519 yet.

Fixing what it finds

No key for a common selector: your provider uses a custom name. Send yourself a message, open the raw headers and read s= from DKIM-Signature, then check that one selector. No key at a specific selector: the record is at the wrong name (a common slip is adding ._domainkey twice), the DNS change has not propagated, or the provider's CNAME target is wrong.

Weak or short key: generate a 2048-bit key in the provider's console, or with the DKIM Generator for a server you run, publish it under a new selector, switch signing to it, and empty the old p= after a few days. Unreadable key: re-copy p= from the source. Long keys split across TXT strings sometimes lose characters in a DNS editor.

  • Selector not found: read s= from a real DKIM-Signature header.
  • 1024-bit key: rotate to 2048 under a new selector.
  • t=y still set: remove it once mail verifies.
  • p= empty: expected after rotation. Stop signing with that selector.

What a DNS check cannot verify

The checker proves a key is published and well formed. It cannot prove your mail is signed with it, that the signature survives your mail flow, or that it aligns with the From domain for DMARC. For one message, paste its headers into the Email Header Analyzer to read the Authentication-Results. For all your senders, read the DKIM column in the DMARC Report Analyzer.

Probing uses public resolvers with a short timeout, and the query names are mirrored into the page URL as ?domain= and ?selector= so a result can be shared. Nothing is stored.

Knowledge Base & FAQ

DKIM Checker FAQs

Common questions about the dkim checker.

A label that tells receivers which public key to fetch: the record lives at selector._domainkey.yourdomain. Selectors let one domain publish several keys at once, for different services or for rotating keys without downtime. You find a message's selector in the s= tag of its DKIM-Signature header.