Error: listen EACCES: permission denied 0.0.0.0:80
Node isn’t allowed to bind that port — ports below 1024 need root on Linux/macOS, and some Windows ports are reserved.
Seen on:
Node.js
Meaning
Privileged ports (80, 443) require elevated rights. On Windows, Hyper-V/WSL reserve dynamic port ranges, producing EACCES even for high ports.
Common causes
- Binding port 80/443 as a normal user
- Windows reserved/excluded port range
- Another security policy blocking the port
⚡ Quick fix
- Use a high port (3000/8080) behind Nginx
- Grant the capability: sudo setcap 'cap_net_bind_service=+ep' $(which node)
- Windows: check reserved ranges and pick another port
Detailed fix by platform
Windows
netsh interface ipv4 show excludedportrange protocol=tcp
How to diagnose
- Port — Which port?
- User — Running as root?
- OS — Windows reserved range?
🧠 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.
Was this page helpful?
Report a correction or suggest an improvement
Last updated 2 Oct 2026