DNS Zone File Parser
Paste a BIND zone file and read it as a table: every record with its owner name fully qualified, its inherited TTL resolved, and its type and rdata split out. Honours $ORIGIN, $TTL and multi-line SOA blocks, flags the classic mistakes (missing SOA, a CNAME sharing a name, a target missing its trailing dot), and exports to CSV or JSON. Runs entirely in your browser — no DNS lookups.
Input
Options
Used to qualify relative names when the file has no $ORIGIN of its own. A $ORIGIN inside the file always wins.
Fallback for records with no TTL when the file has no $TTL. Accepts 3600 or shorthand like 1h, 1d.
Output
| Field | Value |
|---|---|
| No data yet | |
| Name | TTL | Class | Type | Value |
|---|---|---|---|---|
| No data yet | ||||
Owner names are fully qualified against $ORIGIN, and inherited TTLs are resolved to real values.
| Type | Count |
|---|---|
| No data yet | |
| Severity | Line | Detail |
|---|---|---|
| No data yet | ||
Absolute names, explicit TTLs, one record per line — diff this against another provider's export.
Guides
Paste a BIND zone file — an export from your registrar, a named config, a backup you inherited — and read it as a table instead of squinting at columns. Every owner name is fully qualified, every inherited TTL is resolved to a real number, and the records are split into name, TTL, class, type and value.
How to use it
- Paste the zone text into the box. The parse runs as you type; nothing is uploaded and no DNS lookup happens.
- Read the Zone table for the totals, Records for the parsed rows, and Record types for the breakdown by type.
- Check Issues before you trust the file — that is where the mistakes surface.
- Copy or download the records as CSV, the whole parse as JSON, or the Normalised zone for diffing.
What it handles that a naive parser doesn't
$ORIGIN and $TTL are applied rather than skipped. A record written as www becomes www.example.com., @ becomes the origin, and a record with no TTL of its own inherits the $TTL above it.
Multi-line records. Real SOA records are wrapped in parentheses and span five or six lines. They are folded back into one record, so the serial, refresh, retry, expire and minimum end up in one row.
Owner inheritance. A line that starts with a space or tab belongs to the previous owner name — the rule that quietly mis-files the second and third NS record in most hand-written parsers.
Every record type. The type is read positionally, so SOA, SRV, CAA, DS, TLSA, SSHFP, NAPTR and the generic TYPE65535 form all parse, not just the six common ones.
Settings
Origin — used to qualify relative names when the pasted text has no $ORIGIN of its own (common when you copy a fragment out of a larger file). A $ORIGIN inside the text always wins.
Default TTL — the fallback for records with no TTL when there is no $TTL directive. Accepts seconds (3600) or shorthand (1h, 90m, 1d, 1w).
TTL display — seconds, or human-readable (1h 30m) when you are eyeballing cache lifetimes rather than comparing numbers.
What the Issues table checks
Missing or duplicated SOA; a CNAME sharing a name with any other record (the single most common reason a zone won't load); more than one CNAME at a name; byte-identical duplicate records; a CNAME/MX/NS/SRV target written without a trailing dot, which silently appends the origin; and records left with no TTL at all.
Why is my MX target flagged?
Because mail and mail. mean different things. Without the dot, 10 mail resolves to mail.example.com. — usually what you meant, but not if you were pointing at an external mail provider. The tool shows you the name it actually resolves to so you can decide.
Does it follow $INCLUDE?
No. $INCLUDE names a file on disk, and this tool only ever sees the text you paste. Included lines are listed in Issues as skipped rather than silently dropped.
Is anything sent to a server?
No. Parsing runs entirely in your browser, and there are no DNS queries — the tool reads the file you give it and nothing else.
Related tools
To build a zone file instead of reading one, use the DNS Zone File Generator. To check what a name actually resolves to right now, use DNS Lookup, and to work out when a change will be visible everywhere, use the DNS Record TTL Expiry Calculator.