Skip to content
← All analysers
Technical analysis

DKIM key analyser

Check a DKIM public key's strength, revocation state, and tags.

Short answer

A DKIM selector record is healthy when it carries v=DKIM1, a 2048-bit or stronger RSA key (or Ed25519), no t=y testing flag, and SHA-256 signing. An empty p= tag revokes the selector, which fails every message still signed with it.

Read it from DNS with dig +short TXT selector._domainkey.example.com, then paste the value here. Quoted, multi-string records are joined the way a resolver joins them.

Runs entirely in your browser. The key you paste is never sent to a server, logged, or stored — this page has no backend to send it to.

Paste a record to see the findings. Nothing is checked until you do.

How to use it

  1. Find the selector in a message's DKIM-Signature header (the s= tag).
  2. Read the key: dig +short TXT selector._domainkey.example.com.
  3. Paste the whole record. The analyser decodes the key to report its real bit length.
  4. Rotate anything under 2048 bits using a new selector before revoking the old one.

Frequently asked questions

How is key length determined without DNS?

The base64 key is a SubjectPublicKeyInfo structure. The analyser walks its ASN.1 and reads the modulus length directly, so the reported bit count is exact rather than estimated.

My key shows as revoked — what happened?

An empty p= tag is an explicit revocation. That is correct after a completed rotation and an outage if the selector is still signing mail.

Should I use Ed25519?

Publish it alongside an RSA selector rather than instead of one; verifier support is still incomplete.

Guides that go deeper

More technical analysis

All analysers
Technical analysis

SPF record analyser

Parse an SPF record, count its DNS lookups, and find what will break it.

Runs in your browser
Technical analysis

DMARC record analyser

Grade a DMARC record on enforcement, not just syntax.

Runs in your browser
Technical analysis

Email header analyser

Read authentication, DMARC alignment, and hop-by-hop delays from raw headers.

Runs in your browser