Skip to main content
APRF

APRF Report Analyzer

Paste or upload an APRF performance report and read it: who sent it, which DKIM domain and selector it covers, and the inbox, unwanted and engagement counts for every segment, exactly as the mailbox provider reported them. Nothing leaves your browser.

Your report is read in this browser and never uploaded.

What an APRF report contains

An APRF report is a JSON document a mailbox provider emails to the address in your APRF record. Each report covers one UTC day, one DKIM signing domain and one selector, and counts where your mail landed and how recipients responded. The format is defined in draft-ietf-mailmaint-aprf-00. Comcast (Xfinity) sends beta reports today, according to Spam Resource.

Field Meaning
source The mailbox provider that wrote the report
dkim_domain / dkim_selector The signature the counts belong to. *.example.com rolls subdomains up; selector * rolls selectors up.
report_start / report_end Epoch seconds for one UTC day, 00:00:00 to 23:59:59
sdi_used The SDI header the provider split by, N/A when it did not use one, N/F when your record declares none
classification Placement counts, such as inbox and unwanted
engagement positive, neutral and negative actions, each defined by the provider

Why the analyzer never shows an inbox rate

Providers report counts in buckets and give the bucket's upper bound (draft section 6), so a count of 1,000 means "up to 1,000". Adding buckets together or dividing one by another produces a number that looks precise and is not, so the analyzer shows every count exactly as sent. A category the provider left out is shown as a dash, not as zero.

How reports arrive

Reports come as a multipart/report email with the JSON attached, sometimes gzipped as .json.gz. The attachment is named <yyyymmdd>_<DKIM domain>_<selector>_<source>, and the subject is the same name after APRF:. Upload either form here, or paste the JSON.

Valid or refused

The analyzer runs the same checks DMARCguard runs when an APRF report reaches your report mailbox: a provider name, a real domain, a selector, a plausible time window, and non-negative whole-number counts. A report marked refused would be set aside rather than stored. Notes and warnings point out where a provider departs from the draft without making the report unreadable. To start receiving reports, publish a record with the APRF record generator.

Frequently asked questions

Is my APRF report uploaded anywhere?

No. The analyzer reads the report in your browser, including .json.gz files, which it decompresses locally. Nothing is sent to our servers. A share link keeps the report in the URL fragment, which browsers never send to a server.

Why doesn't the analyzer show an inbox rate?

Providers report counts in buckets and give each bucket's upper bound, so 1,000 means up to 1,000. Adding or dividing those numbers produces a figure that looks precise and is not. The analyzer shows every count exactly as reported, and a missing category as a dash rather than zero.

What do N/A and N/F mean in sdi_used?

N/A means the provider did not use the SDI header your record declares. N/F means your record declares no valid sdi= tag. Any other value names the header and separator the provider used to split the counts into segments.

How is an APRF report different from a DMARC report?

A DMARC aggregate report (RFC 9990) is XML about authentication: which sources sent as your domain and whether SPF and DKIM passed. An APRF report is JSON about performance: where messages with a valid DKIM signature landed and how recipients engaged with them.

Get the full picture with DMARCguard

Continuous monitoring, aggregate report parsing, and actionable insights for all your email authentication protocols.

Start Free

or compare plans