How to flush DNS on Mac, Windows, and Linux

How to flush DNS on Mac, Windows, and Linux You changed your hosts file. The line looks right. The browser still loads the old IP. That is usually DNS cache, not a bad hosts entry. Flush the OS cache first. Check with a terminal command. Only then blame the browser. Works on recent macOS (Sequoia, Sonoma, Ventura, and neighbors): sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder Enter your password. No output is normal. Still wrong after that? Quit the browser fully and reopen it In
How to flush DNS on Mac, Windows, and Linux
You changed your hosts file. The line looks right. The browser still loads the old IP.
That is usually DNS cache, not a bad hosts entry.
Flush the OS cache first. Check with a terminal command. Only then blame the browser.
macOS
Works on recent macOS (Sequoia, Sonoma, Ventura, and neighbors):
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
Enter fullscreen mode Exit fullscreen mode
Enter your password. No output is normal.
Still wrong after that?
- Quit the browser fully and reopen it
- In Chrome, open
chrome://net-internals/#dnsand click Clear host cache - Re-check the hosts line (typo, or a
#that comments it out)
Windows 10 and 11
Open Command Prompt or PowerShell as Administrator:
ipconfig /flushdns
Enter fullscreen mode Exit fullscreen mode
Or in PowerShell:
Clear-DnsClientCache
Enter fullscreen mode Exit fullscreen mode
Hosts file location if you need it:
C:\Windows\System32\drivers\etc\hosts
Enter fullscreen mode Exit fullscreen mode
Linux
It depends which resolver is caching.
systemd-resolved (common on Ubuntu and Fedora)
sudo resolvectl flush-caches
Enter fullscreen mode Exit fullscreen mode
On older setups:
sudo systemd-resolve --flush-caches
Enter fullscreen mode Exit fullscreen mode
nscd
sudo systemctl restart nscd
Enter fullscreen mode Exit fullscreen mode
dnsmasq
sudo systemctl restart dnsmasq
Enter fullscreen mode Exit fullscreen mode
Hosts file:
/etc/hosts
Enter fullscreen mode Exit fullscreen mode
Check the result outside the browser
Do this before you keep refreshing Chrome.
macOS
dscacheutil -q host -a name myapp.test
ping -c 1 myapp.test
Enter fullscreen mode Exit fullscreen mode
Linux
getent hosts myapp.test
ping -c 1 myapp.test
Enter fullscreen mode Exit fullscreen mode
Windows
ping myapp.test
nslookup myapp.test
Enter fullscreen mode Exit fullscreen mode
If the terminal shows the right IP and the browser does not, the OS hosts file is probably fine. Clear browser DNS, or check HTTPS / HSTS / Secure DNS (DoH).
If you flushed DNS and it still fails
Browser wrong, terminal correct
Browser cache, Secure DNS, or a certificate / redirect issue.
Terminal wrong too
Typo in hosts, wrong file, line commented with #, or you edited a copy that never got applied.
Works, then breaks after reboot
Something rewrites hosts, or a VPN / DNS tool takes over.
Only one browser fails
That browser has its own DNS settings.
Works on normal Wi-Fi, fails on VPN
VPN DNS is ignoring or overriding local hosts.
Also check AdGuard, NextDNS, Cloudflare WARP, Pi-hole, and Tailscale MagicDNS. They can make a correct hosts change look like it did nothing.
Hosts syntax worth double-checking
127.0.0.1 myapp.test
127.0.0.1 api.myapp.test
# 10.0.0.5 staging.myapp.test
Enter fullscreen mode Exit fullscreen mode
- IP first, then hostname(s)
- A
#disables the rest of the line - Keep the line clean (no random trailing junk)
- IPv6 localhost is
::1when you need it
Copy-paste
# macOS
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
# Windows (Admin)
ipconfig /flushdns
# Linux (systemd-resolved)
sudo resolvectl flush-caches
Enter fullscreen mode Exit fullscreen mode
Edit hosts, flush DNS, verify in the terminal. That order fixes most of these tickets.



