📄 DNS Zone File Syntax Checker
Paste a BIND-style zone file to do a quick line-by-line sanity check: it flags lines with no recognized record type/directive, or a record type with no data. This is a basic syntax scan, not a full RFC 1035 zone-file parser — always test with your DNS provider before publishing.
What the scan checks, line by line
Everything runs in your browser; the zone is never uploaded. Each line is cut at
the first ;, blank lines are skipped, and anything starting with
$ is accepted as a directive. Otherwise the line must contain one of
fourteen known types - A, AAAA, CNAME, MX, TXT, NS, SOA, CAA, SRV, PTR, NAPTR,
DNSKEY, DS, TLSA - and at least one token after it. So it catches typos and
truncated lines, not bad data:
@ IN A 93.184.216.34 ; passes
www IN CNAM example.com. ; flagged: no recognized record type
@ IN A ; flagged: type A has no data after it
@ IN A 999.1.2.3 ; passes - the address is never validated
The fields, in order
A record line is owner name, optional TTL, class (nearly always
IN), type, then the data. @ stands for the zone's own
name, so @ IN A is the apex. A name with no trailing dot has the zone
appended, which is why www becomes www.example.com. but
example.com written without its dot becomes
example.com.example.com. - the classic zone-file bug this scan cannot
see.
( ... ) look like lines with no
record type. Put the SOA on one line to check it here.Frequently asked questions
What does @ mean in a zone file?
The current origin - the zone's own name. In a zone for example.com,
@ IN A 93.184.216.34 sets the address of
example.com itself.
Why is my SOA record showing an error?
Almost always because it is split across several lines inside brackets. Each bracketed line on its own has no record type, so it is flagged. Join it into one line to test it, then re-wrap it for your provider.
Does a passing check mean the zone will load?
No. This is a sanity scan, not a parser. It does not verify IP addresses,
trailing dots, serial numbers or duplicate names. Load it into your DNS provider
or run named-checkzone before publishing.