EADDRINUSE 🟩 Node.js

Error: listen EADDRINUSE: address already in use :::3000

Another process is already listening on that port.

Seen on: Node.js Linux Windows

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

  1. Find and stop the process: lsof -i :3000 then kill <PID>
  2. Use a different port: PORT=3001 npm start
  3. Stop containers: docker ps → docker stop <id>

Detailed fix by platform

Linux

  1. Find the process:
    bash
    lsof -i :3000          # macOS / Linux
    sudo ss -ltnp | grep :3000
    kill <PID>

Windows

  1. netstat -ano | findstr :3000 then taskkill /PID <pid> /F.

How to diagnose

  1. Port — Which port?
  2. 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.