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.
Read the complete APRF guide to learn more.
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