Email for your domain, with DNS setup handled. PostScale

    nslookup tutorial — DNS queries on Windows, macOS, and Linux

    5 min readBeginner

    Quick answer

    nslookup is the universally-available DNS lookup tool — built into Windows, macOS, and Linux without extra packages. Less powerful than dig (no DNSSEC inspection, sparser output, awkward batch usage), but the right pick when you need a quick lookup on a machine where you can't install anything. On Windows, PowerShell's Resolve-DnsName is a strict upgrade and worth knowing alongside.

    What you'll learn
    • Run basic and record-type-specific DNS queries with nslookup on any platform
    • Switch nameservers, set query options, and use interactive mode
    • Recognise nslookup's limitations and know when to switch to dig or PowerShell
    • Use Windows PowerShell's Resolve-DnsName as a richer alternative

    nslookup is the universally-available DNS lookup tool — pre-installed on Windows, macOS, and Linux without extra packages. It's less powerful than dig, but it's the right pick when you need a quick check on a system where you can't install anything. This guide covers nslookup itself plus the modern PowerShell equivalent on Windows.

    When to reach for nslookup

    • You're on a fresh Windows machine without dig installed, and you need a quick lookup.
    • You're on a stripped-down container and only nslookup is on the path.
    • You just need a one-off "is this name resolving?" check — nslookup is fine.

    For anything more — DNSSEC validation, batch queries, scripting, parsing output — switch to dig or PowerShell.

    Basic syntax

    nslookup <name> [resolver]

    The [resolver] is optional; without it, nslookup uses your system's default resolver.

    Example 1 — Simple lookup

    nslookup www.example.com

    Output:

    Server:         8.8.8.8
    Address:        8.8.8.8#53
     
    Non-authoritative answer:
    Name:   www.example.com
    Address: 93.184.216.34

    The Server: and Address: lines tell you which resolver answered. Non-authoritative answer: means the response came from a cache, not directly from the authoritative server.

    Example 2 — Query a specific resolver

    nslookup www.example.com 1.1.1.1
    nslookup www.example.com ns1.dnscale.eu

    Pass the resolver as the second argument. Querying the authoritative nameserver directly gives you the ground truth — what the zone actually serves, bypassing any caches.

    Example 3 — Specific record type

    nslookup -type=MX example.com
    nslookup -type=TXT example.com
    nslookup -type=AAAA www.example.com
    nslookup -type=NS example.com
    nslookup -type=SOA example.com

    -type= (or shorter, -q=) selects the record type. Without it, nslookup defaults to A.

    Example 4 — Reverse DNS

    nslookup 192.0.2.1
    nslookup 2001:db8::1

    Pass an IP address; nslookup recognises it and queries the PTR record automatically.

    Interactive mode

    nslookup has an interactive mode you enter by running it with no arguments:

    nslookup
    > www.example.com
    > set type=MX
    > example.com
    > server 1.1.1.1
    > www.example.com
    > exit

    Useful for running a sequence of queries without re-typing options. Mostly a Windows convention; less common on Linux/macOS where shell history is more flexible.

    Common options

    OptionEffect
    -type=<type>Set query type (A, MX, TXT, NS, etc.)
    -port=<port>Use non-default port (rarely needed)
    -timeout=<sec>Set per-query timeout
    -retry=<n>Retry count
    -debugVerbose protocol-level output (varies by platform)

    Example with multiple options:

    nslookup -type=MX -timeout=2 example.com 1.1.1.1

    Worked examples

    Example 5 — Verify a record was published

    nslookup www.example.com ns1.dnscale.eu

    Querying authoritative directly. If this returns the expected IP, the record is correctly published; any failure to resolve elsewhere is a caching or local-resolver issue.

    Example 6 — Compare two resolvers

    nslookup www.example.com 8.8.8.8
    nslookup www.example.com 1.1.1.1

    If they disagree, propagation is in progress (or one resolver is misbehaving). See DNS propagation.

    Example 7 — MX records and email troubleshooting

    nslookup -type=MX example.com

    Output lists each MX record with priority. Lower priority = preferred mail server. Use this to confirm mail-routing configuration.

    Example 8 — TXT records (SPF, DKIM, DMARC)

    nslookup -type=TXT example.com
    nslookup -type=TXT default._domainkey.example.com         # DKIM with selector "default"
    nslookup -type=TXT _dmarc.example.com                     # DMARC

    Example 9 — NS delegation

    nslookup -type=NS example.com

    Lists the authoritative nameservers. Match against the registrar's NS configuration; mismatches signal delegation problems.

    Example 10 — Diagnose NXDOMAIN

    nslookup wwww.example.com
    # *** Can't find wwww.example.com: Non-existent domain

    The "Non-existent domain" error is nslookup's NXDOMAIN message. Causes: typo, deleted record, propagation lag, DNSSEC failure. See NXDOMAIN explained.

    Where nslookup falls short

    Compared to dig:

    • No DNSSEC inspection. No equivalent of dig +cd to bypass validation, no easy way to inspect RRSIG or DNSKEY records.
    • No +trace equivalent. Can't walk the delegation hierarchy from root.
    • No AXFR. nslookup doesn't support zone transfers cleanly.
    • Output is harder to script against. No equivalent of dig +short for clean machine-parseable output.
    • Inconsistent across platforms. Windows nslookup and Linux nslookup have small but annoying differences in flags and output format.

    For production diagnostic work, prefer dig.

    Windows: Resolve-DnsName (PowerShell)

    If you're on Windows and don't want to install dig, PowerShell ships Resolve-DnsName — a native cmdlet that's strictly better than nslookup. Returns structured PowerShell objects.

    Example 11 — Basic Resolve-DnsName

    Resolve-DnsName www.example.com

    Output is a table with Name, Type, TTL, Section, IPAddress.

    Example 12 — Specific record type

    Resolve-DnsName www.example.com -Type AAAA
    Resolve-DnsName example.com -Type MX
    Resolve-DnsName example.com -Type TXT

    Example 13 — Specific resolver

    Resolve-DnsName www.example.com -Server ns1.dnscale.eu
    Resolve-DnsName www.example.com -Server 1.1.1.1

    Example 14 — Use in pipelines

    Resolve-DnsName example.com -Type MX | Sort-Object Preference | Format-Table
    Resolve-DnsName example.com -Type TXT | Where-Object { $_.Strings -match "v=spf1" }

    PowerShell's structured output makes filtering and sorting trivial — much harder with text-only nslookup.

    Example 15 — DNSSEC validation

    Resolve-DnsName www.example.com -DnssecOk -DnssecCd

    -DnssecOk requests DNSSEC records; -DnssecCd is the equivalent of dig's +cd. Useful for diagnosing DNSSEC-related failures on Windows.

    Example 16 — Reverse DNS

    Resolve-DnsName 192.0.2.1

    PowerShell automatically detects IP-format input and runs reverse DNS. Same for IPv6.

    Example 17 — Batch queries

    "www.example.com", "mail.example.com", "api.example.com" | ForEach-Object {
      Resolve-DnsName $_ | Select-Object Name, IPAddress
    }

    Pipeline-friendly batch lookup — much cleaner than nslookup's interactive mode.

    Comparison: nslookup vs dig vs Resolve-DnsName

    Scroll horizontally to see all columns →

    CapabilitynslookupdigResolve-DnsName
    Pre-installed on Windows✓—✓
    Pre-installed on macOS✓✓—
    Pre-installed on most Linux✓✓—
    Specific record type✓✓✓
    Specific resolver✓✓✓
    +short-style clean output—✓✓ (via pipeline)
    +trace from root—✓partial
    DNSSEC inspection—✓✓
    Reverse DNS✓✓✓
    AXFR zone transfer—✓—
    Pipeline-friendly output—✓ (with flags)✓ (native)
    Batch queries from file—✓✓ (via pipeline)

    Recommendation: dig if available; Resolve-DnsName on Windows; nslookup as the universal fallback.

    Common pitfalls

    1. Treating "Non-authoritative answer" as a problem. It just means the response came from a cache. That's normal. To get an authoritative answer, query the authoritative server directly.
    2. Trusting nslookup's default resolver in VPN setups. VPNs often inject their own DNS. Specify the resolver explicitly when troubleshooting: nslookup www.example.com 1.1.1.1.
    3. Forgetting -type=. Without it, nslookup queries A only. If you wanted MX, you got nothing useful.
    4. Confusing nslookup output formats across OSes. Windows and macOS / Linux nslookup print slightly different sections. If a tutorial's output doesn't match yours, the difference is usually cosmetic.
    5. Not checking for the " server can't find " message. That's nslookup's way of saying NXDOMAIN, SERVFAIL, or generic failure — you need to look at the surrounding context to tell which.

    References

    Frequently asked questions

    Should I use nslookup or dig?
    dig is more powerful and produces parseable output suitable for scripting; use it for anything beyond a quick lookup. nslookup is fine for ad-hoc 'is this name resolving?' checks, especially on Windows where dig isn't installed by default. Real diagnostic work — DNSSEC validation, batch queries, propagation checks — should use dig (or PowerShell's Resolve-DnsName on Windows).
    Is nslookup installed by default everywhere?
    Yes — Windows, macOS, and most Linux distributions ship it as part of the OS or basic networking utilities. On stripped-down container images you may need to install it (apk add bind-tools on Alpine, apt install dnsutils on Debian-derived). It's also available in cloud shells like AWS CloudShell and Google Cloud Shell.
    Why does nslookup show two answers — non-authoritative and authoritative?
    nslookup's output prefixes the answer with 'Server:' (which resolver you queried) and 'Address:' (the IP of that resolver). Then 'Non-authoritative answer:' means the response came from a recursive resolver's cache, not directly from the authoritative server. To force authoritative, query the authoritative nameserver directly: nslookup www.example.com ns1.dnscale.eu.
    Can nslookup do reverse DNS?
    Yes. Run nslookup 192.0.2.1 — nslookup automatically does the in-addr.arpa expansion and queries the PTR record. Same for IPv6: nslookup 2001:db8::1. dig's -x flag does the same with cleaner output.
    How do I query a specific record type with nslookup?
    Use -type= (or -q=). Example: nslookup -type=MX example.com. Record types: A, AAAA, CNAME, MX, TXT, NS, SOA, SRV, PTR, ANY. Compare to dig's syntax: dig MX example.com — slightly cleaner.
    What's PowerShell's Resolve-DnsName for?
    Resolve-DnsName is a Windows PowerShell cmdlet that's effectively dig for the Windows ecosystem. Returns rich, structured object output that integrates with PowerShell pipelines: Resolve-DnsName www.example.com -Type MX | Format-Table. Strictly better than nslookup for scripting on Windows — and built in, so no installation needed.

    Inspect the DNS records for your domain

    Check public DNS answers alongside the commands in this guide. Online checks do not measure your device’s local DNS path.

    Open DNS lookup