What is an SOA record, and what do its five timers actually control?
The Start of Authority (SOA) record is the one record every DNS zone has exactly one of, naming the zone's primary name server and admin contact alongside five numeric fields — serial, refresh, retry, expire and minimum — that control how secondary name servers stay in sync and how long a "this name doesn't exist" answer gets cached. Most of it is invisible until a stale serial number leaves a secondary answering with outdated records, or a forgotten expire timer takes a whole zone offline.
By AdminKit team, Netbase JSC · Updated November 1, 2026
The one record every zone has exactly one of
Unlike A records or MX records, a zone can’t have zero or several SOA records — RFC 1035 requires exactly one per zone, marking, in the RFC’s own words, “the start of a zone of authority.” Query any domain’s SOA record with AdminKit’s DNS lookup tool (SOA is one of the record types it supports, alongside A, AAAA, MX, TXT, NS, CAA, PTR and CNAME) and you’ll get back two names and five numbers:
example.com. SOA ns1.example.com. admin.example.com. (
2026110100 ; serial
7200 ; refresh
3600 ; retry
1209600 ; expire
300 ) ; minimum
The two names are the primary (authoritative source of truth) name server and an email address for the zone’s administrator, written with the @ replaced by a . (so admin.example.com. means [email protected]). The five numbers are what this guide is actually about — see how to read a DNS lookup result for how SOA fits alongside the other record types AdminKit’s tool returns.
The five fields, one at a time
RFC 1035 §3.3.13 defines each field as a plain 32-bit value, measured in seconds except for serial:
- Serial — “the unsigned 32 bit version number of the original copy of the zone.” A secondary name server compares this against its own stored copy before pulling a full zone transfer; a higher serial means the zone changed. Because the field can wrap around at its maximum value, RFC 1982 defines dedicated serial number arithmetic so comparisons stay correct even across that wraparound — plain numeric comparison alone would eventually misjudge a wrapped, smaller-looking serial as older than it is.
- Refresh — “a 32 bit time interval before the zone should be refreshed.” This is how often a secondary checks the primary’s serial under normal, working conditions.
- Retry — “a 32 bit time interval that should elapse before a failed refresh should be retried.” This only kicks in once a refresh attempt has already failed to reach the primary, and is typically shorter than refresh so a secondary recovers quickly once the primary is reachable again.
- Expire — “the upper limit on the time interval that can elapse before the zone is no longer authoritative.” If a secondary can’t reach the primary for longer than expire, it stops answering queries for the zone altogether, on the assumption that its data is too stale to trust.
- Minimum — originally “the minimum TTL field that should be exported with any RR from this zone,” but RFC 2308 §4 redefined this. See the next section — this is the field most legacy documentation still describes incorrectly.
In practice, a primary doesn’t have to wait for a secondary’s own refresh timer to notice a change: DNS NOTIFY lets the primary proactively tell every secondary right after an update, which is what triggers most real-world zone transfers rather than secondaries polling on a fixed schedule — refresh is the fallback for when NOTIFY doesn’t arrive, not the primary sync mechanism on a well-configured zone.
Why “minimum” doesn’t mean “minimum TTL” anymore
RFC 1035 originally overloaded the minimum field with three purposes, including acting as a floor under every record’s TTL in the zone. RFC 2308 formally narrowed that down two decades later: “the new defined meaning of the SOA minimum field” is the negative caching TTL — how long a resolver is allowed to cache a “this name doesn’t exist” (NXDOMAIN) or “no data of this type” answer before it’s required to ask again. It no longer constrains the TTL of records that do exist in the zone; each record’s own TTL governs that, independent of what minimum says. A domain with a long minimum value and a typo in a newly-added hostname will have that typo’s “doesn’t exist” answer cached for longer than expected — a subtler version of the same caching delay covered in DNS propagation and TTL explained.
When a wrong SOA setting actually causes a problem
Most SOA misconfigurations are invisible until something goes wrong in a specific, narrow way:
- A serial that didn’t actually increment after a zone edit means secondaries never notice the change happened, and keep answering with the old records indefinitely — the single most common SOA-related support issue.
- An expire set too short relative to how often the primary has brief outages can cause a secondary to stop answering for a zone that’s actually fine, just temporarily unreachable from that one secondary.
- A minimum set very high extends how long a genuine typo or a not-yet-propagated new record’s “doesn’t exist” answer sticks around in resolver caches, which looks identical to a propagation delay from the outside — see DNS propagation and TTL explained for how to tell the two apart.
Most managed DNS providers compute and update the serial automatically and set sane defaults for the other four fields, so this mostly matters if you run your own authoritative name server, or if a zone transfer between your own primary and secondaries is behaving unexpectedly. Either way, AdminKit’s DNS lookup tool is the fastest way to see what your zone’s SOA record currently publishes, without needing shell access to the name server itself.
This guide is general information, not a security audit of your specific network — see our disclaimer for what AdminKit's guidance does and does not commit to.
Frequently asked questions
What is an SOA record for, in one sentence?
It identifies the zone's primary name server and administrator contact, and carries five timing fields that tell secondary name servers how often to check for updates, how long to keep answering if the primary goes unreachable, and how long a negative ("doesn't exist") answer should be cached. RFC 1035 §3.3.13 defines it as marking "the start of a zone of authority."
Why does the serial number matter, and why isn't it just incremented by 1 each time?
A secondary name server compares its own copy of the serial against the primary's before pulling a zone transfer — a higher number means something changed. Many operators use a date-based format like YYYYMMDDnn (e.g. 2026110100) instead of a plain counter, so the serial is also a human-readable "last changed" timestamp. Because the field wraps at its 32-bit maximum, RFC 1982 defines serial number arithmetic specifically so a secondary compares serials correctly even across that wraparound, rather than treating a wrapped, smaller-looking number as older.
What's the difference between refresh and retry?
Refresh (RFC 1035 §3.3.13) is how often a secondary checks the primary's serial under normal conditions — "a 32 bit time interval before the zone should be refreshed." Retry is how soon it tries again specifically after a refresh attempt failed — "a 32 bit time interval that should elapse before a failed refresh should be retried" — so retry only matters once refresh has already failed to reach the primary, and is typically set shorter than refresh.
Does the minimum field still mean "minimum TTL for every record in the zone"?
No, and this is the most commonly misread field. RFC 1035 originally defined minimum as a floor applied to every record's TTL in the zone, but RFC 2308 §4 formally narrowed that: "the new defined meaning of the SOA minimum field" is the TTL used for negative (NXDOMAIN or no-data) responses — how long a resolver caches "this name doesn't exist" before asking again. Any documentation still describing it as a blanket minimum TTL is describing the pre-1997 definition, not current practice.
Can I edit my own domain's SOA record?
Only indirectly. Your DNS provider or registrar's control panel manages the primary name server and admin-contact fields, and usually recalculates the serial automatically on every change — manual edits to the raw record are uncommon outside of self-hosted authoritative DNS software like BIND or PowerDNS, where an operator edits the zone file directly.
Want AdminKit to watch this for you?
Free checks tell you the state today. Protective DNS and monitoring tell you when it changes.
Talk to an expert
Huy Nguyen (David), Founder & CEO, Netbase JSC
Ask whether this fix applies to your setup, or get a second pair of eyes on your DNS and mail records.