Zero Signup ToolsFree browser tools

Developer Tools

NAPTR Record Generator

Build and parse DNS NAPTR records in your browser. Set order, preference, flags, service, regexp, and replacement, then copy Cloudflare and BIND snippets.

NAPTR record generator and parser

A NAPTR record rewrites a name into the next thing to look up. The data is order preference "flags" "service" "regexp" replacement. It powers SIP server selection and ENUM (E.164 to URI).

Start from a use case

Owner name and timing

The domain, or an e164.arpa name for ENUM.

Optional. 3600 = 1 hour.

Owner name (FQDN)

example.com.

Ordering

0 to 65535, lowest first.

Tiebreak within an order.

What the client does next.

Service and result

SIP+D2U, SIPS+D2T, E2U+sip, E2U+email:mailto, and similar.

Substitution that builds the output URI. Leave empty for S and A records.

The next name to look up. Use a single dot when the regexp field is set.

Output

Your NAPTR record

Record data (order preference flags service regexp replacement)

10 100 "S" "SIP+D2U" "" _sip._udp.example.com.

Full zone-file line

example.com. 3600 IN NAPTR 10 100 "S" "SIP+D2U" "" _sip._udp.example.com.
For example.com, this record advertises SIP+D2U. It is processed at order 10 and, among records sharing that order, preference 100 (lower order and lower preference are tried first). With flag S, the client queries the replacement name for an SRV record next. The next name to look up is _sip._udp.example.com.

DNS provider snippets

Publish the record

Copy the format your DNS host uses. Replace ZONE_ID, ZONE_NAME, RG_NAME, and any example names with your own values.

BIND zone file

example.com. 3600 IN NAPTR 10 100 "S" "SIP+D2U" "" _sip._udp.example.com.

Cloudflare DNS

Cloudflare DNS (Add record, type NAPTR)
  Name:         example.com
  TTL:          Auto
  Order:        10
  Preference:   100
  Flags:        S
  Service:      SIP+D2U
  Regex:        (leave empty)
  Replacement:  _sip._udp.example.com.

AWS Route 53 (CLI)

aws route53 change-resource-record-sets \
  --hosted-zone-id ZONE_ID \
  --change-batch '{
    "Changes": [{
      "Action": "UPSERT",
      "ResourceRecordSet": {
        "Name": "example.com",
        "Type": "NAPTR",
        "TTL": 3600,
        "ResourceRecords": [{ "Value": "10 100 \"S\" \"SIP+D2U\" \"\" _sip._udp.example.com." }]
      }
    }]
  }'

Google Cloud DNS (gcloud)

gcloud dns record-sets create example.com \
  --zone=ZONE_NAME \
  --type=NAPTR \
  --ttl=3600 \
  --rrdatas='10 100 "S" "SIP+D2U" "" _sip._udp.example.com.'

Azure DNS (CLI)

az network dns record-set naptr add-record \
  --resource-group RG_NAME \
  --zone-name example.com \
  --record-set-name example.com \
  --order 10 \
  --preference 100 \
  --flags "S" \
  --services "SIP+D2U" \
  --regexp "" \
  --replacement "_sip._udp.example.com."

How the six fields work

  • order and preference sort the records: the client processes the lowest order first, then the lowest preference within that order.
  • flags say what to do next. S means look up an SRV, A means resolve a host, U means this is terminal and the regexp builds a URI, and an empty flag means the replacement is the next NAPTR owner.
  • service names the application, such as SIP+D2U for SIP over UDP or E2U+sip for an ENUM-to-SIP mapping.
  • regexp and replacement are mutually exclusive. Use the regexp to build a URI (and set the replacement to a single dot), or use the replacement to name the next record (and leave the regexp empty).

Common mistakes this tool catches

  • Setting both a regexp and a replacement. Only one may be used; when the regexp is present the replacement must be ..
  • Using a flag letter other than S, A, U, P, or empty.
  • Forgetting to double-quote the flags, service, and regexp fields, which breaks the record in a zone file.
  • Writing a regexp without the !ere!replacement! delimiter structure, so the substitution never runs.

Privacy

Records are built and validated entirely in your browser with plain string parsing. No DNS lookups are performed and the names, numbers, and URIs you enter are never uploaded, logged, or stored.

