// free tool, no signup

Free DKIM Record Checker

Enter a domain and a DKIM selector to look up the public key TXT record published at <selector>._domainkey.<domain> and read its tags. It is free, runs instantly in your browser over DNS-over-HTTPS, with no signup and nothing stored.

Leave the selector blank to auto-detect from common providers, or enter the s= value from a received email's DKIM-Signature header (for example google, k1, selector1, default).

// what it is

What is a DKIM record?

DKIM (DomainKeys Identified Mail) lets a sending server attach a cryptographic signature to each message. The matching public key is published in DNS as a TXT record at <selector>._domainkey.<domain>, where the selector is a label the sender chooses so it can run several keys at once. A receiving server reads the selector from the message's DKIM-Signature header, fetches that public key, and verifies the signature to confirm the message was not altered in transit and really came from the signing domain. A valid DKIM signature is also one of the ways a message can align with and pass DMARC. Mailbox providers like Gmail and Yahoo expect bulk senders to authenticate with DKIM, so a published, correct record is part of getting to the inbox.

// reading the result

How to read your result

  • The selector

    DKIM is published per selector, not per domain, so you must supply one. Find it in a message you received from the domain: open the raw headers and read the s= tag inside the DKIM-Signature line. If you cannot see a header, try common selectors such as google (Google Workspace), selector1 and selector2 (Microsoft 365), k1 (Mailgun), s1 and s2 (SendGrid), k1, k2 and k3 (Mailchimp), default, or dkim.

  • v=DKIM1

    The version tag. It should read v=DKIM1 and, when present, must be the first tag in the record. Anything else means the record is not a valid DKIM key record.

  • k=rsa

    The key type. Most records use k=rsa; some modern setups use k=ed25519. If k= is omitted it defaults to rsa, so a missing k tag is normal.

  • p= public key

    The base64-encoded public key. This is the core of the record and must be one unbroken string with no spaces or line breaks. RFC 8301 sets a 1024-bit minimum for RSA, and 2048-bit is the current recommendation.

  • Empty p= means revoked

    If the record exists but p= is empty (p=), the key has been deliberately revoked per RFC 6376. This is different from no record at all: an empty p= tells verifiers to treat any signature using this selector as invalid.

// common issues

Common problems and fixes

No record found for the selector

The lookup returns nothing because the selector is wrong or the key was never published. Confirm the exact selector from the s= tag in a real DKIM-Signature header, then re-check. Each selector is separate, so the right key may live under a different selector.

Empty p= (revoked key)

The record is present but the p= value is blank, which RFC 6376 defines as a revoked key. Receivers will fail any signature signed with this selector. Republish the record with the current public key, or point your sending platform at a selector that still has a valid p= value.

Public key split or padded with spaces

The p= value was pasted across multiple strings or has stray spaces and line breaks, so verifiers reconstruct the wrong key. Publish the base64 key as one continuous value. If your DNS host splits long TXT records into quoted chunks, that is fine as long as no whitespace lands inside the key itself.

Missing v=DKIM1 or wrong tag order

If the record does not start with v=DKIM1, parsers may reject it. Make sure the version tag is present and first, with tags separated by semicolons.

Key too short or still in testing

A 1024-bit RSA key meets the old minimum but 2048-bit is the current recommendation, and a t=y tag marks the domain as testing so receivers may ignore failures. For production mail, use a 2048-bit key and remove t=y once you have confirmed signing works.

// FAQ

Questions, answered.

How do I find my DKIM selector?
Open a message you sent to yourself or received from the domain and view its raw headers. In the DKIM-Signature header, the s= tag holds the selector and d= holds the signing domain. If you cannot inspect a header, try common selectors like google, selector1, selector2, k1, s1, default, or dkim, since they map to popular providers.
Why does a domain have more than one DKIM selector?
Selectors let a domain run multiple keys at the same time, for example one per sending service or one old and one new key during rotation. Each selector points to its own TXT record at <selector>._domainkey.<domain>. That is why you must check a specific selector rather than the bare domain.
What does an empty p= tag mean?
An empty p= (p=) is the formal way to revoke a key under RFC 6376. The record still exists, but it tells verifiers the key is dead and any signature using that selector should be treated as invalid. A revoked key is different from a missing record, which usually points to a DNS or typo problem.
Does this DKIM checker store my data or need an account?
No. The check runs entirely in your browser using DNS-over-HTTPS, with no signup and nothing saved. For the full picture of how a domain authenticates, pair it with our deliverability tools and run an inbox placement test.
Does a valid DKIM record guarantee my mail reaches the inbox?
No. DKIM proves a message was signed by the domain and not altered, which helps with DMARC and sender reputation, but inbox placement also depends on SPF, DMARC, list hygiene, content, and your sending history. Use the Unspam tools together to check the whole setup.
// before you hit send

A clean record is step one. See where your email actually lands.