Advertisement
Live DNS, no sign-in

SRV Record Lookup
and does that target actually exist?

Enter a domain and pick a service, or paste a full _service._proto.domain name. You get the records, the host and port a client would really use, and — the part other lookup tools leave out — whether each target resolves at all.

Look up an SRV record for any domain

A domain on its own sweeps the service names most domains publish. A full name such as _imaps._tcp.gmail.com is looked up exactly as typed.

Quick Answer: what does an SRV record lookup tell you?

An SRV record lookup returns the host and port a service lives on, plus a priority and a weight that decide which host clients try first. This checker goes one step further and resolves each target, because RFC 2782 requires the target to have an address record and not be an alias — and a record whose target no longer exists looks perfectly valid in every tool that only prints it.

Advertisement
Robert Harrison, OSINT and Network Utility Expert, on DNS service records at TrustMyIP.com
Written & Verified By

Robert Harrison

OSINT & Network Utility Expert

Robert works on DNS, ports, certificates and the network utilities on this site, and writes the record-level tools.

This tool resolves every target because a survey run while building it, over 134 well-known domains and 359 real SRV records, found that 77 of those records pointed at a hostname that does not exist — and not one lookup tool on the first page of results mentions it. The matcher's arithmetic was checked against a second, independent implementation of RFC 2782's selection algorithm, and the packet reader against two DNS libraries that are not ours.

Last reviewed 27 September 2026 · Published 27 September 2026

View all articles by Robert Harrison
Advertisement

What an SRV Record Is, and What This Lookup Checks

An SRV record answers a question an A record cannot: which host and which port does this particular service live on? An A record maps a name to an address. A service record maps a service — mail submission, SIP, XMPP, Matrix federation, a game server — to a host, a port, a priority and a weight. That mechanism has a name: service discovery in DNS, and SRV is the record type that carries it. That is why an SRV record lookup is the first thing to run when a client cannot find a server it is supposed to discover automatically.

This SRV record checker does four separate things, and keeps the answers separate because they fail separately:

  1. The lookup itself. Did the question get an answer, and what was it — records, a name that does not exist, or a failure? Those three are not the same thing, and most tools show the last two identically.
  2. What is published. Every record at that name: priority, weight, port, target and TTL.
  3. Whether each target exists. Every target is resolved for A and AAAA records, and checked for being an alias.
  4. What a client would actually do. RFC 2782's selection rules applied to your records, so you see the host and port a client really picks, and the share each one gets.

The rule the whole tool turns on. RFC 2782 says of the target: "There MUST be one or more address records for this name, the name MUST NOT be an alias (in the sense of [RFC 1034] or [RFC 2181])." A record that breaks that rule is still returned by DNS. It is still printed by every lookup tool. And it still cannot be used.

SRV is one record type among many. If you want the whole picture for a domain — A, AAAA, MX, TXT, NS, SOA, CNAME and CAA — our DNS lookup tool returns all of those in one pass, and this page stays out of its way by answering only the SRV question.

If the machinery underneath is what you are after rather than one record, the guide to how DNS resolves a domain name to an address walks through the whole journey from a client's question to an answer. Every record type on this page rides on that same process.

How to Read Your SRV Lookup Result

An SRV record lookup here returns four tiles rather than one verdict, because four different things can be wrong and a single pass-or-fail hides three of them. Read them left to right: the lookup, what is published, the targets, and what a client does with it.

Advertisement
The four verdicts, what each one is answering, and what to do about it.
TileWhat it answersWhat to do
The lookupThe DNS response code. NOERROR means the question was answered; NXDOMAIN means nothing exists at that name; SERVFAIL means the question could not be answered at all.A SERVFAIL is a zone problem, not a record problem. Fix that first — nothing else on the page means anything until you do.
Published hereHow many records, and whether they use more than one priority — which is what failover looks like in DNS.One record means no failover. A second record at a higher priority number is the cheapest redundancy you can buy.
The targetsWhether each target host resolves, does not exist, exists with no address, is an alias, or is a single dot, which is a domain saying the service is deliberately not offered.Anything red here is why your service is not connecting. Fix the target before you touch anything else.
A client would useThe host and port a client following RFC 2782 picks first, with the share each target gets.If that is not the host you expected, your priorities and weights say something different from what you meant.

