If you build web applications with Next.js, Create React App, Nuxt, or Express on Windows, you have almost certainly encountered this frustrating terminal error:

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

This happens because another process (usually an orphaned Node.js background process from a previous terminal session or crash) is still holding onto TCP port 3000.

Method 1: The 1-Click Fix with PortPeek (Fastest)

Instead of memorizing terminal flags, you can use PortPeek:

  1. Press Win + Alt + P (or click the tray icon).
  2. See port 3000 and its process (node.exe).
  3. Click Stop Process in the menu.

Port 3000 is immediately freed, and you can restart your dev server.

Method 2: Kill via PowerShell (One-Liner)

Open PowerShell and paste this command to find the process on port 3000 and terminate it:

Get-Process -Id (Get-NetTCPConnection -LocalPort 3000).OwningProcess | Stop-Process -Force

Method 3: Classic Command Prompt (netstat + taskkill)

If you are using classic CMD:

Step 1: Find the PID holding port 3000

netstat -ano | findstr :3000

Output example:

TCP    0.0.0.0:3000           0.0.0.0:0              LISTENING       14280

In this example, the PID is 14280 (the rightmost number).

Step 2: Force kill the PID

taskkill /F /PID 14280

Why Does This Happen?

When you terminate a terminal window in VS Code or Windows Terminal without cleanly pressing Ctrl + C, Node.js child processes (like Turbopack or Webpack worker pools) can get detached and keep listening on the TCP socket indefinitely.

Eliminate this problem forever

Download PortPeek for Windows (~500 KB). See and kill locked ports in 1 click.

Download PortPeek