DMARC record parser
Reads one DMARC record as text with the DMARC check's rules (RFC 9989): p, sp, np, psd, t, adkim, aspf, rua and ruf, historic and unknown tags. Nothing is looked up, so which record applies to a domain and external report destinations are not checked.
Updated 2026-10-27
What this tool checks
The record is read with the rules of the DMARC check, following RFC 9989:
- Version: the text must start with
v=DMARC1, otherwise it isDMARC_SYNTAX_ERROR. - Policies:
p,sp,npandpsd, withDMARC_INVALID_POLICYfor a value receivers do not know. - Tags:
t,adkim,aspf,ruaandruf, historic tags such aspct, and tags DMARC does not define.
How to read the result
DMARC_POLICY_NONE and DMARC_TESTING_MODE mean the record only monitors. DMARC_NO_RUA means no aggregate reports are requested, so you will not see who sends mail as your domain.
Limitations
- Nothing is looked up: inherited records, the organisational domain and external report destinations need the DMARC check.
- A record split into several quoted strings must be joined first.
Use it from code
API reference for DMARC record parser
curl -i -X POST https://api.lookproof.dev/v1/mail/dmarc-parse \
-H 'content-type: application/json' \
-d '{"record": "v=DMARC1; p=quarantine; rua=mailto:[email protected]; adkim=s"}'A request without payment is answered with 402 Payment Required and the exact price. See the API reference.
Limits
| Input | DMARC record |
|---|---|
| Deadline | 2 seconds |
| Freshness | Computed from the input; nothing is looked up |
| Price | $0.002 per check |
Findings this tool can report
DMARC (9)
- Info
DMARC_HISTORIC_TAGThe DMARC record contains a tag that RFC 9989 lists as historic. - Error
DMARC_INVALID_POLICYThe DMARC record has an invalid p, sp or np tag. - Info
DMARC_NO_RUAThe DMARC record has no aggregate report address (rua). - Info
DMARC_PARTIAL_PCTThe DMARC record uses pct below 100, a tag that RFC 9989 removed. - Info
DMARC_POLICY_NONEThe DMARC policy is p=none (monitoring only). - Error
DMARC_SYNTAX_ERRORThe DMARC record contains a tag that cannot be parsed or has an invalid value. - Info
DMARC_TESTING_MODEThe DMARC policy is in testing mode (t=y). - Info
DMARC_UNKNOWN_TAGThe DMARC record contains tags that are not defined. - Info
DMARC_UNSUPPORTED_REPORT_URIA DMARC report address uses a scheme other than mailto.
Frequently asked questions
How is this different from the DMARC check?
The DMARC check finds the record that applies to a domain in DNS, including records inherited from a parent. The parser reads only the text you paste, so you can test a record before you publish it. The tags and findings are the same.
Which policy is shown?
The record's own p=, sp= and np=. Which of them applies to a given name depends on where the record is published, which the parser cannot know; a note says so.
Is the report address checked?
Only its syntax. When rua points to another domain, that domain must publish a record that accepts the reports (RFC 9989 external destination verification). That needs DNS, so the result notes it instead.