Underneath, each finding carries a label saying where the rule comes from: RFC 2782 for the standard itself, vendor docs for something a service's own documentation specifies, DNS layer for the response code, and TrustMyIP view for our opinion. That last label matters. An opinion dressed as a standard is how checker tools teach people the wrong thing, so ours is labelled as an opinion.

Why it also asks your own nameserver

The records above come from a recursive resolver, which is what a client would use — and which may be holding a copy that is minutes or hours old. So the tool then finds the zone's authoritative nameserver and asks it the same question directly, with recursion switched off, and compares the two answers. If they match, nothing you are reading is stale. If they differ, the resolver is holding an older copy, and the page says so rather than leaving you to guess.

That comparison is only made when the zone's own server really answered as the zone: the authoritative flag set, and a response code that is an answer rather than a failure. A server that refuses the question, or a network that quietly answers DNS on its behalf, proves nothing. A checker that treated either as a disagreement would be inventing a fault, so neither is counted.

Advertisement

Nothing here is scored. There is no grade, no percentage and no traffic light for the domain as a whole, because a domain that deliberately publishes no SRV records is not worse than one that does. The tool reports states, not marks.

The SRV Record Format: Get the Name Right First

More failed lookups come from the name than from the record. RFC 2782 defines the owner name as _Service._Proto.Name, and says the underscores exist "to avoid collisions with DNS labels that occur in nature". So the SRV record format for secure IMAP on example.com is _imaps._tcp.example.com, and the record itself carries four values:

# _Service._Proto.Name TTL class SRV priority weight port target

_imaps._tcp.example.com. 3600 IN SRV 10 5 993 mail.example.com.

# and the three ways to ask for it yourself

dig SRV _imaps._tcp.example.com +short

nslookup -type=srv _imaps._tcp.example.com

Resolve-DnsName _imaps._tcp.example.com -Type SRV

One detail worth knowing before you copy a name off this page: a DNS label may contain any octet, not only letters and digits. RFC 4343 puts it plainly — "the individual octets of which DNS names consist are not limited to valid ASCII character codes. They are 8-bit bytes, and all values are allowed." So this tool prints every name in the escaped form dig and a zone file use. An octet that is not a printable character appears as a back-slash and three digits — \032 for a space, say. The characters that are special in a master file are back-slashed too: a quote, a semicolon, an @, a dollar sign, brackets, and a dot inside a label. A name copied from here pastes straight into a zone file or into dig without changing meaning.

Three things bite people here:

  • _tcp and _udp are not interchangeable. A record published under one is completely invisible to a client asking under the other. SIP genuinely uses both, and they mean different transports.
  • Some services add labels in the middle. Active Directory does not use _ldap._tcp.example.com but _ldap._tcp.dc._msdcs.example.com to find a domain controller, which is why a domain that looks empty from a plain lookup is full of records when you ask the right name. The service list in the tool builds these for you.
  • Case and the trailing dot do not matter; the spelling does. DNS matches names without regard to case, so _IMAPS._TCP is the same name. An internationalised domain is a different matter: it has to be in its punycode form before you build the record name, because that is the only form DNS carries.

Priority and Weight: Which Target Clients Really Use

These two fields are the reason SRV exists, and they do different jobs. Priority is failover. RFC 2782: a client "MUST attempt to contact the target host with the lowest-numbered priority it can reach". Lower number first; higher numbers are the standby that only gets traffic when everything above it is unreachable. Weight is load sharing, and it only counts between records that share a priority. The RFC's words: "Larger weights SHOULD be given a proportionately higher probability of being selected."

That is the same job a load balancer does, one layer up — the guide to virtual IPs and load balancing covers the server-side version. The difference is that with SRV the client does the balancing, which is cheap and has one sharp edge worth knowing about.

Small weights do not split traffic the way the numbers suggest

RFC 2782 does not just say "proportionately". It gives an algorithm: order the records with the weight-0 ones first, add the weights up, then "choose a uniform random number between 0 and the sum computed (inclusive)" and take the first record whose running total reaches it. That inclusive zero has a consequence nobody mentions. Running that algorithm 200,000 times per case while building this tool gave these results:

The standard's own algorithm, run 200,000 times per case. "Intended" is weight divided by total weight.
WeightsIntended splitWhat the algorithm gives
1 and 150% / 50%66.7% / 33.3%
1 and 233% / 67%50% / 50%
50 and 5050% / 50%50.5% / 49.5%
70 and 3070% / 30%70.3% / 29.7%
0 and 900% / 100%1.1% / 98.9%

