ERR_NAME_NOT_RESOLVED: what it means and how to fix it
Kofi Agyem, Founder and CEO, CloudzyroPublished · 5 min read
On this page
ERR_NAME_NOT_RESOLVED means your browser couldn't turn a web address into an IP address. What causes it, in pages and in DevTools, and how to fix it.
1. The short answer
ERR_NAME_NOT_RESOLVED means the browser couldn't turn the name in the address, like `www.example.com`, into an IP address. DNS said the name doesn't exist, or that it has no address, or the lookup failed. Without an address the browser can't connect at all, so you get an error before any page loads.
It's the same failure as DNS_PROBE_FINISHED_NXDOMAIN. ERR_NAME_NOT_RESOLVED is the raw error; Chrome swaps in the DNS_PROBE label on the page once it's tested your DNS. You'll mostly see the raw form in DevTools, on Android, and in apps built on Chromium.
2. What you'll see
- On the page in Chrome or Edge: This site can't be reached. The server IP address could not be found, with ERR_NAME_NOT_RESOLVED or a DNS_PROBE code.
- In the DevTools Console:
GET https://api.example.com/data net::ERR_NAME_NOT_RESOLVED. The page loaded, but one request on it failed. - In the DevTools Network panel: the request shows
(failed)with net::ERR_NAME_NOT_RESOLVED as the status. - In Firefox and Safari: they don't use this code. Firefox says it's having trouble finding the site; Safari says it can't find the server.
- In apps built on Electron or a WebView: often the raw error text,
net::ERR_NAME_NOT_RESOLVED.
3. What causes it
On a whole page:
- A typo in the address or a link with a mistake in it.
- The name doesn't exist in DNS: an expired domain, a domain on hold, or no record for that exact name (for example
wwwis missing). - The name exists but has no address. It has other records, like MX for email, but no A, AAAA or CNAME, so there's nothing to connect to.
- Your DNS lookup failed: a resolver that's down, a VPN that took over DNS, or a Private DNS or Secure DNS setting that can't reach its server.
- A filter blocked it. Ad blockers, parental controls and company DNS often answer not-found for blocked names.
In the DevTools console, while the page itself loads:
- A wrong API or asset URL in the code, often a missing environment variable, so the URL becomes something like
https://undefined/api. - A third-party service that was shut down or renamed, such as an old analytics or font host.
- An ad or tracker blocked by DNS. That's harmless and expected if you use a DNS-level blocker.
- A staging host that no longer exists but is still hardcoded.
4. Fixes for visitors, quickest first
- Check the spelling of the address and reload.
- Try another network, such as your phone on mobile data, to see if it's your connection.
- Turn off any VPN, proxy or DNS blocker briefly.
- Flush DNS caches, both your system's and Chrome's (commands below).
- Check Chrome's Secure DNS setting. Go to Settings, Privacy and security, Security, Use secure DNS. If it names a custom provider, try your current provider or switch it off to test.
- On Android, check Private DNS (Settings, Network and internet, Private DNS). If it's set to a hostname, try Automatic.
- Use a public DNS resolver like
1.1.1.1or8.8.8.8in your network settings, then restart the browser.
# Windows (Command Prompt or PowerShell)
ipconfig /flushdns
# macOS
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
# Linux with systemd-resolved (Ubuntu, Fedora and most others)
resolvectl flush-caches
# Chrome's own cache: open this address, then click Clear host cache
chrome://net-internals/#dns5. Fixes for site owners and developers
- Find the failing name. In DevTools, open the Network panel, filter by failed requests and read the full URL. It's often not the domain you expected.
- Look it up from outside your network with
digagainst a public resolver (below). If it fails there too, the name genuinely doesn't resolve. - For your own domain: check it's registered and not expired, that its nameservers are where you edit records, and that the exact name has an A, AAAA or CNAME record. See A record vs CNAME.
- For a URL built from settings: check the environment variable is set in production, not just on your laptop. A blank host turns a URL into something no resolver can answer.
- For a third-party host that's gone: remove the script or move to the service's current address.
If the name belongs to a site on Cloudzyro Sites & Apps, its www or subdomain needs a CNAME to domains.cloudzyro.app, and the bare domain an A record to 173.234.137.167. Every site also keeps its free cloudzyro.app address, so if that loads and your domain doesn't, the problem is the domain's DNS. The site's Domains tab and the domain troubleshooting guide say what's missing.
6. How to check
# Does the name resolve? Look at "status:" and the ANSWER section
dig www.example.com
dig www.example.com @1.1.1.1
# NOERROR with no ANSWER means the name exists but has no address
dig A www.example.com
dig AAAA www.example.com
# Windows (PowerShell)
nslookup www.example.com
Resolve-DnsName www.example.com -Server 1.1.1.1
# The same lookup your app's server makes (run it there, on Linux)
getent hosts api.example.comThree outcomes are worth telling apart. NXDOMAIN means the name doesn't exist. NOERROR with an empty answer (often called NODATA) means the name exists but has no address record of that type. SERVFAIL or a timeout means the lookup itself broke, often a DNSSEC problem at the domain or a resolver that's down. The first two are fixed in the domain's DNS records; the third may be the resolver or the domain's nameservers.