Free tool

DMARC Report Analyzer

Upload one aggregate (rua) report and see who sent mail as your domain, how much of it passed DMARC, and why the rest failed.

The report is read in memory and discarded. Patchkit doesn't store it or log it.

By Ahmet Karaca · Updated · Checked against RFC 9990 (DMARC aggregate reports) and RFC 9989 (DMARC, May 2026) on

What an aggregate report tells you

When your domain publishes a DMARC record with an rua= address, the large mailbox providers send you a daily summary of every message that claimed to come from your domain. The summary is an XML file. For each server that sent mail as you, it lists how many messages arrived, whether SPF and DKIM passed, whether either of them aligned with your From domain, and what the receiver did with the mail: delivered it, sent it to spam, or rejected it.

That file is the only place you see your whole sending picture: the newsletter tool someone signed up for, the help desk that sends replies, the old server nobody remembers, and anyone spoofing your domain. Raw XML is hard to read, so this tool turns one report into a short summary and a list of sources sorted by volume.

How to use it

  1. Open a DMARC report email that arrived at the address in your rua= tag.
  2. Save the attachment. It is usually a .xml.gz or .zip file; you don't need to unpack it.
  3. Drop the file on the form above or choose it, then select Analyze report. Files up to 10 MB are accepted.
  4. Start with the sources that fail DMARC. A known service that fails usually needs DKIM set up with your domain; an unknown one needs a closer look.

Reading the result

The summary shows how many messages the report covers, the share that passed DMARC, and how many the receiver quarantined or rejected. Under it is the policy you had published when the report was written, read the same way our DMARC checker reads it: a testing flag (t=y) or an old pct= value changes what receivers actually do, and the note says how.

Each source row shows the sending IP, the service we recognized (by its DKIM signature or by reverse DNS), the number of messages and the receiver's DMARC verdict. One sentence explains the verdict from the report's own fields, for example that SPF passed for a bounce domain that doesn't align with yours. Open "Raw results" to see the exact SPF and DKIM results the receiver recorded.

What this tool checks

  • Reads .xml, .xml.gz and .zip reports by their content, not their file name.
  • Totals the messages, the DMARC pass rate and what receivers did with the mail (none, quarantine, reject).
  • Groups records by source IP and result and orders them by volume, showing up to the 500 largest sources.
  • Names known services by their DKIM signature first and by reverse DNS second, and says which one matched.
  • Explains in one sentence why each source passed or failed DMARC, using the receiver's own results.
  • Reads the published policy, including testing mode and a legacy pct= value, as RFC 9989 defines them.

What it doesn't check

  • It doesn't re-run SPF or DKIM. These results are what the receiver recorded; Patchkit doesn't re-run the checks.
  • It reads one report at a time. Trends across days and receivers are what the monitoring account is for.
  • It doesn't check that the report is about a domain you own; any domain's report can be read.
  • Reverse DNS can name a mailbox provider's servers, but it can't tell your own mail from mail forwarded through that provider.
  • Files over 10 MB and archives with more than one report are refused rather than partly read.

New to these reports? How to read DMARC aggregate reports walks through every field, and DMARC fails even though SPF passes explains the most common failing row.

Related tools and guides

Frequently asked questions

+Where do I find a DMARC aggregate report?

Receivers such as Google, Microsoft and Yahoo send one report a day to the address in your DMARC record's rua= tag. The report is the .xml, .xml.gz or .zip attachment on that email. Save the attachment and upload it here as it is; there's no need to unpack it.

+Do you keep the report I upload?

No. The file is read in memory to build the result and then discarded. It isn't written to a database, to file storage or to our logs, and the page address never contains it, so the result can't be shared as a link.

+Why does a source show as unrecognized?

We name a source when its DKIM signature or its reverse DNS matches a service we know. A server without a passing DKIM signature and without a recognizable reverse DNS name stays unrecognized. It may be your own mail server, a forwarder, or someone sending as your domain without permission.

+Why does DMARC fail when SPF passes?

DMARC needs SPF or DKIM to pass for a domain that aligns with the address in the From line. SPF often passes for the sending service's own bounce domain, which doesn't align with yours. The sentence under each source says which check passed and for which domain.

+Can I analyze several reports at once?

This tool reads one report at a time and refuses an archive that holds more than one. A free Patchkit account reads every report that arrives, groups the sources across days and flags it in your dashboard when a new one appears.

We use Google Analytics cookies only if you accept. Privacy policy