With weights in the tens or hundreds the difference is a fraction of a percent and you can ignore it. With weights of 1 and 2 the split is not 1:2 at all. Implementations also differ in how they read that sentence — some use a floating-point random number, some exclude the zero — so small weights make the outcome depend on the client rather than on your intent.

Two practical rules. Use weights that add up to something meaningful — 50 and 50, or 70 and 30 — not 1 and 1. And never use weight 0 as "the backup": the RFC says a weight-0 record beside non-zero ones should have "a very small chance of being selected", which measured out at about 1%. A standby belongs on a higher priority number, where it gets no traffic at all until the first tier is unreachable.

Why a Valid SRV Record Still Does Not Work

This is the question behind most searches for a way to check an SRV record, and the honest answer is that the record is usually fine. What is broken is something the record points at. In order of how often it happens:

1. The target does not exist any more

The record is published, the syntax is perfect, and the hostname in it returns NXDOMAIN. Nothing can connect, and nothing looks wrong. On 26 September 2026, while building this tool, we asked 134 well-known domains for 44 service names each. Of the 359 SRV records that came back, 77 pointed at a hostname that does not resolve at all.

One cause accounts for a large share of them. Sixteen of those domains still publish _sip._tls pointing at sipdir.online.lync.com. That was the client-discovery host for Skype for Business Online. Microsoft's own lifecycle page gives its retirement date as 31 July 2021, and adds: "After that time, the service will no longer be accessible." Five years later the records are still there. And the near-identical sipfed.online.lync.com — three letters away — is current — Microsoft still publishes it for Teams federation. Which is exactly why this tool resolves the target instead of guessing from the name.

2. The target resolves, but has no address

The name exists in the zone and has no A and no AAAA record. Often it is a host that was decommissioned and left in DNS, or a name that only exists on an internal view of the zone, so it works from the office and not from anywhere else.

3. The target is a CNAME

RFC 2782 forbids it, most clients do it anyway, and that is the trap: it works until something strict refuses to follow the alias. Point the record at a name with its own address record.

4. The port is wrong, or zero

Choosing the port is the whole point of an SRV record, so an unusual port is not an error — but a port the service is not listening on is. Whether anything answers there is a different question, and our port scanner is the tool for it: this page checks DNS, not the socket.

5. The lookup failed rather than answered

A SERVFAIL is not "no record". It usually means the zone is broken or its DNSSEC signatures do not validate, in which case validating resolvers refuse to answer anything about the domain — our DNSSEC checker shows where that chain breaks.

And one thing that is not a fault at all. RFC 2782 says it in one sentence: "A Target of '.' means that the service is decidedly not available at this domain." Gmail publishes exactly that for _imap._tcp and _pop3._tcp, while publishing working records for _imaps._tcp and _submission._tcp. It is telling clients not to try the unencrypted versions. A checker that paints that red is wrong, and this one says so in words.

What the Record Should Look Like, Service by Service

Every name below is taken from the document that defines it, and the tool's service list builds them for you. Where a name comes from a vendor rather than a standard, that is said; where no first-party source exists, that is said too.

Service names and their usual ports, with the source each one comes from.
ServiceNameUsual portSource
Mail submission_submission._tcp · _submissions._tcp587 · 465RFC 6186 · RFC 8314
IMAP and POP_imaps._tcp · _pop3s._tcp993 · 995RFC 6186
SIP_sips._tcp · _sip._tcp · _sip._udp5061 · 5060RFC 3263
XMPP_xmpp-client._tcp · _xmpp-server._tcp5222 · 5269RFC 6120
CalDAV and CardDAV_caldavs._tcp · _carddavs._tcp443RFC 6764
Microsoft 365 Autodiscover_autodiscover._tcp443Microsoft docs
Teams SIP federation_sipfederationtls._tcp5061Microsoft docs
Active Directory (domain controller locator)_ldap._tcp.dc._msdcs · _kerberos._tcp389 · 88Microsoft docs
Matrix federation_matrix-fed._tcp (current)8448Matrix spec v1.16
MongoDB seed list_mongodb._tcp27017MongoDB docs
TURN and STUN_turns._tcp · _stun._udp5349 · 3478RFC 5928 · RFC 8489
Minecraft: Java Edition_minecraft._tcp25565Convention, not a specification

