TypeError: fetch failed (cause: ConnectTimeoutError / ECONNREFUSED / UND_ERR)
Node’s built-in fetch (undici) couldn’t complete the request; the real reason is in error.cause.
TypeError: fetch failed Meaning
Node 18+ fetch wraps network errors as "fetch failed". Log err.cause: UND_ERR_CONNECT_TIMEOUT (unreachable/IPv6 issues), ECONNREFUSED, ENOTFOUND, or certificate errors.
Common causes
- Server unreachable / connect timeout
- localhost resolving to IPv6 ::1 while the server listens on IPv4
- DNS failure
- TLS certificate issues
- Proxy required but not configured (fetch ignores HTTP_PROXY)
⚡ Quick fix
- console.error(err.cause) to see the real error
- Use 127.0.0.1 instead of localhost
- Configure an undici ProxyAgent for corporate proxies
Detailed fix by platform
Node.js
try { await fetch(url); } catch (e) { console.error(e.cause); }
How to diagnose
- Cause — What is err.cause?
- Address — IPv4 vs IPv6?
🔧 Still not fixed?
Many errors look alike. If the steps above didn’t solve it, one of these is probably what you’re facing:
Similar errors
Most viewed in Node.js
Other ways to find it
Where this error sits
Origin: Application & API. Errors that are often confused with or caused by this one (click to open):
🧠 Still stuck? Analyze your error
Paste the full message, response headers or stack trace — we'll detect the platform and point to the most likely cause.
💬 What worked for others
No tips yet — did something else fix this for you?
Share what worked for you
Tips are checked by an editor before they appear. Links are removed.
Report a correction or suggest an improvement
Last updated 13 Oct 2026