Skip to content
QKQuickKit日本語
EmailLOCALRuns in your browser

SPF Record Parser

Parse and statically check one SPF (RFC 7208) TXT record: terms, qualifiers, the DNS-lookup count against the limit of 10, and common misconfigurations. No DNS is resolved.

This tool handles input and primary processing in your browser and is designed not to send the input to QuickKit’s server.

Normalized record

Terms

QualifierMechanism / modifierValueDNS lookup

Findings

    How it works

    Paste one SPF record, with or without surrounding quotes; a record split into several quoted strings is concatenated without added spaces. The record must start with v=spf1. Each term is parsed in order into a qualifier (+, -, ~, ?; default +), a mechanism (all, include, a, mx, ptr, ip4, ip6, exists) with its optional value, or a modifier (redirect=, exp=, or an unknown name=value). ip4/ip6 values are checked as addresses or CIDR prefixes. The lookup count is the number of DNS-query-causing terms written directly in this record: its include, a, mx, ptr, exists, and redirect terms. It is neither bound on what an evaluation performs. Fewer of those terms are reached whenever evaluation stops at an earlier matching mechanism, and a whole evaluation can issue more lookups than this record's own count, because a reachable include: or redirect= target is a separate record with lookup terms of its own that this tool does not follow. Findings are graded: an Error is a condition RFC 7208 defines as invalidating the record itself — a syntax error anywhere in it (§4.6), or a repeated redirect= or exp= (§6) — so evaluators reject it outright, while Warnings and Info leave the record valid. The §4.6.4 limit of 10 is a warning here rather than an error, because it bounds the lookup terms an evaluator actually reaches: evaluation stops at the first matching mechanism and never reaches terms after an all, so the static count alone does not determine whether a permerror occurs. This is static analysis only: it never queries DNS, so evaluation-time results — the real lookup count, include:/redirect= targets, void lookups — are outside what it can report.