Every field, and what it actually controls
dig +noall +answer wikipedia.org SOA
wikipedia.org. 3600 IN SOA ns0.wikimedia.org. hostmaster.wikimedia.org. 2026060420 43200 7200 1209600 3600| Field | Value above | What it does |
|---|---|---|
| MNAME (primary) | ns0.wikimedia.org. | The primary nameserver for the zone. Where dynamic updates and NOTIFY messages go. Not necessarily the server answering you. |
| RNAME (hostmaster) | hostmaster.wikimedia.org. | Administrator email with the @ replaced by a dot: [email protected]. |
| Serial | 2026060420 | Version number of the zone. Secondaries transfer a new copy only when this increases. |
| Refresh | 43200 | How often a secondary checks the primary for a higher serial (12 hours here). |
| Retry | 7200 | How long a secondary waits before retrying after a failed refresh (2 hours). |
| Expire | 1209600 | How long a secondary keeps serving the zone when the primary is unreachable (14 days). After this, it stops answering entirely. |
| Minimum | 3600 | Negative caching TTL — how long resolvers cache an NXDOMAIN or empty answer for this zone (RFC 2308). |
The Minimum field is the one that bites people, because its meaning changed. It originally set a default TTL for records in the zone; RFC 2308 redefined it as the negative-caching TTL. It now controls how long the *absence* of a record is remembered.
Reading the serial number
Most operators use the YYYYMMDDnn convention: 2026060420 is the twentieth revision made on 4 June 2026. It is a convention, not a rule — some providers use Unix timestamps, some use plain counters, and hosted DNS platforms often bump it in ways you cannot predict.
Read the full explanation of soa record lookup results ↓Show less ↑
What matters operationally is that the serial only ever increases (in serial-number arithmetic, RFC 1982). Two practical uses follow. First, comparing the serial across a zone's nameservers tells you instantly whether they are in sync — a secondary lagging behind means a zone transfer is failing. Second, if you make a change and the serial does not move, your provider has not published it.
What SOA tells you about a zone's health
- No SOA at the name you queried means it is not a zone apex.
www.example.comhas no SOA;example.comdoes. Query the registrable domain. - A different serial on different nameservers means replication is broken or in progress. Query each server from the NS lookup directly and compare.
- An RNAME pointing at a mailbox nobody reads is a real risk: registries, certificate authorities, and abuse desks use it. Note that the first dot is the @ —
hostmaster.example.commeans[email protected], butfirst.last.example.commeans[email protected]. - A very large Minimum (86400) means mistakes are expensive: a mistyped record checked once will be remembered as nonexistent for a day. 300–3600 is a saner range for zones under active change.
- Expire shorter than a few days risks a secondary going silent during a long primary outage — exactly when you need it most.
Common failures and fixes
- "I added the record but it is still not found." You almost certainly queried it before adding it and got a negative answer cached for the Minimum period. Confirm against the authoritative server with
dig @ns1.provider.com name TXT— if it answers there, you are simply waiting out negative cache. - Secondaries serving stale data. The serial did not increase, or the zone transfer is blocked. Check that the primary permits AXFR/IXFR from the secondary addresses and that NOTIFY reaches them.
- Zone vanished from a secondary. The Expire timer elapsed while the primary was unreachable. Restore the primary; the secondary reloads on the next successful refresh.
- SOA MNAME points at a decommissioned server. Harmless for ordinary lookups but breaks dynamic DNS updates and NOTIFY-driven replication. Update it during your next zone edit.
- Serial went backwards after a provider migration. Secondaries will refuse to transfer the "older" zone. Set the serial higher than the largest previously published value, or use the RFC 1982 wrap-around procedure.
Comparing SOA across every nameserver
This one-liner is the fastest zone-consistency check there is. It asks every authoritative server for the zone's SOA and prints the serials side by side:
# Serial from every authoritative nameserver
for ns in $(dig +short wikipedia.org NS); do
echo -n "$ns: "
dig +short @"$ns" wikipedia.org SOA | awk '{print $3}'
done
# The full SOA with all timers
dig +noall +answer wikipedia.org SOA
# Just the negative-cache TTL (last field)
dig +short wikipedia.org SOA | awk '{print $7}'For a broader view of whether a change has reached the wider internet rather than just the authoritative servers, use the DNS propagation checker or compare four major public resolvers with DNS Compare.