Web Tools DocGuides

How to use DNS Zone Record Generator

Get the best out of DNS Zone Record Generator: every option explained, a worked example, and what to check when the output is not what you expected.

Updated August 1, 2026

What it does

Format zone files (A, CNAME, MX, TXT) with customizable TTL values instantly. It runs entirely in your browser — your input never leaves your device.

Options

Every setting this tool exposes, straight from the code that validates it.

OptionTypeDefaultWhat it does
domaintextexample.comZone the records belong to. Defaults to example.com.
formatone of: BIND, JSONBINDThe output format pattern. Defaults to BIND.
ttltext3600Defaults to 3600.
includeSoatrue / falsetrueIncludes the SOA record that starts an authoritative zone file. Defaults to true.
nsServertextns1.example.com.Primary nameserver named in the SOA record. Defaults to ns1.example.com..
adminEmailtextadmin.example.com.Zone administrator's address, written in SOA format. Defaults to admin.example.com..
serialtext2026051701Zone serial number. Increase it whenever the zone changes so secondaries reload. Defaults to 2026051701.
recordslist of object[{"name":"@","type":"A","value":"192.168.1.10","ttl":"3600"},{"name":"www","type":"CNAME","value":"example.com","ttl":"3600"},{"name":"mail","type":"A","value":"192.168.1.20","ttl":"3600"},{"name":"@","type":"MX","value":"mail.example.com.","ttl":"3600","priority":"10"}]Defaults to [{"name":"@","type":"A","value":"192.168.1.10","ttl":"3600"},{"name":"www","type":"CNAME","value":"example.com","ttl":"3600"},{"name":"mail","type":"A","value":"192.168.1.20","ttl":"3600"},{"name":"@","type":"MX","value":"mail.example.com.","ttl":"3600","priority":"10"}].

Worked example

Run these settings on the tool page:

  • domain: example.com
  • format: BIND
  • ttl: 3600
  • includeSoa: true
  • nsServer: ns1.example.com.
  • adminEmail: admin.example.com.
  • serial: 2026051701
  • records: [{"name":"@","type":"A","value":"192.168.1.10","ttl":"3600"},{"name":"www","type":"CNAME","value":"example.com","ttl":"3600"},{"name":"mail","type":"A","value":"192.168.1.20","ttl":"3600"},{"name":"@","type":"MX","value":"mail.example.com.","ttl":"3600","priority":"10"}]

You get:

$ORIGIN example.com.
$TTL 3600

@   IN  SOA ns1.example.com. admin.example.com. (
            2026051701 ; serial
            7200       ; refresh (2 hours)
            3600       ; retry (1 hour)
            1209600    ; expire (2 weeks)
            3600       ; minimum (1 hour)
            )

@   IN  NS  ns1.example.com.

@            IN  3600     A        192.168.1.10
www          IN  3600     CNAME    example.com
mail         IN  3600     A        192.168.1.20
@            IN  3600     MX       10 mail.example.com.

Getting the result you want

Most of the control here is in the options above. If the output is not what you expected, the setting to check first is domain and format — those change the shape of the output rather than the input it accepts.

Troubleshooting

  • It is slow on very large input. Everything runs in your browser, so speed depends on your device. Very large inputs are best split up, or run through the API where the work happens on our servers.

Automating it

The same logic is available as a REST endpoint, so you can run it from a script, a CI job or your own app.

Bash
curl "https://api.toolsxpo.com/v1/dns-record-generator" \
  -H "Authorization: Bearer $TOOLSXPO_KEY"

It costs 1 credit per successful call. See the full endpoint reference, or try it in the playground.

Tools covered here

DNS Zone Record Generator

Networking

networking

Related