Skip to content
nestoo
  • What is my IPYour public IPv4 and IPv6 address, location and provider.Network & IP
  • Speed testMeasure your download and upload speed, latency and jitter.Network & IP
  • IP lookupLocation, provider and network of any IP address.Network & IP
  • DNS lookupA, AAAA, MX, TXT, NS and other DNS records for any domain.Network & IP
  • WHOIS lookupOwner, registrar and expiry date of any domain or IP.Network & IP
  • Prefix lookupCheck a prefix in BGP, RPKI and the IRRs before you announce it.Network & IP
  • ASN lookupOwner, announced prefixes and neighbours of any AS number.Network & IP
  • Subnet calculatorNetwork, broadcast, host range and mask of any IPv4 or IPv6 subnet.Network & IP
  • Port checkerCheck whether a port is open on your IP or a server.Network & IP
  • HTTP headers checkerResponse headers, status codes and redirect chain of a URL.Network & IP
  • SSL checkerCertificate validity, expiry and chain of any website.Network & IP
  • SPF, DKIM and DMARC checkerCheck a domain’s SPF, DKIM and DMARC records for mistakes.Network & IP
  • Password generatorStrong, random passwords generated right in your browser.Passwords & security
  • Password strength checkerHow long a password would take to crack, and if it leaked.Passwords & security
  • Hash generatorMD5, SHA-1, SHA-256, SHA-512 and CRC32 hashes of text or files.Passwords & security
  • JSON formatterFormat, validate and minify JSON, with exact error locations.Developer tools
  • Base64 encoder/decoderEncode text or files to Base64 and decode it back.Developer tools
  • URL encoder/decoderEncode and decode URLs and query strings, and parse any URL.Developer tools
  • JWT decoderRead the header and claims of a JSON Web Token.Developer tools
  • UUID generatorRandom UUID v4 and time-ordered v7 identifiers.Developer tools
  • Unix timestamp converterConvert Unix timestamps to dates and dates to epoch time.Developer tools
  • Binary converterTranslate text to binary and convert between number bases.Developer tools
  • Image compressorMake JPG, PNG, WebP and AVIF files smaller, many at once.Image tools
  • Image resizerResize images to exact pixels or by percentage, many at once.Image tools
  • Image converterConvert HEIC, PNG, WebP, AVIF and more to JPG, PNG, WebP or AVIF.Image tools
  • Crop imageCrop, rotate and flip images to any size or aspect ratio.Image tools
  • EXIF viewer and removerSee the hidden data in photos, including location, and remove it.Image tools
  • Favicon generatorTurn a logo into favicon.ico, Apple touch icon and app icons.Image tools
  • Image to Base64Turn images into Base64 data URIs, and data URIs back into images.Image tools
  • Word counterCount words, characters, sentences and reading time.Text tools
  • Case converterUPPERCASE, lowercase, Title Case, camelCase, snake_case and more.Text tools
  • Diff checkerCompare two texts and highlight the differences.Text tools
  • QR code generatorFree QR codes for links, text, Wi-Fi and contacts, as PNG or SVG.Everyday tools
  • Percentage calculatorPercent of a number, percentage change, increase and decrease.Everyday tools
  • Unit converterConvert length, weight, temperature, volume, data and more.Everyday tools

SPF, DKIM and DMARC checker

Enter a domain or an email address to check the records that stop others from sending mail in its name: SPF with every include and its DNS lookup count, DKIM keys and the DMARC policy.

Without a selector, nestoo tries the selectors big email providers use. You find yours as s= in the DKIM-Signature header of an email from the domain.

Try an example:

Checked from our server. We don’t store what you look up.