How to use

  1. Keep the Build record tab selected and click a use case like SIP server (UDP) or ENUM to SIP URI to seed the six fields, then edit the owner name and TTL.
  2. Set order and preference (lowest is processed first) and pick a flag: S or A delegate to a name, U is terminal and builds a URI from the regexp, and empty chains to another NAPTR owner.
  3. Fill the service token (SIP+D2U, E2U+sip, and so on). For a terminal U record add a regexp like !^.*$!sip:info@example.com! and set the replacement to a single dot; for S and A records leave the regexp empty and set the replacement name.
  4. Copy the record data, the full zone-file line, or a provider snippet for BIND, Cloudflare, Route 53, Google Cloud DNS, or Azure, and watch the validation panel for any errors or warnings.
  5. Switch to Parse and explain to paste an existing NAPTR record and confirm the order, preference, flags, service, regexp, and replacement are all correct.

About this tool

NAPTR Record Generator is a two-mode browser tool for the DNS Naming Authority Pointer resource record defined in RFC 2915 and refined by RFC 3403 as part of the Dynamic Delegation Discovery System (DDDS). NAPTR is the record that rewrites a name into the next thing a client should look up, and it powers two jobs people actually need: SIP and VoIP server selection (RFC 3263), where a domain advertises which transports it supports and hands the client off to the right SRV record, and ENUM (RFC 6116), where an E.164 telephone number written under e164.arpa is mapped to a sip:, mailto:, or http: URI. The RDATA is six fields in a fixed order: order, preference, flags, service, regexp, and replacement, with the flags, service, and regexp fields written as double-quoted character-strings. Those last three quoted fields, and the rule that the regexp and replacement fields are mutually exclusive, are where people get stuck, so this tool makes each part a guided choice. Order and preference sort the candidate records: the client processes the lowest order first and, within one order, the lowest preference first. Flags decide what happens next and must be a single letter or empty: S means the replacement names an SRV record to query, A means the replacement is a host to resolve with A or AAAA, U marks a terminal record whose regexp rewrites the input into the final URI, P marks a terminal protocol-specific record, and an empty flag means the replacement is the next NAPTR owner in a longer DDDS chain. Service names the application and protocol, such as SIP+D2U for SIP over UDP, SIPS+D2T for secure SIP over TLS, or E2U+sip and E2U+email:mailto for ENUM. The regexp field is a substitution of the form delimiter, regular expression, delimiter, replacement, delimiter, flags (for example !^.*$!sip:info@example.com!) that produces the output URI, and when it is used the replacement field must be a single dot. The replacement field, used by S, A, and non-terminal records, is the next domain name to look up. The Build tab lets you start from a use case (SIP over UDP, TCP, or TLS, ENUM to a SIP URI, to email, or to a web page, a generic S delegation, or an A delegation), fills the six fields with sensible defaults, and emits the record data in canonical quoted form, a full zone-file line, a plain-English summary of how the record will be processed, and ready-to-paste snippets for BIND, the Cloudflare DNS UI, the AWS Route 53 CLI, the Google Cloud DNS gcloud CLI, and the Azure DNS CLI with the quotes escaped so the value does not break. Live validation flags the mistakes the wire format quietly tolerates: a flag letter that is not S, A, U, or P; both a regexp and a replacement set at once; a replacement that is not a single dot when the regexp is in use; a U record with no regexp to build its URI; an S or A record with no replacement to delegate to; a regexp that is missing its delimiter structure; spaces inside the service token; and a replacement pointed at an IP address instead of a name. The Parse tab takes any NAPTR value, correctly tokenizes the quoted strings (so spaces inside a service or regexp do not split it), accepts both bare records and full zone-file lines, validates every field, surfaces the same conflicts, and explains the effective behavior in a single summary panel. A reference grid contrasts the rules that confuse most operators, so the page doubles as a study sheet. Useful for setting up SIP trunking and VoIP routing, publishing or debugging ENUM mappings, fixing an inherited NAPTR record before it breaks call routing, and reviewing the NAPTR records of any domain whose value you can paste in. Everything runs locally in your browser. The names, numbers, and URIs you enter never leave your device, and no DNS queries are made.

Free to use. Works in your browser. No signup, no login.

Related tools

You may also like

All tools
All toolsDeveloper Tools