Error: listen EADDRINUSE: address already in use :::3000
Another process is already listening on that port.
Meaning
Only one process can bind a port. Usually an old instance of your server (or a zombie from a crashed dev session) is still running.
Common causes
- Previous server instance still running
- Another app using the same port
- Nodemon/watch restarting before the old process exited
- Docker container publishing the same port
⚡ Quick fix
- Find and stop the process:
lsof -i :3000thenkill <PID> - Use a different port:
PORT=3001 npm start - Stop containers:
docker ps→docker stop <id>
Detailed fix by platform
Linux
- Find the process:bash
lsof -i :3000 # macOS / Linux sudo ss -ltnp | grep :3000 kill <PID>
Windows
netstat -ano | findstr :3000thentaskkill /PID <pid> /F.
How to diagnose
- Port — Which port?
- Owner — Which process holds it?
🧠 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