EADDRINUSE Node.js Origin: Application & API Last updated 13 Oct 2026

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

Another process is already listening on that port.

Exact message you may see address already in uselisten EADDRINUSE
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 not fixed?

Many errors look alike. If the steps above didn’t solve it, one of these is probably what you’re facing:

Where this error sits

Origin: Application & API. Errors that are often confused with or caused by this one (click to open):

bind() failed (98: Address already in use) — nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) (Linux)bind() failed (98: Ad…Cannot allocate memory — fork: Cannot allocate memory / ENOMEM (Linux)Cannot allocate memoryECONNREFUSED — Error: connect ECONNREFUSED 127.0.0.1:5432 (Node.js)ECONNREFUSEDELIFECYCLE — npm ERR! code ELIFECYCLE / Command failed with exit code 1 (npm)ELIFECYCLEEPIPE — Error: write EPIPE (Node.js)EPIPEFailed to bind to address — System.IO.IOException: Failed to bind to address http://127.0.0.1:5000: address already in use (.NET)Failed to bind to add…fork: retry: Resource temporarily unavailable — fork: retry: Resource temporarily unavailable (process/thread limit) (Linux)fork: retry: Resource…iptables: No chain/target/match — driver failed programming external connectivity on endpoint: iptables: No chain/target/match by that name (Docker)iptables: No chain/ta…EADDRINUSE

Explore the map of this error Full error map →

🧠 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.