Three notes worth having before you publish one. The Matrix specification marks _matrix._tcp deprecated in favour of _matrix-fed._tcp, and says administrators are "encouraged to use .well-known over any form of SRV records". A Minecraft SRV record is the one entry here with no first-party specification we could find — it is a convention documented by hosting providers, and it works, but it is not a standard. And SIP is the biggest real-world user of SRV by a wide margin — 152 of the 359 records in our survey were SIP-family — which is why setting up voice, as our guide to how VoIP works describes, nearly always involves publishing one. RFC 3263 also expects a NAPTR lookup before the SRV lookup when the URI names no transport.

The mail entries are part of a bigger picture: autoconfiguration records tell a client where to connect, while SPF, DKIM, DMARC and MTA-STS decide whether your mail is accepted. Our email health check grades that side of it in one pass.

What This SRV Record Test Cannot Tell You

An SRV record lookup proves that a client can find your server. It does not prove much more than that, and these four limits are stated plainly, because a checker that hides them is how people end up trusting the wrong answer.

It cannot tell you the service is running. Whether anything accepts a connection on the port the record names is a different layer, and a different tool. A record can be perfect while the daemon behind it is stopped.

It sees the public internet only. Plenty of SRV targets resolve inside a company network and nowhere else. This page will report such a target as having no address, which is true from outside and misleading from inside — if that is your situation, the record is doing exactly what you designed it to do.

It cannot tell you what one specific client does. RFC 3263 has SIP clients try NAPTR first. The Matrix specification puts a .well-known lookup ahead of the SRV record. Microsoft states that a missing Autodiscover record "should only be considered an error if you intended to configure your environment" to use SRV discovery at all. This tool answers the DNS question; the client's order of preference is its own.

It is one view at one moment. Records are cached along the way, so a change you made minutes ago may not be visible everywhere yet. This page asks the zone's own nameserver as well as a resolver and tells you when the two disagree — but how long a stale copy lasts anywhere else is a TTL question, and our DNS propagation checker is built for it.

SRV Record Questions People Actually Ask

What is an SRV record?

An SRV record is a DNS record that says where a particular service lives rather than where a website lives. Where an A record gives one address for a name, an SRV record gives a host and a port, plus a priority and a weight so clients know which host to try first and how to share load between equals. Mail clients, SIP phones, XMPP servers, Matrix servers, Microsoft 365 and Minecraft all find their servers this way.

What format does an SRV record name take?

The owner name has three parts written together: _Service._Proto.Name — for example _imaps._tcp.example.com. Those underscores belong to the name. RFC 2782 kept them deliberately, "to avoid collisions with DNS labels that occur in nature". The protocol label is almost always _tcp or _udp, and it is not interchangeable: a record published under _tcp is invisible to a client looking under _udp.

What do priority and weight mean in an SRV record?

Priority is failover. RFC 2782 obliges a client to try the lowest-numbered priority it can reach, so the smallest number goes first and the bigger numbers wait until everything above them is unreachable. Weight only matters between records that share a priority, splitting traffic in proportion. Set weights in the tens or hundreds: with very small weights the standard's own arithmetic does not give the split the numbers suggest.

Does an SRV target need an A or AAAA record?

Yes. RFC 2782 is explicit: "There MUST be one or more address records for this name." A target with no address is not a working record — the client resolves the target and gets nothing, so it cannot connect. This is the single most common fault this tool finds, and it is invisible in every lookup tool that prints the record without resolving the target.

Can an SRV record point to a CNAME?

It should not, and the standard is blunt about it: the target "MUST NOT be an alias (in the sense of [RFC 1034] or [RFC 2181])". In practice most clients follow the CNAME and the service works, which is exactly why this stays unfixed for years — until something strict does not follow it, or a caching layer resolves the alias differently. Point the record at a name that carries its own A or AAAA record.

Why is my service not working when the SRV record exists?

Work through it in this order. Is the name exactly right, including _tcp versus _udp? Does the target resolve, and is it an alias? Is the port the one the service actually listens on? Is the target reachable on that port, which is a socket test rather than a DNS one? And has the change had time to leave caches? This tool answers the first three directly.

Tools that go with this one

An SRV record names a host and a port. These check the rest of the chain it depends on.

Now check that something is listening on that port

This page proves a client can find your server. The next question is whether the host answers on the port the record names — and what else that domain publishes in DNS.

Last updated 27 September 2026 · Record rules from RFC 2782; each service name comes from the RFC or vendor page named beside it, and lookups are sent from our server over UDP and TCP port 53.