How to use it

  1. 1.Enter a domain such as example.com, or paste an email address and the part after the @ is checked.
  2. 2.Add a DKIM selector if you know it (the s= value in the DKIM-Signature header of an email); otherwise the selectors of big providers are tried.
  3. 3.Click Check. The verdict at the top sums up SPF, DKIM and DMARC; each section below shows the record, what it means and what to fix.
  4. 4.Open the includes under SPF to see which service uses how many of the 10 DNS lookups, and hover a domain or IP range to look it up in another tool.

What SPF, DKIM and DMARC do

Email was designed without any check of the sender, so anyone can put your domain in the From line. Three DNS records fix that. SPF (a TXT record starting with v=spf1) lists the servers allowed to send mail for the domain. DKIM signs every message with a key whose public half is published at <selector>._domainkey.<domain>, so receivers can verify the message wasn’t changed and really comes from the domain. DMARC (a TXT record at _dmarc.<domain>) ties both to the address people actually see in the From line and tells receivers what to do when neither passes: nothing (p=none), spam folder (p=quarantine) or refuse (p=reject).

A message passes DMARC when SPF or DKIM passes for a domain that matches the From domain. Forwarding often breaks SPF, which is why DKIM matters: a signature survives forwarding, the sending server’s address doesn’t. Gmail, Yahoo and Microsoft now require SPF, DKIM and a DMARC record from anyone who sends mail in bulk.

The SPF limit of 10 DNS lookups

To evaluate SPF, a receiving server may make at most 10 DNS lookups (RFC 7208). Every include, a, mx, ptr, exists and redirect costs one, including those inside the records you include. ip4, ip6 and all cost nothing. Go over 10 and the result is a permanent error (permerror): SPF fails for every message, often without anyone noticing.

Each email service you add (a CRM, a newsletter tool, a help desk) usually brings an include with several lookups of its own, and providers change theirs over time. Remove includes for services you no longer use, use the provider’s narrower include if it offers one, and send marketing mail from a subdomain with its own SPF record. Lookups that find nothing count too: more than two of them are also an error.

Moving DMARC from none to reject safely

Start with p=none and a rua address. Receivers then send daily aggregate reports listing every server that sent mail as your domain and whether SPF and DKIM passed. A report service or a free parser turns the XML into a readable list.

Fix every legitimate source that fails: add it to SPF, turn on DKIM signing in that service, or move it to a subdomain. When the reports show only your own mail passing, switch to p=quarantine, optionally with pct set below 100 for a gradual start, and after a few quiet weeks to p=reject. Keep reading the reports afterwards; a new tool that sends as your domain will show up there first.

Questions and answers

How do I fix “SPF permerror: too many DNS lookups”?

Count the lookups: this checker adds up every include, a, mx, ptr, exists and redirect across all nested records. Remove includes for services you no longer use, replace includes of your own servers with ip4/ip6 ranges, and move bulk senders to a subdomain with its own SPF record. Avoid “SPF flattening” services unless they keep the addresses up to date, because providers change their ranges.

Why doesn’t the checker find my DKIM key?

DKIM keys can only be looked up by selector, and there’s no way to list them. Without a selector, nestoo tries the names big providers use (Google, Microsoft 365, Mailchimp, SendGrid, Zoho and others). Open an email from the domain, look at the DKIM-Signature header and enter its s= value, for example s=20230601, as the selector.

Is p=none enough?

No. p=none only asks for reports; mail that fails DMARC is delivered as before, so spoofing still works. It’s the right first step. Move to p=quarantine and then p=reject once the reports show that all of your real mail passes.

Should SPF end with ~all or -all?

Both protect the domain when DMARC is in place, because DMARC decides what happens to failing mail. ~all (softfail) is the common choice and is more forgiving if you forget a sender. -all is stricter and fine once you’re sure the record is complete. Never use +all or ?all.

Does a domain that sends no email need these records?

Yes, otherwise spammers can use it. Publish v=spf1 -all, a DMARC record with p=reject, and optionally a null MX record (0 .) and an empty DKIM key at *._domainkey. Together they tell every receiver that no mail from this domain is real.